Программное преобразование аудио G729 в формат WAV PCM

StackOverflow https://stackoverflow.com/questions/212989

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть аудиофайлы в кодировке 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 , теперь выберите файл с помощью кнопки обзора, и после загрузки файла будет показана вся его информация. (Если файл не отображается в диалоговом окне просмотра , просто выберите Все файлы (*. *) из просмотра файлового диалога )

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top