C ++ Processamento de som [fechado]
-
06-07-2019 - |
Pergunta
Eu estou procurando uma biblioteca que pode ser usada para manipular arquivos de áudio. Essencialmente, o que eu gostaria de fazer é:
-
Coloque um arquivo MP3 / WAV
-
Obter um segundo clipe do arquivo 15
-
Overlay outro arquivo MP3 / WAV ontop de it
-
Render como um novo arquivo MP3 / WAV
Solução
Você pode usar qualquer API codec MP3 comum para decodificar o fluxo, trabalhar com ele, e salvá-lo novamente. Por exemplo, você poderia usar libLAME para esta parte.
Quanto à mistura, você poderia fazê-lo sozinho (por exemplo, ingenuamente, adicione duas amostras e dividir por dois - o que pode não parecer bom demais)., Ou encontrar uma biblioteca adequada para ele
Você pode também estar interessado em uma pergunta de estouro de pilha relacionados em melhor áudio biblioteca c linux
Outras dicas
Ele não suporta MP3 por razões de patentes, mas libsndfile é um muito bom open-source (LGPL) biblioteca para carregamento e de áudio salvar em uma variedade de outros formatos de áudio, incluindo WAV.
Quanto à parte de sobreposição, que é fácil quando você tem as amostras carregados na memória ... você acabou de resumir cada amostra em arquivo Um com sua amostra correspondente no arquivo B (e, possivelmente, dimensionar o valor da amostra, resultando um pouco para baixo multiplicando por uma constante, se você está preocupado com recorte).
A biblioteca libsox de Sox (e não http://libsox.sourceforge.net/ que é algo completamente diferente) parece ter uma API simples que pode ser usado. A documentação dá o seguinte exemplo para estéreo para mono mistura:
amostras representando como inteiros pode causar problemas ao processar o áudio. Por exemplo, se um efeito de mixar canais esquerdo e direito em um canal monofónico eram para usar o linha
*obuf++ = (*ibuf++ + *ibuf++)/2;
distorção pode ocorrer uma vez que o Além intermediário pode transbordar 32 BITS. A linha
*obuf++ = *ibuf++/2 + *ibuf++/2;
iria contornar o problema de estouro (À custa dos menos pouco significativo).
Você pode tentar dar a este um olhar sobre http://terminatorx.org/ Eu estava olhando para ele para fazer algo similar.
Um bom C ++ audio biblioteca / synth é STK . Ele faz um monte de coisas e está sob licença tipo BSD / MIT ou seja, você pode usá-lo para desenvolver produtos comerciais. Wav é suportado, mas não MP3. Para MP3 você poderia usar irrklang , por exemplo, que é gratuito para uso não comercial (também MAD por underbit, é usado por muitas pessoas).