我会再问一遍我有很多像系列(黑暗 - 纸房子 - 权力的游戏)的视频,它们都没有字幕或水印首先我用手刹刻录字幕,然后我使用 ffmpeg 用此代码为视频刻录水印
对于(“C:\Users\shady\Downloads\convert\01*.mp4”)中的%i,执行ffmpeg-i“%i”-i C:\Users\fady\Downloads\convert\shady.png-filter_complex“overlay = main_w-overlay_w-10:10”-codec:a副本“C:\Users\shady\Downloads\convert\new01%~ni.mp4”
然后我用这段代码把它转换成720p
对于(C:\Users\shady\Downloads\convert\01*.mp4)中的 %i,执行 ffmpeg -i "%i" -c:a copy -s hd720 "C:\Users\shady\Downloads\convert\new01%~ni.mp4"
我现在的问题是,如果我想为《黑暗四季》系列剧刻录带有水印的字幕,最终文件会以 720p 格式输出,字幕顶部右侧带有水印
我可以这么做吗?
水印 png 字幕 srt 电影带有 mkv 而不是 mp4(我希望最终文件带有 mp4)
答案1
关于问题的标题 - 为什么不直接在第一个命令(水印)中添加输出大小:
-s hd720
这就省掉了一个步骤。
对于字幕,请将其添加到命令中:
subtitles=subtitle.srt
但您可能需要添加过滤器库或找到正确的 ffmpeg 版本。详细信息如下: https://trac.ffmpeg.org/wiki/HowToBurnSubtitlesIntoVideo
但这不是 Ubuntu 的问题...不完全是,但是没关系......
编辑:虽然我现在才意识到这是 Windows + ffmpeg,但答案仍然是......
Ubuntu 20.04(命令行)+ ffmpeg
安装 ffmpeg:
apt-get install -y ffmpeg
运行for
“批处理”命令:
for i in some-series-of-names-*.mp4; do echo ${i%%.*}; ffmpeg -i ${i%%.*}.mp4 -i some-logo.png -filter_complex "[0:v][1:v]overlay=main_w-overlay_w-10:10,subtitles=${i%%.*}.srt" -codec:a copy -s hd720 ${i%%.*}-ubuntu.mp4; done
Windows 10 + ffmpeg
在任意位置获取 ffmpeg。然后在 cmd.exe 中运行命令:
for %i in (some-series-of-names-*.mp4) do echo %~ni.mp4 && ffmpeg -i %~ni.mp4 -i some-logo.png -filter_complex "[0:v][1:v]overlay=main_w-overlay_w-10:10,subtitles=%~ni.srt" -codec:a copy -s hd720 %~ni-windows.mp4
解释
重装/cmd
${i%%.*}
删除扩展名,只使用文件名字符串i
;在 Windows cmd.exe 中,通过调用%~ni
ffmpeg
-filter_complex
可以执行各种叠加等,因此你可以通过它推送字幕和徽标-i some-logo.png
是徽标(水印图像)名称overlay=main_w-overlay_w-10:10
在屏幕上添加类似水印的覆盖层subtitles=%~ni.srt
硬编码字幕;字幕必须与输入的 mp4 文件同名(somovie.mp4
和movie.srt
对)-codec:a
复制 复制音频 不变-s hd720
调整为 720p%~ni-newname.mp4
输出视频的命名方式,例如,movie.mp4
将被命名为movie-newname.mp4