没有在客户端中设置“ sprop-parameter-sets”上限的情况下,GStreamer多播UDP流无法正常工作

时间:2018-11-13 13:00:24

标签: streaming gstreamer multicast

我需要这些家伙的帮助。

我正在使用GStreamer 1.0(14.2)通过udp捕获和流式传输PC屏幕(Windows 10),并在Ubuntu 12.4客户端上接收它。无法更新Ubuntu。

服务器:

gst-launch-1.0 -v gdiscreencapsrc ! queue ! video/x-raw,framerate=30/1 ! decodebin ! videoscale ! videoconvert ! \
       openh264enc bitrate=3000000 ! \
             h264parse ! video/x-h264 ! rtph264pay pt=96 config-interval=1 \
       ! udpsink host=224.1.1.1 port=5000 auto-multicast=true sync=false

客户:

gst-launch -v udpsrc port=5000 multicast-group=224.1.1.1 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)42c029, sprop-parameter-sets=(string)\"Z0LAKYyNQDwBEvLAPCIRqA\=\=\,aM48gA\=\=\", payload=(int)96" ! rtph264depay ! h264parse ! queue ! vaapidecode ! vaapisink sync=false

如果我从服务器输出中获得“属性参数集”并将其添加到客户端的udpsrc上限,则一切正常。当我尝试从另一台具有相同脚本和相同GStreamer版本的PC流式传输时,问题就开始了。 “属性参数集”不匹配,我只能看到灰屏。

我尝试不设置'sprop-parameter-sets'并且它起作用了,但前提是我必须在服务器之前启动客户端。否则,客户端在启动并关闭后立即收到EOS。设置“属性参数集”可以解决该问题,但又带来了另一个问题。

任何帮助将不胜感激!

P.S客户端在英特尔®台式机主板DN2800MT创新系列上运行。

1 个答案:

答案 0 :(得分:0)

sprop-parameter-sets不需要。您应该将SPS和PPS带内发送。您已经在尝试通过rtph264pay选项为config-interval=1做到这一点。也许您也需要将其添加到h264parse中,以免过滤掉任何SPS / PPS。

您可能要检查线路上是否可以检测到正在发送的SPS和PPS NAL单元。

编辑:只是注意到了-它应该是config-interval=-1,因此它们会在每个IDR帧之前插入。