rtsp流作为虚拟网络摄像头(v4l2loopback、logitech c920、beaglebone、gstreamer)

rtsp流作为虚拟网络摄像头(v4l2loopback、logitech c920、beaglebone、gstreamer),gstreamer,logitech,v4l2loopback,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

我正在尝试使用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 ...
有人知道这里出了什么问题吗?我是否遗漏了什么,或者是否有其他方法可以做到这一点?
谢谢

我认为您不能直接链接rtspsrc和v4l2sink,您必须添加一个中间步骤

如何为自己找到:

gst-inspect-1.0 rtspsrc

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

然后以相同的方式检查
v4l2sink
的功能(对于sink)

解决方案:

在rtspsrc和v4l2sink之间至少需要rtph264depay。
或者您可以使用

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

如何为自己找到:

gst-inspect-1.0 rtspsrc

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

然后以相同的方式检查
v4l2sink
的功能(对于sink)

解决方案:

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

对管道中的视频流进行解码。 只需在管道中插入decodebin:

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

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

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

这是一条正在工作的管道。在我的例子中,我需要添加“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

这是一条正在工作的管道。在我的例子中,我需要添加“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