我想为目录中的一些视频添加水印。我使用尺寸为 3840x2160 的 png 水印。视频上的水印应为全尺寸。因为我的视频有不同的分辨率,所以我使用这个批处理脚本
set /p add_watermark=Wasserzeichen Addieren? (Standard: ja/nein):
if /i "%add_watermark%" == "" set add_watermark=ja
if /i "%add_watermark%" == "ja" (
for %%f in (%cd%\output\tmp\*.mp4) do (
set "filename=%%~nf"
ffmpeg -i "%%f" -i %cd%\watermark\watermark.png -filter_complex "[0:v][1:v]scale2ref=oh*mdar:ih[v0][v1];[v0][v1]overlay=main_w-overlay_w-0:0" -c:a copy -map 0 -y "%cd%\output\%%~nf.mp4"
)
)
这对于 4k 视频效果很好,但如果我的输入是高清视频,它会将输出缩放到水印大小的 4k。
如果我尝试添加
-c:v copy
FFMPEG 发出错误
Streamcopy requested for output stream fed from a complex filtergraph. Filtering and streamcopy cannot be used together.
我的问题是,如何将输出设置为与带有缩放水印的输入视频相同的大小,而不需要分两步进行。
因为似乎没有其他想法如何在不重新编码的情况下将其归档,我做了一个批处理脚本,从视频文件中提取分辨率,并使用它来更改不同分辨率的 watermark.png 的链接。
例如:
watermark_1920x1080.png
watermark_2560x1440.png
watermark_3840x2160.png
等等。这只是一个不切实际的解决方法(但它有效)我让这个问题开放。