RTP vp8/h264/opus to RTSP server

Alvaro Gil zevarito at gmail.com
Sat Nov 7 20:24:38 UTC 2020


Hi list, I've been struggling with some pipeline after a few days and
would like to ask you a few questions, here is my scenario:
I am receiving VP8/H264 & Opus through RTP, no RTCP yet.
I built a pipeline using RtpBin and Auto(Video/Audio)Sink to play
those streams with "autosink" for audio and video and it works great.
I built another pipeline to push to an RTSP server and I am struggling
with it, especially when video comes in VP8. For h264/opus it works
fine, perhaps it takes a few seconds to display video but then (local
network) it runs fine.
The problem arises with VP8 when I was unable to play video at first,
until I've put "video/x-vp8,width=1280,height=720" in between depay
and sink to avoid clients complaining about not recognizing the size
of video (which didn't make much sense to me, since I have the
understanding that you could figure out frame properties after first
keyframe with vp8), but I've realized I've been with GST 1.17, then
after update to latest version, clients started to complain about size
again and now I am unable to reproduce a single VP8 frame with any
client that I've tested with.
I've read logs carefully while building the pipeline and couldn't get
information to fix this issue.
Here are a few questions:

* Is it possible to set which will be the output size of VP8, and is
it actually required or the problem comes from somewhere else?
* Is it ok to use RtpBin without RTCP support to deliver to RTSP?
* There is some extra processing required to make it work with the VP8 scenario?
* Does it make sense to use GST RTSP Server over other open source
options out there?

Below is an example pipeline I've been testing. Thanks for your help!

gst-launch-1.0 --gst-debug 2,rtp*:6 \
  rtpbin name=rtpbin latency=1000 rtp-profile=avp \
  udpsrc port=40200
caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS,payload=(int)127"
! rtpbin.recv_rtp_sink_0 \
  udpsrc port=40202
caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)VP8,payload=(int)98"
 ! rtpbin.recv_rtp_sink_1 \
  rtpbin. ! rtpopusdepay ! opusparse ! rtspclientsink. \
  rtpbin. ! rtpvp8depay  ! video/x-vp8,width=1280,height=720 ! rtspclientsink. \
  rtspclientsink debug=true latency=2000 name=rtspclientsink
location=rtsp://192.168.0.102:8554/stream


--
Alvaro


More information about the gstreamer-devel mailing list