You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Nginx RTMP模块:FFmpeg多路视频流加水印配置失效求助

解决Nginx RTMP流添加水印并转码多分辨率的问题

首先看你当前命令的核心问题:你在filter_complex里已经做了水印叠加和流拆分,但后续每个输出又用了-vf(视频滤镜),这会覆盖掉之前filter_complex处理后的视频流,相当于水印白加了,而且滤镜链的顺序也不对。另外,-strict -2在新版本FFmpeg里已经不需要了,还有音频编码的参数可以优化下。

下面是修正后的完整命令,我把scale整合到filter_complex里,确保每个分流都带水印,同时简化了重复参数:

exec ffmpeg -i rtmp://localhost/$app/$name -i /mnt/pictures/flowtech.png \
-filter_complex "overlay=10:10,split=5[out1][out2][out3][out4][out5]; \
[out1]scale=480:trunc(ow/a/2)*2[v1]; \
[out2]scale=720:trunc(ow/a/2)*2[v2]; \
[out3]scale=960:trunc(ow/a/2)*2[v3]; \
[out4]scale=1280:trunc(ow/a/2)*2[v4]" \
-map '[v1]' -map 0:a -c:v libx264 -c:a aac -ac 1 -b:v 256k -b:a 32k -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/hlsall/$name_low \
-map '[v2]' -map 0:a -c:v libx264 -c:a aac -ac 1 -b:v 768k -b:a 96k -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/hlsall/$name_mid \
-map '[v3]' -map 0:a -c:v libx264 -c:a aac -ac 1 -b:v 1024k -b:a 128k -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/hlsall/$name_high \
-map '[v4]' -map 0:a -c:v libx264 -c:a aac -ac 1 -b:v 1920k -b:a 128k -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/hlsall/$name_hd720 \
-map '[out5]' -map 0:a -c copy -f flv rtmp://localhost/hlsall/$name_src \
>>/tmp/rtmp_log 2>&1;

关键修改点:

  • 把所有视频滤镜(overlay、split、scale)都放到filter_complex里,避免-vf覆盖之前的处理,保证每个输出流都先叠加水印再缩放
  • 移除了过时的-strict -2参数(新版本FFmpeg对AAC编码已经不需要这个兼容标记)
  • 把日志重定向改成2>&1,这样错误日志也会写入到/tmp/rtmp_log,方便排查问题
  • 用换行符格式化命令,可读性更强(Nginx里可以用反斜杠换行)

额外建议:

  • 确保你的FFmpeg版本支持libx264和aac编码器,可以用ffmpeg -encoders命令验证
  • 检查/mnt/pictures/flowtech.png的路径是否正确,FFmpeg需要能读取到这个水印文件
  • 如果水印位置需要调整,可以修改overlay=10:10的参数,比如overlay=W-w-10:H-h-10可以把水印放到右下角(W是视频宽度,w是水印宽度,H是视频高度,h是水印高度)

内容的提问来源于stack exchange,提问作者Frederick Eyland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:15:43