Программное преобразование аудио G729 в формат WAV PCM
Вопрос
У меня есть аудиофайлы в кодировке G729.Мне нужно программно преобразовать их в WAV PCM (16 бит 8 кГц моно) в потоке инструмента, который делает и другие вещи.У меня есть исполняемый файл, который сделает это за меня.Но создание этого внешнего процесса каждый раз, когда я конвертирую, требует слишком больших ресурсов.Особенно, если мне нужно, чтобы многие из них выполнялись параллельно.Ищу библиотеку .NET или код, который позволит мне вызвать это внутри моего процесса.
Решение
Перейдите по этой ссылке: Реализация VoiceAge Open G.729 . Они также предоставляют декодер g729 и кодировщик, написанный на C.
Другие советы
Согласно Википедии, G.729 включает несколько патентов и лицензируется Sipra , так что вы, вероятно, выиграли ' Не повезло найти подходящую библиотеку. Если вы не декодируете большое количество очень маленьких файлов, затраты на создание нового процесса не должны быть такими большими по сравнению со стоимостью выполнения декодирования, поэтому я бы сказал, что используйте исполняемый файл, который у вас есть.
Что касается ресурсов, да, процессы порождения требуют гораздо больше ресурсов по сравнению с использованием потоков. Это не должно иметь большого значения, если вы запускаете столько процессов, сколько у вас есть ядер на вашей машине. Создание большего количества процессов просто тратит впустую ресурсы и не дает вам никакого дополнительного параллелизма.
Википедия сообщает: «G.729 включает патенты от нескольких компаний и лицензируется Sipro ( http: // www .sipro.com / ). В ряде стран использование G.729 может потребовать лицензионного сбора и / или лицензионного сбора. & Quot;
Но я полагаю, вы уже учли это в своем заявлении.
Если вы абсолютно должны быть в процессе, одним из решений (не говоря уже о том, что это лучшее) может быть использование LibAVCodec, который находится под LGPL.
Бесплатная реализация ссылок по адресу: http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/ р>
Обратите внимание на проблемы с патентами, поднятые другими, тот факт, что эталонная реализация работает только на процессорах Intel, и что вам нужно платить Intel за распространение кода с использованием их библиотеки IPP как части коммерческого продукта.
Если в вашей системе есть кодек ACM для G729, вы можете использовать NAudio для его преобразования. в PCM. Попробуйте использовать приложение NAudioDemo, входящее в состав NAudio, которое покажет вам, какие кодеки ACM доступны в вашей системе, и декодируйте файл, используя их.
Что подсказывает мне в первую очередь, когда речь заходит о преобразователе g729, так это стандарты ITU G729-A.Один довольно громоздкий способ - сначала преобразовать g729 в pcm, чтобы добавить заголовок wav перед вашими файлами wav.Это создает файл .wav из .g729.Поскольку официальная библиотека g729a МСЭ (и официально не поддерживает многопоточность ...) активно задействована в этой идее, я думаю, вам нужно учитывать параллелизм и то, как правильно программировать с кучей статических переменных внутри библиотеки g729a.Раньше я участвовал в небольшом проекте, таком как OP descibes, и я в основном разбивал огромные файлы g729 на блоки g729 и декодировал их по отдельности способом разумного программирования с параллелизмом...
Если вы хотите увидеть только кодек, необходимый для файла, перейдите на GSopt и загрузите его последняя версия (вы можете нажать здесь , чтобы непосредственно открыть страницу загрузки). р>
После загрузки извлеките файл, откройте папку и запустите EXE
, теперь выберите файл с помощью кнопки обзора, и после загрузки файла будет показана вся его информация. (Если файл не отображается в диалоговом окне просмотра
, просто выберите Все файлы (*. *)
из просмотра файлового диалога
)