使用ffmpeg vs handbrake加速硬编码潜艇

Speed up hardcoding subs with 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 秒时说完,而 sentence/sub 需要显示 5 秒才能让 ffmpeg 只转换这 5 秒的片段,并且只是将其余的视频和音频复制到新输出?

输入视频为 720p 和 24 FPS,速度差异通常是 handbrake 是 2x 而 ffmpeg 大约是视频持续时间的 0.7x。我知道我使用 1080p 配置文件进行手刹。两者都是在同一台机器和同一视频上测试的。

版本 ffmpeg 版本 4.2.2 手刹 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

如果有人可以提供任何建议以在硬编码 sub 上更快地获得 ffmpeg,我们将不胜感激。

对于 Handbrake,您可以使用非常快的预设。
您也可以使用 ffmpeg 指定一个预设,默认情况下它设置为中等,但您可以更改:
-preset veryfast