Streaming 1080p24 H264/AVC and MPEG4/AAC, lip synchronization using gstrtpbin, unable to link in video_00? (bug?)

Martin Lund martin.lund at ixonos.com
Thu May 24 07:51:45 PDT 2012


Hi Wim,

Thank you for the speedy response. Latest git does indeed seem to fix
this particular issue.

Now the server pipelines seems to play correctly. Next, I need to
configure and verify the clients.

/Martin

On Thu, May 24, 2012 at 3:42 PM, Martin Lund <martin.lund at ixonos.com> wrote:
> Hi,
>
> I'll have to take your word for it since I'm not familiar with the
> gstreamer internals.
>
> I'll try to build and test latest from git to see how that works out.
>
> For now, is there possibly a way to bypass this bug in my gst-launch command?
>
> The bug thread you are referring to talks about bypass by forcing
> capsfilters but I assume this is meant for the client side so I'm not
> sure it applies to my server side of things?
>
> /Martin
>
> On Thu, May 24, 2012 at 3:14 PM, Wim Taymans <wim.taymans at gmail.com> wrote:
>> On 05/24/2012 03:02 PM, Martin Lund wrote:
>>>
>>> Hi,
>>
>>
>> It sounds like https://bugzilla.gnome.org/show_bug.cgi?id=672019 that was
>> just fixed.
>>
>> Wim
>>>
>>>
>>> I'm on a mission to have a server stream a file containing H264/AVC
>>> and MPEG4/AAC to two other hosts. One of these hosts will play the
>>> video stream and the other will play the audio stream. I need A/V lip
>>> syncrhonization between these two hosts so as far as I understand I
>>> need to use the gstrtpbin plugin in order to utilize the RTP/RTCP
>>> protocol to obtain this kind of synchronization.
>>>
>>> I'm playing around with gst-launch to test the RTP/RTCP stuff. My
>>> server pipeline is based on the RTP reference example found here:
>>>
>>> http://cgit.freedesktop.org/gstreamer/gst-plugins-good/tree/tests/examples/rtp/server-v4l2-H264-alsasrc-PCMA.sh
>>>
>>> This is the basic server pipeline I'm trying to configure (assumes it
>>> all running on the same server, ie. no "host=" stuff):
>>>
>>> gst-launch
>>>                 \
>>>     gstrtpbin name=rtpbin
>>>                 \
>>>         filesrc location=battleship.mp4 ! qtdemux name=demux
>>>                 \
>>>             demux.video_00 ! queue ! 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_00 ! queue ! rtpmp4apay !
>>> 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
>>>
>>> This fails to link in the video stream?
>>>
>>> With debug enabled it spews out various errors regarding
>>> demux:video_00 and queue0 unable to connect:
>>>
>>> GST_ELEMENT_PADS gstutils.c:1101:gst_element_get_compatible_pad:
>>> finding pad in queue0 compatible with demux:video_00
>>> GST_PADS gstutils.c:1032:gst_pad_check_link: trying to link
>>> demux:video_00 and queue0:sink
>>> GST_CAPS gstpad.c:2336:gst_pad_get_caps_reffed:<demux:video_00>  get pad
>>> caps
>>> GST_CAPS gstpad.c:2246:gst_pad_get_caps_unlocked:<demux:video_00>  get pad
>>> caps
>>> GST_CAPS gstpad.c:2250:gst_pad_get_caps_unlocked:<demux:video_00>
>>> dispatching to pad getcaps function
>>> GST_CAPS gstpad.c:2263:gst_pad_get_caps_unlocked:<demux:video_00>  pad
>>> getcaps returned video/x-h264, stream-format=(string)avc,
>>> alignment=(string)au, level=(string)4, profile=(string)high,
>>>
>>> codec_data=(buffer)01640028ffe1001c67640028acd94078067b016a020202800000030080015f90078c18cb01000668ebe08cb22c,
>>> width=(int)1920, height=(int)816, framerate=(fraction)45000/1877,
>>> pixel-aspect-ratio=(fraction)1/1
>>> GST_ELEMENT_PADS
>>> gstutils.c:1195:gst_element_get_compatible_pad:<queue0>  Could not find
>>> a compatible unlinked always pad to link to demux:video_00, now
>>> checking request pads
>>> ...
>>> GST_ELEMENT_PADS gstutils.c:1829:gst_element_link_pads_full: no link
>>> possible from demux:video_00 to queue0
>>> default gstutils.c:2037:gst_element_link_pads_filtered: Could not link
>>> pads: demux:video_00 - queue0:(null)
>>>
>>>
>>> Yet, the same troublesome pipeline elements is tested to work
>>> perfectly for direct streaming when not in combination with gstrtpbin:
>>>
>>> gst-launch filesrc location=battleship.mp4 ! qtdemux name=demux \
>>> demux.video_00 ! queue ! rtph264pay ! udpsink port=3000 \
>>> demux.audio_00 ! queue ! rtpmp4apay ! udpsink port=5000
>>>
>>> So obviously demux:video_00 and queue0:sink can actually connect.
>>>
>>> What I don't understand why my server pipeline does not work in
>>> combination with gstrtpbin... Might this be a bug or am I missing
>>> something here?
>>>
>>> I'm testing on Ubuntu 12.04, gstreamer: base 0.10.36, good 0.10.31,
>>> bad 0.10.22.3.
>>>
>>> Any help/input is appreciated.
>>>
>>> Br, Martin
>>>
>>> P.s. The clip I'm using is found here
>>> http://download4.dvdloc8.com/trailers/divxdigest/battleship-trailer2.zip
>>> _______________________________________________
>>> gstreamer-devel mailing list
>>> gstreamer-devel at lists.freedesktop.org
>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>>
>>
>> _______________________________________________
>> gstreamer-devel mailing list
>> gstreamer-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


More information about the gstreamer-devel mailing list