gpt4 book ai didi

ffmpeg - 使用 FFMPEG 将流覆盖混合到第二个流上

转载 作者:行者123 更新时间:2023-12-04 23:08:31 24 4
gpt4 key购买 nike

我正在尝试构建一种可以叠加到实时流上的监控形式。

监视器覆盖

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

虽然工作流程似乎正在运行,但叠加层并未混合(减去?)到原始视频上:

实际输出

Actual output

预期产出

Expected output

注意:为简洁起见,已删除编解码器选项。

最佳答案

利用

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 中通常低于标准。因此,您可以在同一命令中执行此操作。

关于ffmpeg - 使用 FFMPEG 将流覆盖混合到第二个流上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45979457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com