C # ресэмплирует аудио от 8 кГц до 44,1 / 48 кГц - PullRequest
2 голосов
/ 07 июля 2010

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

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

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

Спасибо !!

Roey

Ответы [ 3 ]

2 голосов
/ 11 января 2011

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

byte [] data48khz = AudioCompressionManager.Convert (format8khz, format48khz, data8khz, false);

0 голосов
/ 26 июля 2010

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

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

0 голосов
/ 07 июля 2010

Вы всегда можете портировать Секретный код кролика на C #?

Или как насчет использования Менеджера сжатия звука напрямую через вызов платформы ?

...