$ 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 через недоторканий, використовуючи кодек "копіювати":
$ 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
щоб переробити лише аудіопотік, залишивши відео не торканим.
Початковою точкою для кожної команди вище після першої є початкова точка попередньої команди плюс тривалість попередньої команди.