
У меня есть видеофайлы в формате 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, а qscale
0 означает «наилучшее качество».
В любом случае быстрая транспозиция дает вам
ffmpeg -ss 00:00:00.00 -i INPUTfile -to 00:10:00.00 -codec:v mpeg2video -qscale:v 0 OUTPUTfile