我正在尝试构建一种可以叠加到直播中的监控形式。
监控重叠
ffmpeg -i rtmp://localhost/pool/livestream -filter_complex \
"nullsrc=1024x576[1:v]; \
[0:a]showvolume=v=0:o=1:t=0:f=0.1,drawbox=x=ih-40:y=0:w=40:h=ih[volume]; \
[1:v]drawtext=x=(main_w/2)-(text_w/2):y=text_h:fontsize=30:fontcolor=white:borderw=1:text='Stream Label',scale=-1:-1[label]; \
[label][volume]overlay=x=main_w-40:y=0[output]" \
-map "[output]" -f flv rtmp://localhost/pool/livestream_overlay
我想要完成的是将此流叠加到原始流上并推送到第三个RTMP端点,如下所示:
ffmpeg -i rtmp://localhost/pool/livestream -i rtmp://localhost/pool/livestream_overlay \
-filter_complex "[0:v][1:v]overlay=shortest=1[output]" \
-f flv rtmp://localhost/pool/livestream_monitor
虽然工作流程似乎正常,但叠加层没有混合(减去?)到原始视频上:
实际输出
预期输出
注意:为了简洁起见,已删除了编解码器选项。
答案 0 :(得分:0)
使用
ffmpeg -i rtmp://localhost/pool/livestream -filter_complex \
"[0:a]showvolume=v=0:o=1:t=0:f=0.1,drawbox=x=iw-40:y=0:w=40:h=ih[volume]; \
[0:v]drawtext=x=(W-tw)/2:y=th:fontsize=30:fontcolor=white:borderw=1:text='Stream Label'[label]; \
[label][volume]overlay=x=W-40:y=0[output]" \
-map "[output]" -map 0:a -f flv rtmp://localhost/pool/livestream_monitor
通常的FLV编解码器都不支持alpha,所以在第二个命令中,你必须执行色度键控,这通常在ffmpeg中是低于此的。所以,你可以在同一个命令中完成它。
答案 1 :(得分:0)
所以在玩了一整天后,我偶然发现了答案。
只需将nullsrc=1024x576[1:v]
更改为pad=1024:576:0:0:black[1:v]
即可。黑色背景消失,其余的仍然存在。
来源:很久以前关于广播中使用的技巧的纪录片的记忆,谈论叠加在电影上的黑色背景上的白色文字如何使黑色透明。希望这里有一个可以更好地解释它的电影迷