MP4 re-ecoding para garantir a concatenação sem re-codificar

1

Eu tenho 2 mp4 vídeos que não conseguem concatenar ao usar:

MP4Box -add 1.mp4 -cat 2.mp4 out.mp4

Existe uma maneira de recodificar o 2.mp4 para que a chamada concat crie uma saída válida? Possivelmente com ffmpeg? Eu só posso recodificar um arquivo e quero que a concatenação não faça nenhuma codificação.

O erro que recebo atualmente com esses dois arquivos é:

[iso file] Box "minf" has 56 extra bytes Error appending 2.mp4: IsoMedia File is truncated

    
por Scrooch 04.05.2012 / 21:03

1 resposta

0

Você pode tentar fazer isso com o ffmpeg:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

Isso não recodifica nada, coloca-os em um novo contêiner de fluxo de transporte, o que facilita a concatenação e concatena-os novamente em um MP4. Se output.mp4 já existir, o comando falhará. A versão acima usa pipes nomeados, você está em um sistema que não suporta aqueles que você teria que usar arquivos intermediários:

ffmpeg -i input0.mp4 -c copy -bsf h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -absf aac_adtstoasc output.mp4
    
por 21.12.2012 / 17:37