将多视频从 1080p 转换为 720p 并添加水印?

将多视频从 1080p 转换为 720p 并添加水印?

我会再问一遍我有很多像系列(黑暗 - 纸房子 - 权力的游戏)的视频,它们都没有字幕或水印首先我用手刹刻录字幕,然后我使用 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.mp4movie.srt对)
  • -codec:a复制 复制音频 不变
  • -s hd720调整为 720p
  • %~ni-newname.mp4输出视频的命名方式,例如,movie.mp4将被命名为movie-newname.mp4

相关内容