2008-10-17 46 views
5

Tengo archivos de audio codificados G729. Necesito convertirlos programáticamente a WAV PCM (16bit 8kHz mono) en el flujo de una herramienta que también está haciendo otra cosa. Tengo un ejecutable que hará eso por mí. Pero engendrar 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 .NET o un código que me permita llamar esto dentro de mi proceso.Convierta programáticamente audio G729 a WAV PCM

Respuesta

3

Siga este enlace: The VoiceAge Open G.729 Implementation. También proporcionan decodificador G729 y el codificador escrita en C.

+0

¿Alguien sabe dónde puede encontrar otra copia de esto? Estuve mirando el sitio durante un par de meses y su enlace al código no funciona. http://www.voiceage.com/media/G729.zip – thaspius

+1

Ya no admiten su 'implementación abierta' y me han informado que la información todavía está allí en su sitio web, pero la eliminarán pronto (no lo hago). saber qué tan pronto). – nightwatch

0

Según Wikipedia, G.729 incluye varias patentes y está licenciado por Sipra, por lo que probablemente no tenga mucha suerte en encontrar una biblioteca adecuada. A menos que esté decodificando 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 hacer la decodificación, así que yo diría que use el ejecutable que tiene.

En lo que respecta a los recursos, sí, los procesos de desove requieren muchos más recursos en comparación con el uso de subprocesos. En realidad, esto no debería importar, siempre y cuando solo generes tantos procesos como núcleos en tu máquina. Generar más procesos solo desperdicia recursos y no te proporciona ningún paralelismo adicional.

0

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

Pero supongo que ya lo ha considerado en su aplicación.

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

0

una implementación de referencia libre de usar en: http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/

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

0

Si tiene un códec ACM en su sistema para G729, puede usar NAudio para convertirlo a PCM. Pruébalo usando la aplicación NAudioDemo incluida con NAudio que te mostrará qué códecs ACM están disponibles en tu sistema y decodificará un archivo usándolos.

0

Lo que me impulsa primero en lo que respecta al convertidor g729 es ITU G729-A standards.One manera engorrosa es convertir g729 a pcm primero ellos suman un encabezado wav en frente de sus archivos wav. Eso construye un .wav desde .g729. Puesto que el oficial ITU g729a (y oficialmente no admite multi threads ...) lib está muy involucrado en esta idea, supongo que debe considerar la concurrencia y cómo programar correctamente con un conjunto de variables estáticas dentro de g729a lib. Solía ​​involucrarme en un pequeño proyecto como OP describe y básicamente dividí archivos g729 grandes en trozos g729 y los decodifiqué individualmente de una manera de programación de simultaneidad razonable ...

0

Si solo quiere ver el códec necesario para el archivo luego vaya a GSopt y descargue la última versión de i t (puede click here para abrir directamente la página de descarga).

Después de la descarga, extraiga la carpeta Abrir archivo y ejecute EXE, ahora seleccione el archivo desde el botón Examinar y después de cargar el archivo, se mostrará toda su información.(Si el archivo no se muestra en el browse dialogue box simplemente seleccione All Files(*.*) desde browse file dialogue)

Cuestiones relacionadas