Não é possível fazer uma divisão com precisão de quadro (ou milissegundos) de um fluxo de vídeo / áudio ao copiar os fluxos de bits ( -c:v copy -c:a copy
). Como o vídeo de saída precisa começar com um quadro-chave e ele não será reproduzido corretamente se ffmpeg
procurar até encontrar um quadro-chave no fluxo de bits de vídeo e então começar a saída de vídeo.
No seu caso específico, você pode ver que nenhum quadro foi gravado ( frame=0
) porque aparentemente não há um quadro-chave entre os pontos inicial e final no vídeo original. (Aparentemente, algum áudio foi gravado, mas os fluxos de bits de áudio podem basicamente ser acessados a qualquer momento.)
Sua única opção, se você quiser um corte preciso, é recodificar o vídeo, gerando novos quadros-chave.
ffmpeg -i in.mov -ss 27.042 -to 29.208 -c:v libx264 -c:a aac -strict experimental test.mov
Você precisa mexer nas configurações de qualidade aqui. Veja o x264 e AAC . Leia também Buscando com o FFmpeg para saber o que a posição de -ss
implica. Basicamente, para cortes precisos ao recodificar, -ss
precisa sempre ser após -i
.
Se você não se importa com os tempos de corte exatos, o segment
muxer pode Socorro. Aqui, você não precisa necessariamente codificar novamente. Mas note:
… if you want accurate splitting for a video file, you need to make the input key frames correspond to the exact splitting times expected by the segmenter, or the segment muxer will start the new segment with the key frame found next after the specified start time.