VLC在3个管道中的1个管道上使用相同的编码并从gst-rtsp服务器卸载



我有一件奇怪的事情,我在RTSP服务器上添加了3个不同的媒体工厂。其中一个(下面的第三个(我只能在另一台机器上玩gst启动。

下面的前两个在vlc和gst发布上运行良好,我不明白的是为什么第三个不起作用,所有管道只有不同的源,编码和depay在所有3个管道上都是相同的。

使用vlc和gst启动其他机器。

compositor name=mix sink_0::xpos=0 sink_0::ypos=0 sink_1::xpos=640 sink_1::ypos=0 sink_2::xpos=0 sink_2::ypos=480 sink_3::xpos=640 sink_3::ypos=480 ! queue max-size-time=0 ! videoconvert ! videoscale ! video/x-raw, width=1920, height=1080 ! x264enc key-int-max=5  speed-preset=ultrafast tune=zerolatency ! rtph264pay name=pay0 filesrc location=error.jpg ! jpegdec ! imagefreeze ! textoverlay text="<span foreground='#2f2e41' >K1 Camera not reachable, check camera or IP-Address or Hostname</span>" valignment=top font-desc="Arial, 13" ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix. filesrc location=error.jpg ! jpegdec ! imagefreeze ! textoverlay text="<span foreground='#2f2e41' >K2 Camera not reachable, check camera or IP-Address or Hostname</span>" valignment=top font-desc="Arial, 13" ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix.

在其他机器上使用VLC和gst启动

compositor name=mix sink_0::xpos=0 sink_0::ypos=0 sink_2::xpos=0 sink_2::ypos=480 sink_4::xpos=0 sink_4::ypos=960 ! queue max-size-time=0 ! videoconvert ! videoscale ! video/x-raw, width=1920, height=480 ! x264enc key-int-max=5  speed-preset=ultrafast tune=zerolatency ! rtph264pay name=pay0 souphttpsrc ssl-strict=false is-live=true user-id="<user-removed>" user-pw="<pwd-removed>" location="http://<ip-removed>/mjpg/video.mjpg" do-timestamp=true ! multipartdemux ! jpegdec ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix. souphttpsrc ssl-strict=false is-live=true user-id="<user-removed>" user-pw="<pwd-removed>" location="http://<ip-removed>/mjpg/video.mjpg" do-timestamp=true ! multipartdemux ! jpegdec ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix. souphttpsrc ssl-strict=false is-live=true user-id="<user-removed>" user-pw="<pwd-removed>" location="http://<ip-removed>/mjpg/video.mjpg" do-timestamp=true ! multipartdemux ! jpegdec ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix.

仅在gst启动的其他机器上工作

compositor name=mix sink_0::xpos=0 sink_0::ypos=0 sink_1::xpos=640 sink_1::ypos=0 sink_2::xpos=1280 sink_2::ypos=0 sink_2::xpos=0 sink_2::ypos=480 sink_3::xpos=640 sink_3::ypos=480 sink_4::xpos=1280 sink_4::ypos=480 ! queue max-size-time=0 ! videoconvert ! videoscale ! video/x-raw, width=1920, height=960 ! x264enc key-int-max=5  speed-preset=ultrafast tune=zerolatency ! rtph264pay name=pay0 rtspsrc latency=200 user-id="admin" user-pw="enercon525244" location="rtsp://<ip-removed>/Streaming/channels/102" ! rtph264depay ! h264parse ! avdec_h264 ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix. souphttpsrc ssl-strict=false is-live=true user-id="<user-removed>" user-pw="<pwd-removed>" location="http://<ip-removed>/control/faststream.jpg?stream=full&preview&camera=left&size=640x480&fps=4.0" do-timestamp=true ! multipartdemux ! jpegdec ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix. souphttpsrc ssl-strict=false is-live=true user-id="<user-removed>" user-pw="<pwd-removed>" location="http://<ip-removed>/control/faststream.jpg?stream=full&preview&camera=right&size=640x480&fps=4.0" do-timestamp=true ! multipartdemux ! jpegdec ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix. souphttpsrc ssl-strict=false is-live=true user-id="<user-removed>" user-pw="<pwd-removed>" location="http://<ip-removed>/control/faststream.jpg?stream=full&preview&camera=left&size=640x480&fps=4.0" do-timestamp=true ! multipartdemux ! jpegdec ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix. souphttpsrc ssl-strict=false is-live=true user-id="<user-removed>" user-pw="<pwd-removed>" location="http://<ip-removed>/control/faststream.jpg?stream=full&preview&camera=right&size=640x480&fps=4.0" do-timestamp=true ! multipartdemux ! jpegdec ! videoscale ! video/x-raw, width=640, height=480 ! queue ! mix.

在我的GST-rtsp服务器实例上使用GST_DEBUG=1时,当我尝试使用VLC:时,它会在最后一个管道上返回错误

0:00:15.140129410 25881      0x2c59400 ERROR             rtspclient rtsp-client.c:1718:handle_play_request: client 0x342a240: media not found
0:00:15.163301390 25881      0x2c59400 ERROR             rtspclient rtsp-client.c:1270:handle_teardown_request: client 0x342a240: no media for uri

GST-VERSION:(主要=1,次要=14,微小=5,纳米=0(

VLC log
satip debug: try to open 'rtsp://<ip-removed>/42342'
satip debug: connect to host '<ip-removed>'
main debug: net: connecting to <ip-removed> port 554
main debug: connection succeeded (socket = 1560)
main debug: net: opening 0.0.0.0 datagram port 9140
main debug: net: opening 0.0.0.0 datagram port 9141
satip error: Failed to play RTSP session
satip error: Failed to teardown RTSP session
main debug: net: connecting to <ip-removed> port 554
main debug: connection succeeded (socket = 1636)
access_realrtsp warning: Cseq mismatch, got 1, assumed 0
access_realrtsp debug: rtsp connected
access_realrtsp warning: only real/helix rtsp servers supported for now
main debug: no access modules matched
main debug: dead input
qt debug: IM: Deleting the input
main debug: changing item without a request (current 0/1)
main debug: nothing to play

我该怎么解决这个问题?

首先,您应该检查VLC日志中不喜欢的内容。由于您的上一个有更多的输入,我可以想象您的合成器有不同的配置。

出乎意料的是,我猜在你的上一个中,合成器输出4:4:4的数据,并创建4:4:4配置文件H.264流。玩家很少支持这些流。

如果是这种情况,您应该确保4:2:0格式进入x264enc,或者在输出上限上定义非4:4:4 H.264目标配置文件。

最新更新