Alguém recebeu o interruptor '-segment_times' trabalhando com o ffmpeg?

4

Enquanto procurava por U & L, notei uma quantidade razoável de perguntas perguntando como criar scripts na 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, deparei com esse tíquete no rastreador de problemas ffmpeg , intitulado: Divida um vídeo de entrada em vários resultados pedaços de vídeo .

Este ticket destaca um patch que permitiria que você finalmente fornecesse uma lista de pontos de 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 essa versão estaticamente criada de ffmpeg , ffmpeg.static.64bit.2013-10-05.tar.gz do site ffmpeg , mas aparentemente não incluiu esse interruptor.

$ ./ffmpeg --help |& grep segment
$

Alguém conseguiu fazer esse novo switch funcionar?

    
por slm 08.10.2013 / 22:49

1 resposta

1

É porque falta a -map opção , que designa os fluxos de entrada como uma fonte para a saída Arquivo. Estou usando o ffmpeg 2.6.1 e é capaz de 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 divisão mais elaborada, você pode usar o OpenCV para ler o vídeo original e escrever o quadro desejado no novo grupo. Confira: "Criando um vídeo com o OpenCV" e "Dividir um vídeo em vários blocos de acordo com vários índices de quadros inicial e final"

    
por 09.10.2015 / 07:46