gstreamer gst-rtsp-server 是否接受 udpsrc (RTP)?
Does gstreamer gst-rtsp-server accept udpsrc (RTP)?
我想将 RTP 流输入 gstreamer gst-rtsp-server。对于初始测试,我使用 test-launch.c example from github(版本 1.14)。
当我编译并使用它时,它与默认示例配合得很好,它按预期工作,我可以在 rtsp://127.0.0.1:8554/test 看到一个流(例如使用 vlc 播放器):
./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 " ")");
我想将 RTP 流输入 gstreamer gst-rtsp-server。对于初始测试,我使用 test-launch.c example from github(版本 1.14)。
当我编译并使用它时,它与默认示例配合得很好,它按预期工作,我可以在 rtsp://127.0.0.1:8554/test 看到一个流(例如使用 vlc 播放器):
./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 " ")");