带有硬编码字幕的 ffmpeg 水印徽标

带有硬编码字幕的 ffmpeg 水印徽标

你好,我想同时将水印 png 图像添加到带有硬编码字幕 .srt 文件的视频中,我应该做哪些更改?以下行

ffmpeg -i input.mkv -threads 0 -c:v libx264 -crf 28 -preset veryslow -vf "movie=watermark.png [watermark]; [in][watermark] overlay=0:0 [out]"  output.mp4

答案1

您可以将字幕硬编码到视频中使用subtitles过滤器。实现所需目的的最佳方法是使用过滤器链,该链将视频传递到链中(因此覆盖过滤器的输出将成为字幕过滤器的输入)。链中的过滤器以逗号分隔。这不应与过滤器图混淆,过滤器图由一个或多个过滤器或过滤器链组成,以分号分隔。

我删除了空格并缩短了标签,以便此示例无需横向滚动即可显示。如果您在命令提示符中输入此内容,则应在一行中输入,并删除反斜杠和换行符:

ffmpeg -i input.mkv -threads 0 -c:v libx264 -crf 28 -preset veryslow \
-vf "movie=watermark.png[wm];[in][wm]overlay=0:0,subtitles=subtitle.srt[out]" \
output.mp4

就我个人而言,当我有多个输入时,我更喜欢使用复杂的过滤图而不是电影过滤器:

ffmpeg -i input.mkv -i watermark.png -threads 0 -c:v libx264 -crf 28 -preset veryslow \
-filter_complex "[0:v][1:v]overlay=0:0,subtitles=subtitle.srt[out]" \
-map "[out]" -map 0:a output.mp4

请注意,第二个将使用全部来自 input.mkv 的音频流,这可能是您想要的,也可能不是。如果您不想要任何音频,请删除-map 0:a;如果您想要特定的流,请参阅地图流说明符文档。

相关内容