Confusing Gstreamer behavior

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Confusing Gstreamer behavior

veek
First of all, I am a complete gstreamer beginner so begging your patience
here:

*Environment*:
Ubuntu 18.04, gstreamer version 1.14.5 from gst-launch-1.0 --version

*Issue*

1) I'm trying to send an audio + video H264 encoded video and OPUS encoded
audio in a Matroska container over RTP on localhost using rtpbin. The
behavior is that I get no errors on stdout or stderr but get no video or
audio.
2) Sender launch command:
gst-launch-1.0 -ve rtpbin name=rtpbin \
          filesrc location=../h264-video/gravity_audio_opus_video_h264.mkv  !
matroskademux name=demux \
            demux.video_0 ! rtph264pay ! rtpbin.send_rtp_sink_0 \
               rtpbin.send_rtp_src_0 ! udpsink port=5000                          
\
               rtpbin.send_rtcp_src_0 ! udpsink port=5001 sync=false
async=false    \
               udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0                          
\
            demux.audio_0 ! rtpopuspay ! rtpbin.send_rtp_sink_1                  
\
                  rtpbin.send_rtp_src_1 ! udpsink port=5002                          
\
                  rtpbin.send_rtcp_src_1 ! udpsink port=5003 sync=false
async=false    \
                  udpsrc port=5007 ! rtpbin.recv_rtcp_sink_1
3) Receiver launch command: gst-launch-1.0 -ve  rtpbin name=rtpbin                                        
\
     udpsrc name=v_0
caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264"
\
             port=5000 ! rtpbin.recv_rtp_sink_0                              
\
             rtpbin. ! rtph264depay ! avdec_h264 ! autovideosink \
      udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0                              
\
      rtpbin.send_rtcp_src_0 ! udpsink port=5005 sync=false async=false      
\
     udpsrc
caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS,encoding-params=(string)2"
\
             port=5002 ! rtpbin.recv_rtp_sink_1                              
\
         rtpbin. ! rtpopusdepay ! opusdec ! autoaudiosink                          
\
      udpsrc port=5003 ! rtpbin.recv_rtcp_sink_1                              
\
      rtpbin.send_rtcp_src_1 ! udpsink port=5007 sync=false async=false
4) Results of ffprobe on the original audi/video file:

ffprobe version N-95660-gfc7b6d5574 Copyright (c) 2007-2019 the FFmpeg
developers
  built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
  configuration: --enable-cuda-nvcc --enable-cuvid --enable-nvenc
--enable-nonfree --enable-libnpp --extra-cflags=-I/usr/local/cuda/include
--extra-ldflags=-L/usr/local/cuda/lib64 --enable-shared
  libavutil      56. 35.101 / 56. 35.101
  libavcodec     58. 60.100 / 58. 60.100
  libavformat    58. 34.101 / 58. 34.101
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 66.100 /  7. 66.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
Input #0, matroska,webm, from
'../h264-video/gravity_audio_opus_video_h264.mkv':
  Metadata:
    title           : Gravity - 2K Trailer
    ARTIST          : Warner Bros.
    MAJOR_BRAND     : mp42
    MINOR_VERSION   : 0
    COMPATIBLE_BRANDS: mp42isomavc1
    DATE            : 2013
    GENRE           : Trailer
    ENCODER         : Lavf58.34.101
  Duration: 00:02:27.07, start: 0.000000, bitrate: 2127 kb/s
    Stream #0:0: Video: h264 (Main), yuv420p(progressive), 2048x858 [SAR 1:1
DAR 1024:429], 23.98 fps, 23.98 tbr, 1k tbn, 47.95 tbc (default)
    Metadata:
      ENCODER         : Lavc58.60.100 h264_nvenc
      DURATION        : 00:02:26.980000000
    Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      ENCODER         : Lavc58.60.100 opus
      DURATION        : 00:02:27.072000000

What am I screwing up on?
thanks a lot for the help.
regards
vk




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Confusing Gstreamer behavior

veek
I was able to solve this problem and the solution is posted here in the hope
that it can be of help to someone else.

Server
-------------
gst-launch-1.0 -v rtpbin name=rtpbin filesrc
location=./gravity_audio_opus_video_h264.mkv ! matroskademux name=demux
demux.video_0 ! decodebin ! x264enc ! rtph264pay ! rtpbin.send_rtp_sink_0 \
            demux.audio_0 ! decodebin ! opusenc ! rtpopuspay !
rtpbin.send_rtp_sink_1 \
            rtpbin.send_rtp_src_0 ! udpsink port=5000 sync=true async=false \
            rtpbin.send_rtp_src_1 ! udpsink port=5002 sync=true async=false \
            rtpbin.send_rtcp_src_0 ! udpsink port=5001 sync=false async=false
udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0  \
  rtpbin.send_rtcp_src_1 ! udpsink port=5003 sync=false async=false udpsrc
port=5007 ! rtpbin.recv_rtcp_sink_1

Client
----------
gst-launch-1.0 -v rtpbin name=rtpbin \
udpsrc caps="application/x-rtp, media=video, clock-rate=90000,
encoding-name=H264" port=5000 ! rtpbin.recv_rtp_sink_0 rtpbin. !
rtph264depay ! decodebin ! videoconvert ! autovideosink sync=false \
udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 rtpbin.send_rtcp_src_0 ! udpsink
port=5005 host=127.0.0.1 sync=false async=false \
udpsrc
caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS"
port=5002 ! rtpbin.recv_rtp_sink_1 rtpbin. ! rtpopusdepay ! decodebin !
audioconvert ! queue ! autoaudiosink sync=true    \
udpsrc port=5003 ! rtpbin.recv_rtcp_sink_1    \
rtpbin.send_rtcp_src_1 ! udpsink port=5007 sync=false async=false




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Confusing Gstreamer behavior

Michael Gruner
Hi Veela

Thanks for coming back with the solutions.

On the same note, I was just wondering why aren’t you using RTSP instead? It will handle all these nuances underneath.

Michael

> On Dec 15, 2019, at 08:55, veek <[hidden email]> wrote:
>
> I was able to solve this problem and the solution is posted here in the hope
> that it can be of help to someone else.
>
> Server
> -------------
> gst-launch-1.0 -v rtpbin name=rtpbin filesrc
> location=./gravity_audio_opus_video_h264.mkv ! matroskademux name=demux
> demux.video_0 ! decodebin ! x264enc ! rtph264pay ! rtpbin.send_rtp_sink_0 \
>        demux.audio_0 ! decodebin ! opusenc ! rtpopuspay !
> rtpbin.send_rtp_sink_1 \
>        rtpbin.send_rtp_src_0 ! udpsink port=5000 sync=true async=false \
>        rtpbin.send_rtp_src_1 ! udpsink port=5002 sync=true async=false \
>        rtpbin.send_rtcp_src_0 ! udpsink port=5001 sync=false async=false
> udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0  \
>  rtpbin.send_rtcp_src_1 ! udpsink port=5003 sync=false async=false udpsrc
> port=5007 ! rtpbin.recv_rtcp_sink_1
>
> Client
> ----------
> gst-launch-1.0 -v rtpbin name=rtpbin \
> udpsrc caps="application/x-rtp, media=video, clock-rate=90000,
> encoding-name=H264" port=5000 ! rtpbin.recv_rtp_sink_0 rtpbin. !
> rtph264depay ! decodebin ! videoconvert ! autovideosink sync=false \
> udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 rtpbin.send_rtcp_src_0 ! udpsink
> port=5005 host=127.0.0.1 sync=false async=false \
> udpsrc
> caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS"
> port=5002 ! rtpbin.recv_rtp_sink_1 rtpbin. ! rtpopusdepay ! decodebin !
> audioconvert ! queue ! autoaudiosink sync=true    \
> udpsrc port=5003 ! rtpbin.recv_rtcp_sink_1    \
> rtpbin.send_rtcp_src_1 ! udpsink port=5007 sync=false async=false
>
>
>
>
> --
> Sent from: http://gstreamer-devel.966125.n4.nabble.com/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Confusing Gstreamer behavior

veek
Hi Michael,
An excellent question. Does ignorance work as a reason? I'll check it out



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel