我需要这些家伙的帮助。
我正在使用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创新系列上运行。
答案 0 :(得分:0)
sprop-parameter-sets
不需要。您应该将SPS和PPS带内发送。您已经在尝试通过rtph264pay
选项为config-interval=1
做到这一点。也许您也需要将其添加到h264parse
中,以免过滤掉任何SPS / PPS。
您可能要检查线路上是否可以检测到正在发送的SPS和PPS NAL单元。
编辑:只是注意到了-它应该是config-interval=-1
,因此它们会在每个IDR帧之前插入。