Você provavelmente não possui um quadro-chave na marca de 3 segundos. Como os quadros-chave que não codificam diferenças de outros quadros, eles exigem todos os dados que começam com o quadro-chave anterior.
Com o contêiner mp4, é possível cortar em um quadro não-chave sem recodificar usando uma lista de edição. Em outras palavras, se o quadro-chave mais próximo antes de 3s estiver em 0s, ele copiará o vídeo começando em 0s e usará uma lista de edição para informar ao player para iniciar a reprodução de 3 segundos.
Se você estiver usando o ffmpeg mais recente do git master, ele fará isso usando uma lista de edição quando chamado usando o comando que você forneceu. Se isso não funcionar, provavelmente você está usando uma versão mais antiga do ffmpeg ou o seu player não suporta listas de edição. Alguns players ignoram a lista de edição e sempre reproduzem toda a mídia do arquivo do começo ao fim.
Se você deseja cortar precisamente a partir de um quadro não-chave e deseja que seja reproduzido a partir do ponto desejado em um player que não suporta listas de edição, ou deseja garantir que a parte de corte não esteja realmente no arquivo de saída (por exemplo, se ele contiver informações confidenciais), você poderá fazer isso recodificando para que exista um quadro-chave precisamente no horário de início desejado. Recodificação é o padrão se você não especificar copy
. Por exemplo:
ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4
Ao recodificar, você também pode incluir opções adicionais relacionadas à qualidade ou um codificador AAC específico. Para obter detalhes, consulte o Guia de codificação x264 do ffmpeg para vídeo e o Guia de codificação AAC para áudio.
Além disso, a -t
opção especifica uma duração, não um horário de término. O comando acima codificará 8s de vídeo começando em 3s. Para começar aos 3s e terminar aos 8s, use -t 5
. Se você estiver usando uma versão atual do ffmpeg, também poderá substituí -t
-lo -to
no comando acima para terminar no horário especificado.