É possível mesclar arquivos de vídeo usando `cat`?

17

Gostaria de saber se é possível mesclar arquivos de vídeo usando o catcomando? Quero dizer, o arquivo resultante será reproduzido perfeitamente?

Hamed Momeni
fonte
1
Você tentou?
Sr. Lister
3
Na verdade eu fiz. Mas, de alguma forma, o resultado não continha o segundo arquivo, embora o tamanho do arquivo fosse a soma de ambos.
Hamed Momeni

Respostas:

20

Sim, é possível. Mas nem todos os formatos são compatíveis.

FAQ do ffmpeg :

Alguns contêineres multimídia (MPEG-1, MPEG-2 PS, DV) permitem juntar arquivos de vídeo apenas concatenando-os.

Ao converter para formatos RAW, você também tem grandes chances de concatenar os arquivos.

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi

Mas usar catdessa maneira criou arquivos intermediários, que não são necessários. Essa é uma abordagem melhor para evitar a criação desses arquivos intermediários:

ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
Marco
fonte
1
Você ainda não está criando arquivos intermediários na segunda versão?
John Gowers
6

Existem dois tipos de arquivos de mídia

  • streamable

  • não streamable

A principal diferença é como os dois formatos de arquivo incorporam meta-informações. com formatos não streamable , a meta-informaçãoc ("cabeçalho") é armazenada em uma posição específica no arquivo, geralmente no início, às vezes no final. Você não pode simplesmente concatenar esses arquivos, pois as meta-informações de um dos arquivos estarão em um local não padrão e, portanto, serão ignoradas.

OTOH, streamable formatos precisa ser capaz de lidar com os ouvintes que começarão a reproduzir o arquivo "em algum lugar no meio". Portanto, esses formatos continuam enviando as meta-informações e até permitem atualizá-las no arquivo / fluxo. Esses formatos podem ser simplesmente concatenados.

umläute
fonte
Por exemplo, ogg: stackoverflow.com/questions/27980960/…
BlackShift 8/16
1

Como BЈовић disse, em geral, cada arquivo tem seu próprio cabeçalho. Tente com este exemplo do Ubuntu How To's :

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 
rpet
fonte
0

Não, não é possível, porque todo arquivo de vídeo tem um cabeçalho. Para mesclar vídeos, você precisa usar uma ferramenta (como por exemplo, ffmpeg ou mencoder ).

BЈовић
fonte
9
Não é bem correto. Existem formatos de vídeo sem cabeçalho, por exemplo, rawvideo ou yuv4mpegpipe que produzem dados brutos. É por isso que você precisa fornecer o tamanho do quadro ao ler esses formatos, pois o tamanho é desconhecido devido ao cabeçalho ausente.
Marco
2
Como é que eu fiz isso com sucesso com arquivos DV então?
Pithikos 17/03
1
@Pithikos não faço ideia. talvez você pratique mágica :) #
181813