gstreamer gst-rtsp服务器是否接受udpsrc(RTP)



我想将RTP流输入gstreamer gst-rtsp服务器。对于初始测试,我使用github(1.14版(的testlaunch.c示例

当我编译并使用它时,它与默认示例配合得很好——它按预期工作,我可以在rtsp://127.0.0.1:8554/test:

./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"

但是如果我使用提供RTP udp流

gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=720 ! x264enc ! video/x-h264, stream-format=byte-stream ! rtph264pay ! udpsink host=127.0.0.1 port=5000

我使用测试启动示例在这个使用的端口上使用udpsrc播放这个流

./test-launch "( udpsrc port=5000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! rtph264pay name=pay0 )"

没有可用的rtsp流。当以类似后者的方式表达时,我对gst_rtsp_media_factory_set_launch有什么问题或误解吗?

gst_rtsp_media_factory_set_launch (factory, "( "
"udpsrc port=5000 "
"caps='application/x-rtp, media=(string)video, "
"clock-rate=(int)90000, encoding-name=(string)H264'" ")");

我解决了这个问题。单引号似乎没有成功转义。以下命令组合可用于测试启动示例。

从连接到/dev/video0 的摄像机提供RTP udp流

gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! videoscale ! "video/x-raw,is-live=true,latency=0" ! x264enc ! "video/x-h264" ! rtph264pay name=pay0 pt=96 ! udpsink host=127.0.0.1 port=5000 sync=false

使用带有(转义(双引号的测试启动示例

./test-launch "( udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" ! rtph264depay ! rtph264pay name=pay0 )"

流就绪时间rtsp://127.0.0.1:8554/test

使用gstreamer打开rtsp流(也可以由vlc播放器完成(

gst-launch-1.0 playbin uri=rtsp://127.0.0.1:8554/test uridecodebin0::source::latency=1000

因此,启动这种管道的正确c代码行将是

gst_rtsp_media_factory_set_launch (factory, "( "
"udpsrc port=5600 "
"caps = "application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264" ! "
"rtph264depay ! rtph264pay name=pay0 " ")");

最新更新