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-наушников, чтобы убедиться, что эта проблема не устранена?