Использование Raspivid и Gstreamer для потоковой передачи видео с камеры по сети на проигрыватель VL C - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь транслировать видео с моей камеры Raspberry Pi по локальной сети на windows машину с VL C. Я смог сделать это успешно, используя «raspivid» в сочетании с «clv c» для потоковой передачи видео через rtsp. Единственной проблемой было то, что я получил задержку ~ 2 секунды, что неприемлемо для этого приложения. Я пытался транслировать видео, используя "raspivid" с "gst-launch-1.0" от gstreamer, но до сих пор у меня не получалось.

Буду честным, я не очень знаком с Мы с gstreamer не смогли углубиться в документацию.

Вот что я сделал до сих пор:

raspivid -t 0 -h 720 -w 1080 -fps 25 -hf -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse !  rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=192.168.1.20 port=5001

Когда я запускаю это на Raspberry Pi, он говорит:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstTCPServerSink:tcpserversink0: current-port = 5001
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, width=(int)1080, height=(int)720, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, stream-format=(string)avc, alignment=(string)au, profile=(string)high, level=(string)4, codec_data=(buffer)01640028ffe1000f27640028ac2b402202df2f00f1226a01000528ee025cb0
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)640028, sprop-parameter-sets=(string)"J2QAKKwrQCIC3y8A8SJq\,KO4CXLA\=", payload=(int)96, ssrc=(uint)1019454959, timestamp-offset=(uint)4100043270, seqnum-offset=(uint)11144
/GstPipeline:pipeline0/GstGDPPay:gdppay0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, packetization-mode=(string)1, profile-level-id=(string)640028, sprop-parameter-sets=(string)"J2QAKKwrQCIC3y8A8SJq\,KO4CXLA\=", payload=(int)96, ssrc=(uint)1019454959, timestamp-offset=(uint)4100043270, seqnum-offset=(uint)11144
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:sink: caps = video/x-h264, width=(int)1080, height=(int)720, framerate=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, stream-format=(string)avc, alignment=(string)au, profile=(string)high, level=(string)4, codec_data=(buffer)01640028ffe1000f27640028ac2b402202df2f00f1226a01000528ee025cb0
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: timestamp = 4100043270
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0: seqnum = 11144
/GstPipeline:pipeline0/GstGDPPay:gdppay0.GstPad:src: caps = application/x-gdp, streamheader=(buffer)< 

и затем выплевывает кучу гекса, а затем

Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock 

На стороне windows я использую VL C, чтобы открыть .sdp файл со следующим:

v=0
m=video 5001 RTP/AVP 96
c=IN IP4 192.168.1.20
a=rtpmap:96 H264/90000

VL C пытается загрузить его немного, затем останавливается.

И вот где я, а я не совсем конечно, где go отсюда. Любая помощь будет оценена!

...