Многоадресная передача UDP GStreamer не работает без установленных в клиенте ограничений sprop-parameter-sets. - PullRequest
0 голосов
/ 13 ноября 2018

Мне нужна помощь с этим парнем.

Я использую GStreamer 1.0 (14.2) для захвата и потоковой передачи экрана ПК (Windows 10) через udp и получения его на клиенте 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 клиента, все в порядке. Проблемы начинаются, когда я пытаюсь выполнить потоковую передачу с другого компьютера с тем же сценарием и той же версией GStreamer. 'Наборы параметров sprop' не совпадают, и я вижу только серый экран.

Я пытался без установки 'sprop-параметров-sets', и это работало, но только если я запускаю клиент перед сервером. В противном случае клиент получает EOS сразу после запуска и завершает работу. Установка 'sprop-параметров-sets' исправила эту проблему, но принесла другую.

Буду признателен за любую помощь!

P.S клиенты работают на системной плате Intel® для настольных ПК DN2800MT Innovation Series.

1 Ответ

0 голосов
/ 14 ноября 2018

sprop-parameter-sets не требуется.Вы должны отправить SPS и PPS внутри полосы.Вы уже пытаетесь сделать это для rtph264pay с помощью опции config-interval=1.Возможно, вам также необходимо добавить его в h264parse, чтобы он не отфильтровывал SPS / PPS.

Возможно, вы захотите проверить на проводе, можете ли вы обнаружить отправляемые блоки SPS и PPS NAL.

РЕДАКТИРОВАТЬ: Только что заметил - это должно быть config-interval=-1, поэтому они вставляются перед каждым кадром IDR.

...