2017-08-09 98 views
0

我運行的機器人使用fmpeg將straming視頻發送到letsrobot.tv您可以在名爲patton II的網站上看到我的機器人。我想在視頻流上疊加視頻HUD。使用ffmpeg覆蓋另一個視頻上的流媒體視頻

我有found a link解釋如何做到這一點,但我不知道如何做到這一點與流視頻作爲輸入,而不是一個單一的圖像文件。

這是目前正在使用流式傳輸視頻的命令:

overlayCommand = '-vf dynoverlay=overlayfile=/home/pi/runmyrobot/images/hud.png:check_interval=500' 
videoCommandLine = '/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s %s -f mpegts -codec:v mpeg1video -s 640x480 -b:v %dk -bf 0 -muxdelay 0.001 %s http://%s:%s/hello/640/480/' % (deviceAnswer, rotationOption, args.kbps, overlayCommand, server, videoPort) 
audioCommandLine = '/usr/local/bin/ffmpeg -f alsa -ar 44100 -i hw:1 -ac 2 -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/hello/640/480/' % (server, audioPort) 
+0

我還沒有嘗試任何事情,我不知道從哪裏把這些代碼或如何,甚至將其設置 – user3354787

+0

我安裝了它作爲一個包我寫的SD卡是所有預裝的,我可以上傳我的電流在這裏控制視頻的Python腳本? – user3354787

+0

overlayCommand ='-vf dynoverlay = overlayfile =/home/pi/runmyrobot/images/hud.png:check_interval = 500' videoCommandLine ='/ usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i/dev/video%s%s -f mpegts -codec:v mpeg1video -s 640x480 -b:v%dk -bf 0 -muxdelay 0.001%s http://%s:%s/hello/640/480 /' %(deviceAnswer,rotationOption,args.kbps,overlayCommand,server,videoPort) audioCommandLine ='/ usr/local/bin/ffmpeg -f alsa -ar 44100 -i hw:1 -ac 2 -f mpegts -codec:a mp2 -b:32k -muxdelay 0.001 http://%s:%s/hello/640/480 /'%(server,audioPort) – user3354787

回答

1

您已經有了一個輸入,這是網絡攝像頭視頻:

-f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s 

要疊加另一個視頻,所以你必須添加第二個輸入,這是你的HUD流。我假設你已經具有的選擇被實時生成的流:

-i /path/to/hud/stream 

然後,添加一個複雜的過濾器覆蓋一個比其他:

-filter_complex "[0:v][1:v]overlay[out]" 

過濾後,加入一-map "[out]"選項告訴ffmpeg使用生成的視頻作爲輸出,並照常添加剩餘的選項。所以,總之:

/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s \ 
-i /path/to/hud/stream \ 
-filter_complex "[0:v][1:v]overlay[out]" -map "[out]" \ 
-f mpegts -codec:v mpeg1video -s 640x480 -b:v %dk -bf 0 \ 
-muxdelay 0.001 %s http://%s:%s/hello/640/480/ 

很明顯,不知道更多,這是我可以給你最通用的建議。

的一般提示:

  • 確保HUD流是相同的分辨率攝像頭的視頻,其中的元素放在您想要的地方。或者使用overlay filter'sxy選項來移動HUD。
  • 你的HUD流應該有一個透明層。並非所有的編解碼器和容器格式都支持這一點
  • 您使用的是-codec:v mpeg1video,它是MPEG-1視頻。它非常節省資源,但質量卻很低。您可能想要選擇更好的編解碼器,但這取決於您的設備功能(例如,至少MPEG-2有mpeg2,或MPEG-4第10部分有mpeg4,或者H.264有libx264)。
+0

視頻不會是一個流它將成爲一個實際的視頻...流是從相機,覆蓋來自視頻文件,也.......視頻覆蓋也必須是mpeg1或可以它是另一回事嗎? – user3354787

+0

它可以是MPEG-1,但它不應該。就像我說的,這是陳舊和低效的。使用支持透明度的現代編解碼器,如通過'libvpx'的VP9,或使用一系列PNG圖像或Apple ProRes 4444,Apple Animation ... – slhck