我想使用 FFmpeg 添加水印,但希望视频具有相同的质量。我该怎么做?
我尝试使用-vcodec copy -acodec copy
但没有水印:
ffmpeg -y -i treino.mp4 -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" -vcodec copy -acodec copy video2.mp4
答案1
您正在使用过滤器,而过滤需要重新编码,因此您不能-vcodec copy
使用流复制视频。如果您想要“相同质量”,则需要使用无损编码器:
ffmpeg -i video.mp4 -i image.png -filter_complex overlay -c:v libx264 -crf 0 -c:a copy -movflags +faststart output.mp4
生成的文件可能很大:这对于无损输出来说是意料之中的。
您的播放器或设备可能无法播放无损文件。
如果您想要“视觉无损”的输出,从技术上来说它不是无损的,但看起来几乎是无损的,那么请使用
-crf 18
而不是-crf 0
。无需电影源过滤器。只需像我的示例中所示的任何其他文件一样添加覆盖图像即可。
由于您使用的是 PHP,我假设您将通过渐进式下载来呈现视频。添加
-movflags +faststart
以便它可以在文件完全下载之前开始播放。