Como dividir e combinar vídeos com precisão com o ffmpeg respeitando ponto de entrada / ponto

1

Estou aprendendo a dividir e combinar vídeos com ffmpeg . Atualmente estou praticando em um MP4 de 799 KB, one_through_ten-timestamped.mp4 , onde cada quadro tem um "número de quadro" gravado (até o quadro 40, o número gravado avança somente em todos os outros quadros).

O comando que eu uso é:

ffmpeg -f concat -i one_through_ten_edit_list.txt -c copy one_through_ten_edited.mp4

Onde one_through_ten_edit_list.txt é:

file one_through_ten-timestamped.mp4
inpoint 00:00:01.500
outpoint 00:00:05.000
file one_through_ten-timestamped.mp4
inpoint 00:00:09.500
outpoint 00:00:13.000

Quando executo este comando em ffmpeg , o vídeo de saída tem vários problemas:

  1. A saída começa no início do vídeo de origem, em vez de 1,5 s de entrada.
  2. O áudio depois que o segundo vídeo de entrada é concatenado é atrasado (quando reproduzido no QuickTime Player. Tudo bem em ffplay ).

Quando executo essas mesmas edições no MPEG Streamclip , o vídeo resultante é reproduzido como esperado. Aqui está uma saída tabular de ffprobe on one_through_ten-timestamped.mp4 que mostra onde o vídeo ffmpeg e o MPEG Streamclip diferem em seus pontos de concatenação:

Observe que ffmpeg e MPEG Streamclip tratam o segundo segmento mais ou menos da mesma forma, mas ffmpeg parece não respeitar o inpoint no primeiro vídeo de entrada. Note que no meu MP4, há um pacote por quadro.

ffmpeg se comportou dessa maneira da versão 2.8 (talvez antes) até 3.3.3. Estou faltando uma opção de linha de comando ou lista de edição? Certamente outros usaram com sucesso ffmpeg para dividir e combinar vídeos (sem recomprimir).

    
por watkipet 14.09.2017 / 01:48

0 respostas