Ускорьте жесткое кодирование сабвуферов с помощью ffmpeg vs handbrake

У меня есть видео, в котором мне нужно жестко закодировать субтитры для устаревших устройств, поэтому я обычно использую для этого ffmpeg, и он работает нормально, но так медленно.

Я обычно использую эту команду.

      ffmpeg -i test-cut.mp4 -vf "subtitles=test-cut.srt" -c:v libx264 -crf 24 -vsync passthrough -c:a copy test.ffmpeg.mp4

На днях я попробовал handbrakeCLI, и он был намного быстрее с тем же файлом.

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

      HandBrakeCLI --preset "Very Fast 1080p30" --format av_mp4 -i test-cut.mp4 --srt-file test-cut.srt --srt-burn=1 -o test.handbrake.mp4

Есть ли способ сделать так, чтобы ffmpeg просто вставлял субтитры в видео, для которых нужны субтитры. вместо того, чтобы конвертировать все видео.

Например, если у меня есть минутное видео, и есть 1 предложение, которое произносится через 30 секунд, и это предложение / подпункт необходимо отображать в течение 5 секунд, чтобы ffmpeg преобразовал только этот 5-секундный сегмент и просто скопировал остальную часть видео. а аудио на новый выход?

Входное видео составляет 720p с 24 кадрами в секунду, а разница в скорости обычно заключается в том, что ручной тормоз составляет 2x, а ffmpeg составляет около 0,7x длительности видео. Я знаю, что использую профиль 1080p для ручного тормоза. Оба были протестированы на одной машине и на одном и том же видео.

Версии ffmpeg версия 4.2.2 HandBrake 1.3.1

информация о видео исходное видео

      CONTAINER......: MPEG-4
SIZE...........: 13.3 MiB
RUNTIME........: 45 s 94 ms
VIDEO CODEC....: avc1, High@L3.1, 8 bits
RESOLUTION.....: 1280x720
BITRATE........: 2 402 kb/s
FRAMERATE......: 24.000 FPS
AUDIO..........: AAC, 2 channels, 66.2 kb/s

выход ручного тормоза

      CONTAINER......: MPEG-4
SIZE...........: 2.81 MiB
RUNTIME........: 45 s 51 ms
VIDEO CODEC....: x264, avc1, Main@L4, 8 bits
RESOLUTION.....: 1118x692
BITRATE........: 355 kb/s
FRAMERATE......: 24.000 FPS
AUDIO..........: AAC, 2 channels, 160 kb/s

вывод ffmpeg

      CONTAINER......: MPEG-4
SIZE...........: 3.90 MiB
RUNTIME........: 45 s 94 ms
VIDEO CODEC....: x264, avc1, High@L3.1, 8 bits
RESOLUTION.....: 1280x720
BITRATE........: 651 kb/s
FRAMERATE......: 23.976 (23976/1000) FPS
AUDIO..........: AAC, 2 channels, 66.2 kb/s

Был бы признателен, если бы кто-нибудь мог предоставить какие-либо предложения по ускорению ffmpeg при жестком кодировании субтитров.

1 ответ

Для ручного тормоза вы используете предустановку veryfast.
Вы также можете указать пресет с помощью ffmpeg, по умолчанию он установлен на средний, но вы можете изменить:
-preset veryfast

Другие вопросы по тегам