$ 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
...
Свернуть это в скрипт, чтобы сделать это в цикле, не составит труда.
Имейте в виду, что если вы попытаетесь рассчитать количество итераций на основе длительности, полученной при ffprobe
вызове, то это будет оценено по средней скорости передачи в начале клипа и размеру файла клипа, если вы не укажете -count_frames
аргумент, что значительно замедляет его работу ,
Еще одна вещь, о которой следует знать, это то, что положение -ss
опции в командной строке имеет значение . Где у меня это сейчас медленно, но точно. Первая версия этого ответа дала быструю, но неточную альтернативу. В связанной статье также описывается в основном быстрая, но все же точная альтернатива, за которую вы платите с небольшой сложностью.
Несмотря на это, я не думаю, что вы действительно хотите вырезать ровно 10 минут для каждого клипа. Это поместит сокращения прямо в середину предложений, даже слов. Я думаю, что вы должны использовать видеоредактор или проигрыватель, чтобы найти естественные точки среза, не дойдя до 10 минут.
Предполагая, что ваш файл имеет формат, который YouTube может принять напрямую, вам не нужно перекодировать, чтобы получить сегменты. Просто передайте естественное смещение точки обрезания ffmpeg
, сказав ему пропустить закодированный A / V без изменений, используя кодек «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
...
-c copy
Аргумент говорит это , чтобы скопировать все входные потоки (аудио, видео, и потенциально другие, такие как субтитры) на выход как есть. Для простых A / V программ это эквивалентно более многословным флагам -c:v copy -c:a copy
или флагам старого стиля -vcodec copy -acodec copy
. Вы бы использовали более многословный стиль, когда хотите скопировать только один из потоков, но перекодировать другой. Например, много лет назад была распространена практика с файлами QuickTime сжимать видео с видео H.264, но оставлять аудио как несжатый PCM ; если вы наткнулись на такой файл сегодня, вы можете его модернизировать, -c:v copy -c:a aac
чтобы обработать только аудиопоток, оставив видео нетронутым
Начальная точка для каждой команды, указанной выше после первой, - это начальная точка предыдущей команды плюс продолжительность предыдущей команды.