我有一个RTSP视频源(h265),我可以用VLC显示。我想将流分成两部分,一个是本机分辨率(用h265编码),另一个是新的低分辨率(用h264编码)。这两个新的流也应该是RTSP流,可以用VLC查看。
由于带宽方面的考虑,我只能将单个客户端连接到主源。
到目前为止,我已经完成了gst -rstp-服务器的设置,只有一个媒体工厂运行这个gst启动字符串:
Location=.!rtph265depay!h265parse!tee name=t!排队!rtph265pay name=pay1 pt=96 t.排队!破译!视频信号!录像!视频/x-原始,帧=30/1,width=640,height=480!x264enc bitrate=500速度预置=超高速tune=zerolatency!h264parse!rtph264pay name=pay0 pt=96
我为媒体工厂设置了一个安装点,可以连接到VLC,例如。"rtsp://127.0.0.1:8550/test“。这样,我只能得到VLC中的任何一个子流是pay0。我可以看到,两个子流都是通过更改哪一个是pay0来工作的。但是我怎么能让VLC显示我的pay1呢?
否则,我如何才能获得原始视频源,然后有两个不同的媒体工厂(具有不同的gst启动字符串.)把发球台当成自己的来源?
发布于 2019-03-18 12:09:53
这两条溪流同时被发送给你。通常情况下,pay0 & pay1会发送视频和音频。对于您需要2个单独视频流的情况,您将需要修改代码。
您想要实现的简单示例可以通过修改gst-rtsp-server/examples/test-launch.c上的文件来完成。
factory = gst_rtsp_media_factory_new ();
gst_rtsp_media_factory_set_launch (factory, argv[1]);
gst_rtsp_media_factory_set_shared (factory, TRUE);
gst_rtsp_mount_points_add_factory (mounts, "/stream1", factory);
gst_rtsp_media_factory_set_launch (factory, argv[2]);
gst_rtsp_media_factory_set_shared (factory, TRUE);
gst_rtsp_mount_points_add_factory (mounts, "/stream2", factory);然后从./test-launch "rtspsrc location=... ! rtph265depay ! h265parse ! rtph265pay name=pay1 pt=96" "rtspsrc location=... ! rtph265depay ! h265parse ! decodebin ! videoscale ! videorate ! video/x-raw,framerate=30/1,width=640,height=480 ! x264enc bitrate=500 speed-preset=superfast tune=zerolatency ! h264parse ! rtph264pay name=pay0 pt=96"开始
然后你会有2个消费者在你的相机上,不过。如果您希望只消耗一次,那么就由您来处理流&将其作为gst_rtsp_media_factory_set_launch管道的src使用。
https://stackoverflow.com/questions/55173780
复制相似问题