C# ресэмплирует аудио от 8 кГц до 44,1/48 кГц

Я столкнулся с ошибкой в ​​DirectShow .NET, где я создаю вторичный буфер с частотой дискретизации 8 кГц, и при воспроизведении звук воспроизводится с прибл. 8.1 кГц вместо.

Погуглив это, я обнаружил, что может быть вынужден сам сэмплировать звук 8 кГц до 48 кГц или 44,1 кГц в зависимости от звуковой карты в ПК.

Есть ли какая-либо библиотека C# или общий алгоритм, который я мог бы использовать для этого?

Спасибо!!

Roey

3 ответа

Для Alvas.Audio см. Код ниже

byte[] data48khz = AudioCompressionManager.Convert(формат 8 кГц, формат 48 кГц, данные 8 кГц, false);

Вы всегда можете портировать Secret Rabbit Code на C#?

Или как насчет использования Audio Compression Manager напрямую через вызов платформы?

Ваши проблемы с "слишком быстрым воспроизведением звуков" могут быть связаны с конкретной звуковой картой. Не уверен, в какой ОС вы работаете, но я считаю, что Windows изначально увеличивает частоту дискретизации всех аудиопотоков до 44 или 48 кГц, а затем направляет сэмплы на звуковую карту (чтобы она могла правильно смешивать ее со всеми остальными потоками). Так что я не уверен, если вы улучшите свой собственный код, если вы получите какие-либо улучшения.

Вы пытались использовать другой компьютер (под управлением другой ОС) или подключить несколько USB-наушников, чтобы убедиться, что эта проблема не устранена?

Другие вопросы по тегам