Трубопровод Gstreamer приводит к повреждению потока - PullRequest
0 голосов
/ 05 сентября 2018

Я пытался передавать потоковое видео с RPi в браузер с помощью GStreamer, то есть RPi -> MediaServer -> Browser.

Однако отображаемое видео повреждено: Поврежденный видеовыход

Я изолировал проблему с конвейером Gstreamer, передав поток на другой порт Pi и сохранив поток в .mp4, однако это видео не воспроизводится.

Bash Script для отправки потока

PEER_A={KMS_AUDIO_PORT} PEER_V={KMS_VIDEO_PORT} PEER_IP={KMS_PUBLIC_IP} \
SELF_PATH="{PATH_TO_VIDEO_FILE}" \
SELF_A=5006 SELF_ASSRC=445566 \
SELF_V=5004 SELF_VSSRC=112233 \
bash -c 'gst-launch-1.0 -e \
    rtpbin name=r sdes="application/x-rtp-source-sdes,cname=(string)\"user\@example.com\"" \
    rpicamsrc ! video/x-raw,width=200,height=150,framerate=25/1 ! decodebin name=d \
    d. ! x264enc tune=zerolatency \
        ! rtph264pay ! "application/x-rtp,payload=(int)103,clock-rate=(int)90000,ssrc=(uint)$SELF_VSSRC" \
        ! r.send_rtp_sink_1 \
    r.send_rtp_src_1 ! udpsink host=$PEER_IP port=$PEER_V bind-port=$SELF_V \
    r.send_rtcp_src_1 ! udpsink host=$PEER_IP port=$((PEER_V+1)) bind-port=$((SELF_V+1)) sync=false async=false \
    udpsrc port=$((SELF_V+1)) ! tee name=t \
        t. ! queue ! r.recv_rtcp_sink_1 \
        t. ! queue ! fakesink dump=true async=false'

Скрипт для получения потока и сохранения в mp4

gst-launch-1.0 udpsrc port=23938 caps="application/x-rtp" ! rtph264depay ! h264parse ! mp4mux ! filesink location=~/Desktop/test.mp4

Буду весьма признателен за любые идеи о том, что не так в моей настройке конвейера, спасибо.

...