Pregunta

Estoy buscando una biblioteca que pueda usarse para manipular archivos de audio. Esencialmente, lo que me gustaría hacer es:

  1. Cargar un archivo MP3 / WAV

  2. Obtenga un clip de 15 segundos del archivo

  3. Superponga otro archivo MP3 / WAV encima

  4. Renderizar como un nuevo archivo MP3 / WAV

¿Fue útil?

Solución

Puede usar cualquier API de códec MP3 común para decodificar la transmisión, trabajar con ella y guardarla nuevamente. Por ejemplo, podría usar libLAME para esta parte.

En cuanto a la mezcla, puede hacerlo usted mismo (por ejemplo, ingenuamente, agregar dos muestras y dividir por dos, lo que puede no sonar demasiado bien), o encontrar una biblioteca adecuada para ello.

También es posible que le interese una pregunta relacionada sobre el desbordamiento de pila en la mejor biblioteca de audio c de Linux

Otros consejos

No es compatible con MP3 por razones de patentes, pero libsndfile es muy agradable biblioteca de código abierto (LGPL) para cargar y guardar audio en una variedad de otros formatos de audio, incluido WAV.

En cuanto a la parte de superposición, eso es fácil una vez que tiene las muestras cargadas en la memoria ... simplemente suma cada muestra en el archivo A con su muestra correspondiente en el archivo B (y posiblemente reduce el valor de la muestra resultante un poco hacia abajo multiplicando por una constante, si te preocupa el recorte).

La biblioteca libsox de sox (y no http://libsox.sourceforge.net/ que es algo completamente diferente) parece tener una API simple que se puede utilizar. La documentación da el siguiente ejemplo para la mezcla estéreo a mono:

  

Representar muestras como enteros pueden   causar problemas al procesar el   audio. Por ejemplo, si un efecto a   mezclar canales izquierdo y derecho en   un canal monofónico debía usar el   línea

    *obuf++ = (*ibuf++ + *ibuf++)/2;
  

puede producirse distorsión ya que   la adición intermedia puede desbordarse 32   bits La línea

    *obuf++ = *ibuf++/2 + *ibuf++/2;
  

solucionaría el problema de desbordamiento   (a expensas del menor   bit significativo).

Puedes intentar echarle un vistazo http://terminatorx.org/ Lo estaba mirando para hacer algo similar.

Una muy buena biblioteca de audio / sintetizador C ++ es STK . Hace un montón de cosas y está bajo licencia de tipo BSD / MIT, es decir, puede usarlo para desarrollar productos comerciales. Wav es compatible pero no MP3. Para MP3, puede usar irrklang , por ejemplo, que es gratuito para uso no comercial (también MAD por underbit, es usado por mucha gente).

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