Resultados esperados do ffmpeg segment_frames

Resultados esperados do ffmpeg segment_frames

Estou tentando dividir um vídeo maior de acordo com um conjunto de intervalos de quadros que coloco no ffmpeg. Algumas perguntas em relação à opção -f segment -segment_frames e o que está esperando/produzindo. Aqui está o que estou executando:

ffmpeg -i full_movie.mov -f segment -segment_frames 123 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"

ffmpeg -i full_movie.mov -f segment -segment_frames 124, 163 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"

O primeiro comando ffmpeg irá de 0 a 123 ou de 1 a 123?

O ffmpeg com a opção -segment_frames começa em 0 ao ler o filme QT, considerando que este filme quando aberto em QT começa em 0? Devo esperar alimentá-lo com meus intervalos de quadros para compensar isso, subtraindo 1 se começar em 0? Estou vendo resultados inconsistentes em intervalos adequados e provavelmente é por causa disso.

Responder1

Sim, segment_frames começa em 0. Como regra geral, quase todos os contadores de índice no ffmpeg começam em 0.

Portanto, -segment_times 124,163diz ao ffmpeg para criar um segmento para cada quadro 0-123, 124-162 e 163-END. No entanto, se esses quadros iniciais não forem quadros-chave, o ffmpeg iniciará o segmento com o primeiro quadro-chave encontrado após esses quadros.

Adicione -break_non_keyframes 1para forçar a segmentação nos quadros especificados. No entanto, os quadros iniciais podem não ser decodificados corretamente até que um quadro-chave seja encontrado, se o segmento for reproduzido de forma independente. Como você está codificando vídeo, você pode forçar quadros-chave nos pontos do segmento adicionando-force_key_frames expr:eq(n\,124)+eq(n\,163)

informação relacionada