Eu usaria ffmpeg
o muxer de segmento (role um pouco esse link para alguns exemplos). Basicamente:
ffmpeg -i input.mp4 -c copy -f segment -segment_times 1500 output%02d.mp4
Isso produzirá dois arquivos, 'output01.mp4' e 'output02.mp4'. Se você fosse usar output%03d.mp4
, você iria em vez de obter 'output001.mp4' e 'output002.mp4'.
-segment_times
exige uma lista de pontos de divisão separados por vírgula, medidos em segundos. Como você deseja dividir apenas uma vez, em 25 minutos, use 1500 (= 25 * 60). Observe que -segment_time
(sem os 's') é uma opção completamente separada - você usaria isso se quisesse dividir o arquivo a cada cinco segundos (por exemplo), sem colocar uma grande lista de todos os horários específicos.
Você pode achar que precisa usar -reset_timestamps 1
para que os arquivos sejam reproduzidos corretamente:
ffmpeg -i input.mp4 -c copy -f segment -segment_times 1500 -reset_timestamps 1 output%02d.mp4
Há muito mais opções na página de documentação. Isso deve ser muito rápido e sem perdas (para que você obtenha vídeos idênticos sem artefatos de vídeo extras). No entanto, não será 100% preciso, pois o ffmpeg precisa ser dividido em um quadro-chave , o que não pode ser garantido sem a recodificação.
Se você precisar de uma divisão precisa, a documentação recomenda recodificar e usar as opções -force_key_frames
e -segment_time_delta
para garantir que haverá quadros I nos horários em que o muxer de segmento tentará dividir (consulte também os guias de codificação libx264 e AAC no ffmpeg wiki ):
ffmpeg -i input.mp4 -c:v libx264 -crf 22 -preset veryfast -c:a libfdk_aac -vbr 3 \
-force_key_frames 1500 -f segment -segment_times 1500 -segment_time_delta 0.05 output%02d.mp4
A versão do ffmpeg na maioria dos repositórios Linux será bastante antiga e, no caso do Debian e Ubuntu et al, a situação é ainda pior: eles não fornecem o ffmpeg, mas sim o fork, avconv, da equipe libav (consulte também a resposta de LordNeckbeard aqui ). O AVconv é uma ferramenta perfeitamente adequada por si só, mas não posso garantir que a sintaxe do ffmpeg funcione 100% do tempo, especialmente com coisas 'avançadas' como essa.
Eu recomendaria pegar uma compilação estática na página de downloads do ffmpeg ou compilar você mesmo . O principal benefício de compilar você mesmo é que você pode acessar libfdk_aac
, o melhor codificador de áudio AAC que o ffmpeg pode usar - que não pode ser legalmente distribuído em um binário ffmpeg compilado, devido a conflitos de licenciamento (o fdk_aac usa uma licença copyleft personalizada, que é isn é bastante compatível com a GPL do ffmpeg).