Программно конвертировать аудио G729 в ​​WAV PCM - PullRequest
5 голосов
/ 17 октября 2008

У меня есть аудиофайлы в кодировке G729. Мне нужно программно преобразовать их в WAV PCM (16-битная 8 кГц моно) в потоке инструмента, который тоже занимается другим делом. У меня есть исполняемый файл, который сделает это для меня. Но порождение этого внешнего процесса каждый раз, когда я конвертирую, слишком тяжело для ресурсов. Особенно, если мне нужно, чтобы многие из них выполнялись параллельно. Ищите библиотеку .NET или код, который позволит мне вызывать это внутри моего процесса.

Ответы [ 7 ]

3 голосов
/ 17 октября 2008

Перейдите по этой ссылке: Реализация VoiceAge Open G.729 . Они также предоставляют декодер и кодер g729, написанные на C.

0 голосов
/ 24 августа 2012

Если вы хотите видеть только кодек, необходимый для файла, перейдите на GSopt и загрузите его последнюю версию (вы можете щелкнуть здесь , чтобы открыть страницу загрузки) .

После загрузки извлеките файл, откройте папку и запустите EXE. Теперь выберите файл с помощью кнопки обзора, и после загрузки файла будет показана вся его информация. (Если файл не отображается в browse dialogue box, просто выберите All Files(*.*) из browse file dialogue)

0 голосов
/ 26 марта 2012

Первое, что мне подсказывает, когда дело доходит до преобразователя g729, это стандарты ITU G729-A. Один довольно громоздкий способ - это преобразовать g729 в ​​pcm, сначала они добавляют заголовок wav перед вашими файлами wav. .g729. Так как официальный ITU g729a (и официально не поддерживающий многопоточность ...) lib активно участвует в этой идее, я думаю, вам нужно рассмотреть параллелизм и как правильно программировать с помощью набора статических переменных в g729a lib.I Раньше я участвовал в небольшом проекте, таком как OP descibes, и я в основном разбивал огромные файлы g729 на куски g729 и декодировал их по отдельности способом разумного параллелизма ...

0 голосов
/ 20 октября 2008

Если в вашей системе есть кодек ACM для G729, вы можете использовать NAudio для преобразования его в PCM. Попробуйте использовать приложение NAudioDemo, входящее в комплект NAudio, которое покажет вам, какие кодеки ACM доступны в вашей системе, и декодируйте файл, используя их.

0 голосов
/ 17 октября 2008

Бесплатная эталонная реализация по адресу: http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/

Обратите внимание на проблемы с патентами, поднятые другими, тот факт, что эталонная реализация работает только на процессорах Intel, и что вам нужно платить Intel за распространение кода с использованием их библиотеки IPP как части коммерческого продукта.

0 голосов
/ 17 октября 2008

Википедия говорит: «G.729 включает патенты от нескольких компаний и лицензируется Sipro (http://www.sipro.com/).). В ряде стран использование G.729 может потребовать лицензионного сбора и / или лицензионного сбора. «

Но я думаю, вы уже учли это в своем заявлении.

Если вы абсолютно должны быть в процессе, одним из решений (не говоря уже о том, что он лучший) может быть использование LibAVCodec, который находится под LGPL.

0 голосов
/ 17 октября 2008

Согласно Википедии, G.729 включает в себя несколько патентов и лицензируется Sipra , так что вам, вероятно, не повезет, если вы найдете подходящую библиотеку. Если вы не декодируете большое количество очень маленьких файлов, затраты на создание нового процесса не должны быть такими большими по сравнению со стоимостью выполнения декодирования, поэтому я бы сказал, что используйте исполняемый файл, который у вас есть.

Что касается ресурсов, да, процессы порождения требуют гораздо больше ресурсов по сравнению с использованием потоков. Это не должно иметь большого значения, если вы запускаете столько процессов, сколько у вас есть ядер на вашей машине. Создание большего количества процессов просто тратит впустую ресурсы и не дает вам никакого дополнительного параллелизма.

...