Ao pesquisar no U&L, notei uma grande quantidade de perguntas perguntando como criar scripts para a geração de ffmpeg
linhas de comando como estas:
ffmpeg -i video.mp4 -ss 00:00:00 -t 00:10:00 -c copy 01.mp4
ffmpeg -i video.mp4 -ss 00:10:00 -t 00:10:00 -c copy 02.mp4
ffmpeg -i video.mp4 -ss 00:20:00 -t 00:10:00 -c copy 03.mp4
Ao pesquisar soluções para isso, me deparei com este ticket no ffmpeg
rastreador de problemas, intitulado:Divida um vídeo de entrada em vários pedaços de vídeo de saída.
Este ticket destaca um patch que permitiria que você finalmente pudesse fornecer uma lista de pontos no tempo para cortar um vídeo em seções menores com uma única linha de comando como esta:
$ ffmpeg -i input.avi -f segment -segment_times 10,20,40,50,90,120,180 \
-vcodec copy output02%d.avi
O patch parece ter sido lançado nesta revisão do repositório de código:
commit 2058b52cf8a4eea9bf046f72b98e89fe9b36d3e3
Author: Stefano Sabatini <[email protected]>
Date: Sat Jan 28 22:36:38 2012 +0100
lavf/segment: add -segment_times option
Address trac ticket #1504.
Eu baixei esta versão construída estaticamente do ffmpeg
,ffmpeg.static.64bit.2013-10-05.tar.gzdesite ffmpeg, mas aparentemente não incluiu essa opção.
$ ./ffmpeg --help |& grep segment
$
Alguém conseguiu fazer esse novo switch funcionar?
Responder1
É porque a falta-map
opção, que designa os fluxos de entrada como origem do arquivo de saída. Estou usando o ffmpeg 2.6.1 e consigo dividir o vídeo com -segment_times
:
ffmpeg -i foo.mp4 -segment_times 10,20,30,40 -c copy -map 0 -f segment %03d.mp4
Se precisar de uma divisão mais elaborada, você pode usar o OpenCV para ler o vídeo original e gravar o quadro desejado na nova divisão. Confira:"Criando um vídeo com OpenCV"e"Divida um vídeo em vários pedaços de acordo com vários índices de quadros iniciais e finais"