Eu tenho um par de arquivos ogg vorbis, todos codificados com exatamente as mesmas propriedades que eu quero concatenar em um único arquivo.
Eu sei que o formato ogg vorbis suporta concatenação simples de vários arquivos como:
$ cat file1.ogg file2.ogg > output.ogg
Mas, infelizmente, nem todos os jogadores conseguem entender os arquivos criados dessa forma, por exemplo, meu player de áudio móvel, e eu evitava comprar um novo. Outros programas que não entendem isso são gstreamer. Esse método também não funciona se todos os arquivos ogg de entrada tiverem o mesmo ID de fluxo.
Além disso, como gostaria de descartar os arquivos originais e manter apenas a versão concatenada, gostaria que a concatenação fosse feita sem perdas, assim como a cat
solution.
Eu também quero evitar concatenar os arquivos em um formato sem perdas, como o flac, pois isso aumentaria desnecessariamente o tamanho do arquivo. Se isso estivesse bem, então eu poderia manter os arquivos ogg originais e usaria menos espaço.
Parece que o ffmpeg às vezes pode fazer isso usando o decodificador de concatenar :
$ cat inputs.txt
file 'in1.ogg'
file 'in2.ogg'
$ ffmpeg -f concat -i inputs.txt -c copy out.ogg
Se eu olhar o hexdump bruto dos meus arquivos de entrada, então eu posso encontrar os pacotes vorbis exatamente representados no arquivo de saída. Então eu acho que realmente nenhuma recodificação acontece.
Mas isso não parece funcionar em todos os arquivos de entrada. Às vezes (não sei o que desencadeia isso), o ffmpeg daria o aviso:
Non-monotonous DTS in output stream 0:0; previous: 5011328, current: 5011200; changing to 5011329. This may result in incorrect timestamps in the output file.
E então eu ouvia um "intervalo" muito fraco entre dois arquivos. Assim, isso certamente não é uma solução global.
Como não consegui encontrar um, tentei escrever minha própria ferramenta em essa pergunta do stackoverflow .
Existe uma maneira de concatenar vários arquivos ogg vorbis, mas sem recodificá-los e com apenas um único fluxo por saída? Qual ferramenta é capaz de fazer esse trabalho?