2013-10-30 35 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 
相关问题