簡體   English   中英

使用FFMPEG將流疊加層混合到第二個流上

[英]Use FFMPEG to blend streaming overlay onto second stream

我正在嘗試構建一種可以疊加到實時流上的監視形式。

監視器疊加

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

雖然工作流程似乎可以正常工作,但是疊加層並未融合(減去?)到原始視頻上:

實際產量

實際產量

預期產量

預期產量

注意:為簡便起見,已刪除編解碼器選項。

采用

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中不及格。 因此,您可以在同一命令中執行此操作。

因此,整天玩游戲后,我純粹是偶然地偶然發現了答案。

只需將nullsrc=1024x576[1:v]更改為pad=1024:576:0:0:black[1:v] 黑色背景消失,其余部分保留。

資料來源:對一段很久以前的紀錄片的記憶,該紀錄片涉及廣播中使用的技巧,談論的是黑色背景上的白色文字疊加在膠片上如何使黑色透明。 希望這里有一個電影迷可以更好地解釋它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM