Возможно ли перекодировать аудио в C # с помощью DirectSound? - PullRequest
2 голосов
/ 03 февраля 2010

Я хочу транскодировать много аудио из исходного формата в PCM без повторной дискретизации или изменения размера выборки. Я полагаю, что проигрыватель Windows Media может воспроизводить файл, и он не использует устаревшие кодеки ACM, он должен использовать DirectSound для этого (это в Windows XP и Windows Server 2k3). Так возможно ли получить доступ к DirectSound из C # и сделать это? Я пробовал искать в Интернете, но все примеры были о воспроизведении, которое мне не интересно.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Преобразование в WAV можно выполнить из командной строки Windows с помощью SoX (Sound eXchange, http://sox.sourceforge.net/).. Вы можете написать пакетный файл или приложение C #, которое вызывает SoX с надлежащими атрибутами. Я не уверен, какФункция WinAMP работает специально, но в нее также встроена опция вывода файловой записи. Вы можете транслировать весь список воспроизведения в волновые файлы.

1 голос
/ 04 февраля 2010

DirectSound - это API для воспроизведения аудио, вы имеете в виду DirectShow .Проигрыватель Windows Media использует DirectShow для воспроизведения аудиофайлов.Теоретически, все, что вам нужно сделать, это построить тот же график воспроизведения, который использует медиапроигрыватель, но заменить драйвер аудио на конце на .WAV-фильтр записи.

Это немного проще сделать в коде C ++,поскольку объект графа DirectShow действительно предназначен для вызова из C ++, но с хорошим набором определений взаимодействий, вы можете сделать это в C #.

Для серьезного взлома с DirectShow есть http://directshownet.sourceforge.net/.NET, но это, вероятно, излишне для вашей проблемы.

Я бы предложил получить копию GraphEdit , если у вас ее еще нет.Вы можете использовать его для «прототипирования» графиков прямого показа в интерактивном режиме.поместите файл в графитит.затем удалите фильтр в конце и замените его фильтром записи файлов.

Одна из проблем, с которой вы столкнетесь, в том, что в наборе по умолчанию o фильтров DirectShow нет фильтра записи файлов .WAV, вам нужно будет найти или написать его.

Если вы просто хотите преобразовать файлы и можете меньше заботиться об обучении написанию кода с помощью DirectShow, я бы посоветовал вам просто получить копию Sound Forge (возможно, дажедемо-версия).Он имеет язык сценариев (C #, vb), который можно использовать для простой пакетной обработки большинства форматов аудиофайлов.

0 голосов
/ 04 февраля 2010

Посмотрите эту статью на CodeProject о преобразовании звука здесь и здесь .

...