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 06:42:11 PDT 2012


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