$ ffmpeg -i source-file.foo -ss 0 -t 600 first-10-min.m4v
$ ffmpeg -i source-file.foo -ss 600 -t 600 second-10-min.m4v
$ ffmpeg -i source-file.foo -ss 1200 -t 600 third-10-min.m4v
...
Envelopper cela dans un script pour le faire en boucle ne serait pas difficile.
Attention, si vous essayez de calculer le nombre d'itérations en fonction de la durée de sortie d'un ffprobe
appel, il est estimé à partir du débit binaire moyen au début du clip et de la taille du fichier du clip, à moins que vous ne donniez l' -count_frames
argument, ce qui ralentit considérablement son fonctionnement. .
Une autre chose à prendre en compte est que la position de l' -ss
option sur la ligne de commande est importante . Où je l'ai maintenant est lent mais précis. La première version de cette réponse donnait l' alternative rapide mais inexacte . L'article lié décrit également une alternative généralement rapide mais toujours précise, que vous payez avec un peu de complexité.
Tout cela mis à part, je ne pense pas que vous souhaitiez vraiment couper exactement 10 minutes par clip. Cela mettra les coupes au beau milieu des phrases, même des mots. Je pense que vous devriez utiliser un éditeur ou un lecteur vidéo pour trouver des points de coupure naturels à un peu moins de 10 minutes d'intervalle.
En supposant que votre fichier soit dans un format accepté directement par YouTube, vous n'avez pas à le recoder pour obtenir des segments. Il suffit de transmettre les décalages naturels du point de coupure à ffmpeg
, en lui demandant de transmettre le signal A / V codé sans toucher à l’aide du codec "copy":
$ ffmpeg -i source.m4v -ss 0 -t 593.3 -c copy part1.m4v
$ ffmpeg -i source.m4v -ss 593.3 -t 551.64 -c copy part2.m4v
$ ffmpeg -i source.m4v -ss 1144.94 -t 581.25 -c copy part3.m4v
...
L' -c copy
argument lui dit de copier tous les flux d'entrée (audio, vidéo et éventuellement d'autres, tels que les sous-titres) dans la sortie telle quelle. Pour les programmes audiovisuels simples, cela équivaut aux indicateurs plus détaillés -c:v copy -c:a copy
ou aux indicateurs de style ancien -vcodec copy -acodec copy
. Vous utiliseriez le style le plus détaillé lorsque vous souhaitez copier un seul des flux, mais recoder l'autre. Par exemple, il y a de nombreuses années, il était courant avec les fichiers QuickTime de compresser la vidéo avec la vidéo H.264 tout en laissant l'audio au format PCM non compressé ; Si vous rencontriez un tel fichier aujourd'hui, vous pourriez le moderniser -c:v copy -c:a aac
pour ne traiter que le flux audio, en laissant la vidéo intacte.
Le point de départ pour chaque commande ci-dessus après la première est le point de départ de la commande précédente plus la durée de la commande précédente.