rtsp stream as virtual webcam(v4l2loopback,logitech c920,beaglebone,gstreamer)

时间:2015-09-28 14:10:04

标签: gstreamer logitech v4l2loopback

我尝试使用来自beaglebone的rtsp流作为v4l2loopback的虚拟网络摄像头。

在beaglebone(服务器)上,我用:

启动流
cvlc --sout=#rtp{sdp=rtsp://:8554/test} 'v4l2:///dev/video0:chroma=H264:width=640:height=480'

在我的客户端上,我可以使用vlc查看流而没有任何问题。 现在我尝试将流用作虚拟网络摄像头,使用:

gst-launch-1.0 -v rtspsrc location=rtsp://192.168.7.2:8554/test ! v4l2sink device=/dev/video0

该命令导致:

/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstRtpBin:manager.GstGhostPad:recv_rtp_sink_0: caps = "application/x-rtp\,\ media\=\(string\)video\,\ payload\=\(int\)96\,\ clock-rate\=\(int\)90000\,\ encoding-name\=\(string\)H264\,\ packetization-mode\=\(string\)1\,\ a-tool\=\(string\)\"vlc\\\ 2.0.3\"\,\ a-recvonly\=\(string\)\"\"\,\ a-type\=\(string\)broadcast\,\ a-charset\=\(string\)UTF-8\,\ ssrc\=\(uint\)2741328849\,\ clock-base\=\(uint\)712921660\,\ seqnum-base\=\(uint\)2089\,\ npt-start\=\(guint64\)9615207000\,\ play-speed\=\(double\)1\,\ play-scale\=\(double\)1"
FEHLER: Von Element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0: Interner Fehler im Datenfluss.
Zusätzliche Fehlerdiagnoseinformation:
gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc0:
streaming task paused, reason not-linked (-1)
Execution ended after 0:00:00.049701641
Leitung wird auf PAUSIERT gesetzt ...
Leitung wird auf BEREIT gesetzt ...
Leitung wird auf NULL gesetzt ...
Leitung wird geleert ...

有人知道这里有什么问题吗?我错过了什么,还是有另一种方法来实现这一目标? 谢谢!

3 个答案:

答案 0 :(得分:0)

我不认为你可以直接链接rtspsrc和v4l2sink,你必须添加一个中间步骤。

如何找到自己:

Router.run(routes, function (Handler) { React.render(<Handler />, document.getElementById('app')); });

并搜索“功能:” - 你会发现它输出的应用程序/ x-rtp或x-rdt不能直接链接到v4l2sink ..

然后以相同的方式(对于接收器)检查gst-inspect-1.0 rtspsrc的功能

解决方案:

rtspsrc和v4l2sink之间至少需要rtph264depay。 或者您可以使用decodebin, or uridecodebin

答案 1 :(得分:0)

您需要解码管道中的视频流。 只需在管道中插入 decodebin

gst-launch-1.0 -v rtspsrc location=rtsp://192.168.7.2:8554/test ! decodebin ! v4l2sink device=/dev/video0

答案 2 :(得分:0)

这是一条正在运行的管道。就我而言,我需要添加“ tee”,否则,我的视频设备上只会得到前几帧。

gst-launch-1.0 rtspsrc location=rtsp://admin:password@192.168.1.250:554/Streaming/Channels/101 ! decodebin ! videoconvert ! video/x-raw,format=YUY2 ! tee ! v4l2sink device=/dev/video0