Pregunta

Tengo archivos de audio codificados G729. Necesito convertirlos por programación a WAV PCM (16bit 8kHz mono) en el flujo de una herramienta que también está haciendo otra cosa. Tengo un ejecutable que lo hará por mí. Pero generar ese proceso externo cada vez que convierto es demasiado pesado en recursos. Especialmente si necesito que muchos de ellos se hagan en paralelo. Buscando una biblioteca o código .NET que me permita llamar a esto dentro de mi proceso.

¿Fue útil?

Solución

Siga este enlace: La implementación de VoiceAge Open G.729 . También proporcionan el decodificador y el codificador g729 escritos en C.

Otros consejos

Según Wikipedia, G.729 incluye varias patentes y tiene licencia de Sipra , por lo que probablemente ganará ' Tienes mucha suerte encontrando un lobrary apropiado. A menos que esté descodificando una gran cantidad de archivos muy pequeños, el costo de generar un nuevo proceso no debería ser tan grande en comparación con el costo de la descodificación, así que diría que use el ejecutable que tiene.

En lo que respecta a los recursos, sí, los procesos de generación requieren muchos más recursos en comparación con el uso de subprocesos. Sin embargo, esto no debería importar, siempre y cuando solo genere tantos procesos como tenga núcleos en su máquina. Al generar más procesos solo se malgastan recursos y no se obtiene ningún paralelismo adicional.

Wikipedia dice: "G.729 incluye patentes de varias compañías y tiene licencia de Sipro ( http: // www .sipro.com / ). En varios países, el uso de G.729 puede requerir una tarifa de licencia y / o tarifa de regalías. & Quot;

Pero supongo que ya lo has considerado en tu aplicación.

Si es absolutamente necesario que esté en proceso, una solución (sin decir que es la mejor) podría ser utilizar LibAVCodec, que está bajo la licencia LGPL.

Una implementación de referencia de uso gratuito en: http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/

Tenga en cuenta los problemas de patentes planteados por otros, el hecho de que la implementación de referencia solo se ejecuta en procesadores Intel y que debe pagar una tarifa a Intel para distribuir el código utilizando su biblioteca de IPP como parte de un producto comercial.

Si tiene un códec ACM en su sistema para G729, puede usar NAudio para convertirlo a PCM. Pruebe la aplicación NAudioDemo incluida con NAudio, que le mostrará los códecs ACM disponibles en su sistema, y ??decodifique un archivo usándolos.

Lo que me pide primero cuando se trata del convertidor g729 son los estándares ITU G729-A. Una forma bastante complicada es convertir g729 a pcm primero, sumar un encabezado wav frente a tus archivos wav. Eso construye un .wav a partir de .g729.Desde que la g729a oficial de la UIT (y oficialmente no es compatible con múltiples subprocesos ...) lib está muy involucrada en esta idea, supongo que debe considerar la concurrencia y cómo programar adecuadamente con un montón de variables estáticas dentro de la g729a lib.I solía involucrarme en un pequeño proyecto como OP decibes y básicamente divido enormes archivos g729 en trozos g729 y los decodifico individualmente de una manera razonable de programación de concurrencia ...

Si solo desea ver el códec necesario para el archivo, vaya a GSopt y descargue el última versión (puede haga clic aquí para abrir directamente la página de descarga).

Después de la descarga, extraiga la carpeta abierta del archivo y ejecute EXE . Ahora, seleccione el archivo desde el botón de búsqueda y después de que se cargue el archivo, se mostrará toda su información. (Si el archivo no se muestra en el cuadro de diálogo de navegación , seleccione Todos los archivos (*. *) en navegar archivo de diálogo )

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top