J'utilise actuellement FFMPEG pour trancher des fichiers vidéo. J'ai automatisé le processus via un script appelé ffmpeg_split.sh. Bien que cela soit très lent, il est efficace dans la division des vidéos dans des paramètres équivalents. La seule question est qu'elle a des problèmes de taux d'images. Au-dessous de la soupe maléfique, la soupe a recommandé un moyen de faire tout cela en utilisant segment
dans FFMPEG. J'ai essayé cela mais cela ne me donne pas de segments de durée équivalents.
MISE À JOUR
Par evilsoup en utilisant cette commande pour segmenter des vidéos:
ffmpeg -i input.mp4 -c copy -map 0 -segment_time 8 -f segment output%03d.mp4
vieux :
Voici la syntaxe pour trancher une vidéo avec script: ffmpeg_split.sh -s test_vid.mp4 -o video-part%03d.mp4 -c 00:00:08
Résultats
my_split_script.sh
input.mp4 – Duration 00:01:20
#EXTINF:10,
Output01.mp4
#EXTINF:10,
Output02.mp4
#EXTINF:10,
Output03.mp4
#EXTINF:9,
Output04.mp4
#EXTINF:10,
Output05.mp4
#EXTINF:10,
Output06.mp4
#EXTINF:11,
Output07.mp4
#EXTINF:10,
Output08.mp4
real 0m30.517s #execution time
ffmpeg
input.mp4 – Duration 00:01:20
#EXTINF:10,
Output01.mp4
#EXTINF:10,
Output02.mp4
#EXTINF:6,
Output03.mp4
#EXTINF:10,
Output04.mp4
#EXTINF:10,
Output05.mp4
#EXTINF:7,
Output06.mp4
#EXTINF:10,
Output07.mp4
#EXTINF:9,
Output08.mp4
real 0m7.493s #executition time
Vous pouvez le faire directement à partir de FFMPEG sans utiliser de script. Essentiellement chaque fois que vous utilisez ffmpeg segment
, cela ira de l'avant et fera de son mieux pour se séparer près du temps que vous avez spécifié pour chaque segment. Ceci est basé sur key_frames
Il trouvera le cadre clé le plus proche et couper là-bas. Afin de réduire les segments exacts, vous devrez coder la vidéo entière.
ffmpeg -i input.mp4 -c:v libx264 -crf 22 -map 0 -segment_time 9 -g 9 -sc_threshold 0 -force_key_frames "expr:gte(t,n_forced*9)" -f segment output%03d.mp4
Vous devrez lire dans -crf
, -sc_threshold
et -force_key_frames
. Dans le wiki pour FFMPEG .