Можно ли как-то объединить эти две команды в одну?

Можно ли как-то объединить эти две команды в одну?

У меня есть видеофайлы в формате MP4. Мне нужно конвертировать их в MP2. Однако, когда они превышают определенный размер файла в формате MP2, мне также нужно разрезать их на более мелкие файлы.

Для этого у меня сейчас есть две команды:

Команда преобразования

ffmpeg -i INPUTfile -codec:v mpeg2video -qscale:v 0 OUTPUTfile

Команда резки (значения времени приведены только для примера)

ffmpeg -ss 00:00:00.00 -i INPUTfile -to 00:10:00.00 -c copy -copyts OUTPUTfile

В настоящее время я конвертирую видеофайл, проверяю размер файла. Если он слишком большой, я сначала разрежу исходный видеофайл, а затем конвертирую «части» в MP2.

Я новичок в ffmpeg и мне было интересно, можно ли объединить эти две команды в одну. Опять же, мне нужно преобразовать файл MP4 и разрезать его. Если я сначала сделаю преобразование, а потом разрежу, или наоборот, для меня это не имеет особого значения.

Мне нужно будет запустить команду резки несколько раз, так как я программно решу, на сколько 'частей' я разрежу файл. Однако конечный результат(ы) должен быть в формате MP2, независимо от того, сколько 'частей' у меня получится.

решение1

Поскольку ваша вторая команда выполняет разделение по времени, то это лучшее место для начала «объединения» этих команд.

Вы должны просто иметь возможность заменить -c copy -copytsна соответствующие параметры преобразования кодека из вашей первой команды. Эти параметры в основном означают "просто скопировать поток как есть", в то время как другие параметры времени устанавливают начальные и конечные точки. В результате мы можем изменить "копировать поток" на "конвертировать видео" из вашей первой команды.

Параметры из вашей первой команды, которые относятся к преобразованию mp4 в mp2, следующие: -codec:v mpeg2video -qscale:v 0. Это codec:v mpeg2videoуказывает ffmpegна необходимость использования кодировщика mpeg2video, а qscale0 означает «наилучшее качество».

В любом случае быстрая транспозиция дает вам

ffmpeg -ss 00:00:00.00 -i INPUTfile -to 00:10:00.00 -codec:v mpeg2video -qscale:v 0 OUTPUTfile

Связанный контент