2013-10-30 32 views
0

我有一個程序可以生成jpgs。我想在生成這些圖像時將這些圖像發送到我的虛擬攝像頭。我可以使用v4l2loopback創建一個虛擬攝像頭,並一直在尋找gstreamer,但無法完成它的工作。以編程方式將圖像發送到v4l2設備

我試過gf-launch與multifilesrc,但似乎只有當我有圖像已生成時才工作。我也嘗試設置gst-launch將一個圖像發送到網絡攝像頭,然後在生成新圖像時覆蓋圖像。不幸的是,這會導致gstreamer崩潰。

有誰知道我怎麼能做到這一點?我不需要使用gstreamer,但我希望在Linux中執行此操作,理想情況是使用Python。

+2

爲什麼你想發送圖像_to_相機?你想讓相機與他們做什麼?麥克風可以用作質量較差的揚聲器,但我認爲相機不能用作全息投影儀。 – abarnert

+0

我想將它發送到虛擬攝像頭,以便我可以在VoIP聊天中傳輸這些圖像。 – Ric

+1

所以你的問題_really_是,你如何流自定義圖像到你的VoIP客戶端,期待一個視頻流,真的沒有任何與網絡攝像頭。 –

回答

1

下面的腳本將監視一個目錄,並將每個新添加的圖像傳遞給gstreamer,gstreamer會將它發送到視頻設備(/dev/video0,但隨意更改)。

呼叫與路徑監控作爲唯一的參數(例如./pics2v4l2 /tmp/pics

#!/bin/sh 

DIR=$1 
DEVICE=/dev/video0 

inotifywait -m "${DIR}" \ 
| awk '$2== "CLOSE_WRITE,CLOSE" {print $1"/"$3; fflush()}' \ 
| while read f; do 
gst-launch-0.10 uridecodebin uri="file://${f}" \ 
! ffmpegcolorspace \ 
! videoscale \ 
! imagefreeze \ 
! identity error-after=2 \ 
! v4l2sink show-preroll-frame=false device=${DEVICE} 
done 
相關問題