GStreamer 组播 UDP 流在客户端中设置'sprop-parameter-sets'上限的情况下无法正常工作



我需要一些帮助。

我使用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

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

我尝试过在不设置"sprop参数集"的情况下运行,但前提是我在服务器之前启动客户端。否则,客户端在EOS启动并关闭后立即收到EOS。设置"sprop参数集"解决了该问题,但带来了另一个问题。

任何帮助都将不胜感激!

p.S客户端在英特尔®;桌面板DN2800MT创新系列上运行。

sprop-parameter-sets不应该是必需的。您应该在频带内发送SPS和PPS。您已经在尝试通过config-interval=1选项为rtph264pay执行此操作。也许您还需要将其添加到h264parse中,这样它就不会过滤掉任何SPS/PPS。

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

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

最新更新