ffmpeg pode fazê-lo. Se o codec de vídeo estiver inter-codificado e você quiser uma precisão de quadro precisa, será necessário codificar novamente o vídeo. Se você não precisar recodificar o vídeo, o ffmpeg irá cortar a fronteira GOP mais próxima antes do ponto de corte especificado.
Cortar e copiar em stream :
ffmpeg -i input -ss T -t D -c copy -fflags +genpts output
-ss
T
especifica o ponto de partida expresso como timecode no formato S+[.m...]
, por ex. 24
ou 65.22
ou [HH:]MM:SS[.m...]
, por ex. 02:34:11.644
-t
D
especifica a duração no mesmo formato.
Isso não será preciso no frame se o ponto inicial não estiver no limite do GOP.
Recortar e recodificar :
ffmpeg -i input -ss T -t D -fflags +genpts output
O mesmo que acima, mas isso será preciso no frame.
Se você precisar especificar pontos de entrada e saída por números de quadros:
ffmpeg -i input -vf trim=start_frame=n:end_frame=m -af atrim=start=s:end=t -fflags +genpts output
n
e m
são os números dos quadros dos pontos de entrada e saída de vídeo. s
e t
são os timecodes do áudio correspondente.
Os codecs escolhidos para os vídeos recodificados estarão de acordo com os padrões que o ffmpeg definiu para o contêiner de saída, por exemplo, H.264 e AAC para MP4.