Para concatenar e transcodificar arquivos de áudio, este é o fluxo de trabalho que você deseja seguir:
- Decodifique os arquivos de áudio de entrada para dados WAV / PCM,
- Concatenar WAV,
- Codifique o WAV para emitir o arquivo de codec de áudio.
O processamento nessas etapas realiza a concatenação nos dados WAV, que é o mais fácil de lidar e o menos com perdas. E como você deseja transcodificar de qualquer maneira, precisará decodificar para WAV em algum lugar do processo; pode muito bem tirar proveito disso.
Aqui estão os passos que eu recomendo. Usaremos ffmpeg
para decodificação, sox
concatenação e oggenc
codificação. Você pode substituir outras ferramentas por qualquer etapa - mencoder
e outras funcionam bem como decodificador, e qualquer ferramenta que codifique Ogg pode ser usada como codificador - embora eu ache que você será pressionado a encontrar uma ferramenta melhor do que sox
a concatenação.
find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(isso é executado ffmpeg -i infile.wma outfile.infile.wma
em cada arquivo WMA no diretório atual)
sox outfile* all.wav
(note que outfile
é o mesmo prefixo que fornecemos aos arquivos de saída na etapa 1)
oggenc all.wav all.ogg
você provavelmente deseja algumas configurações de qualidade aqui, mas isso fornecerá padrões de qualidade decentes. Não obtive resultados de que gostei ffmpeg
, mas você pode preferir, por isso incluí um exemplo com o ffmpeg abaixo.
Observe que o sox
comando não funcionará corretamente, a menos que todos os arquivos WAV tenham o mesmo formato - se alguns tiverem 22kHz e 44.1kHz, por exemplo, você precisará identificá-los por sox
meio de opções da linha de comando e especificar qual formato deseja output in. Não conheço nenhuma ferramenta de linha de comando capaz sox
de executar a etapa de concatenação. Você poderia enviar para um formato PCM bruto na etapa 1 e usá-la cat
na etapa 2, mas isso só funcionaria se eles estivessem no mesmo formato e você precisaria ser extremamente específico para o seu decodificador e codificador. formato que eles deveriam esperar.
Codificação com ffmpeg: Muitas postagens na rede reclamam que o codificador Vorbis interno do ffmpeg não é muito bom. Se sua versão for criada com suporte a libvorbis, use-o -acodec libvorbis
. Exemplo de linha de comando:
ffmpeg -i all.wav -acodec libvorbis -ac 2 -ab 128k all.ogg