concatenação sem perdas de arquivos ogg vorbis

11

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?

    
por josch 15.01.2015 / 01:18

2 respostas

1

ffmpeg -i "concat:ogg1.ogg|ogg2.ogg|ogg3.ogg" -c copy out.ogg cria um arquivo ogg concatenado no meu sistema, apenas um pouco menor que os arquivos separados combinados (provavelmente por causa dos metadados compartilhados). Parece o mesmo para mim, então a concatenação deve ser sem perdas. No entanto, isso não adiciona um pequeno espaço entre os arquivos.

ffmpeg -f concat -safe 0 -i ogg1.ogg -i ogg2.ogg -c copy out.ogg deve funcionar, mas isso dá esse erro em meu ffmpeg do Homebrew (macOS) a partir de 3.3.2.

[concat @ 0x7f91e8800400] Line 1: unknown keyword 'OggS'
ogg1.ogg: Invalid data found when processing input

Fonte: link

    
por 06.07.2017 / 14:48
0

Você pode querer dar uma olhada em FFmpeg . Tem um monte de ferramentas que eu não entendo muito bem, mas eu me lembro da documentação que há uma ferramenta para fazer exatamente isto. Caso contrário, acho que você pode usar o VLC Media Player 's Linha de Comando .

    
por 06.12.2016 / 19:44