Recorte um vídeo FFmpeg baseado em quadros e não em timecode

0

Eu quero cortar um vídeo com o FFmpeg usando algo semelhante ao código abaixo:

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4

No entanto, quero especificar -ss e -t em quadros em vez de em segundos. Por exemplo, em vez de 3 segundos, gostaria de informar ao ffmpeg para iniciar o corte em 90 quadros. Eu quero fazer isso porque vou cortar vídeos usando um script e não quero complicar demais as coisas tendo que converter os números de quadros em segundos antes de passá-los para o FFmpeg.

Especificar simplesmente um número como -ss 90 inicia o corte em 90 segundos, não em 90 quadros.

    
por mxbi 12.08.2015 / 14:19

2 respostas

3

Acredito que você possa conseguir isso usando o filtro select . No entanto, ao usar um filtro de vídeo, você não poderá mais transmitir a cópia. Em vez disso, você terá que transcodificar o arquivo escolhendo um codec com o sinalizador c:v .

Por exemplo, para criar um corte a partir do 90º quadro e produzir uma saída com 1.000 quadros de comprimento e transcodificar a saída em um formato H264, tente:

ffmpeg -i [INPUT] -vf select=gte(n\,90) -vframes 1000 -c:v libx264 -f mp4 [output.mp4]

    
por 13.08.2015 / 00:27
0

Não há como fazer exatamente o que você está pedindo.

Você pode usar -frames para processar um número desejado de quadros, mas não é possível usar um número de quadros, pois a posição inicial não é possível.

    
por 12.08.2015 / 16:56