problems in streaming H.264 content using gstreamer

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

problems in streaming H.264 content using gstreamer

Agarwal, Lomesh
I am trying to stream/render H.264 content using gstreamer on two Ubuntu machines. Here is what I run on the server (streaming) side -
gst-launch -v gstrtpbin name=rtpbin filesrc location=h264.ts ! \
                 queue2 max-size-buffers=65535 ! \
                 rtpmp2tpay ! \
                 queue2 max-size-buffers=65535 ! \
                 rtpbin.send_rtp_sink_0 \
                 { rtpbin.send_rtp_src_0 ! udpsink host=192.168.1.2 port=5000 } \
                 { rtpbin.send_rtcp_src_0 ! udpsink host=192.168.1.2 port=5001 sync=false async=false } \
                 { udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0 }
On the receiver side I run following command to render it -
gst-launch -v gstrtpbin name=rtpbin udpsrc port=5000 caps="application/x-rtp,media=video,clock-rate=90000,encoding-name=mpegts" ! \
                 rtpbin.recv_rtp_sink_0 rtpbin. ! \
                 identity sync=true silent=true ! \
                 rtpmp2tdepay ! \
                 flutsdemux name=demuxer \
                     demuxer. ! queue max-size-buffers=0 max-size-time=0 ! flumcaacdec ! audioconvert ! volume volume=10 ! autoaudiosink \
                 demuxer. ! queue max-size-buffers=0 max-size-time=0 ! fluh264dec! autovideosink \
                 udpsrc port=5001 ! \
                 rtpbin.recv_rtcp_sink_0 \
                 rtpbin.send_rtcp_src_0 ! \
                 udpsink port=5005 sync=false async=false -t
h264.ts is a MPEG TS file with aac audio format and H.264 video format. I am using commercial versions of Fluendo plugins.
On the receiver side I see jerky video and after some time video stops. I am using a quad core machine on the receiver side.
If I repeat the same experiment using tcpserversink (in place of rtp bin) plugin on the streamer side and tcpclientsrc on the receiver side, everything works ok.
Am I missing setting some rtp bin property or is it a problem with rtp bin? Can someone suggest some experiment which can narrow down the problem?

Thanks,
Lomesh

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: problems in streaming H.264 content using gstreamer

Wim Taymans
On Thu, 2008-08-28 at 11:38 -0700, Agarwal, Lomesh wrote:

> I am trying to stream/render H.264 content using gstreamer on two Ubuntu machines. Here is what I run on the server (streaming) side -
> gst-launch -v gstrtpbin name=rtpbin filesrc location=h264.ts ! \
>                  queue2 max-size-buffers=65535 ! \
>                  rtpmp2tpay ! \
>                  queue2 max-size-buffers=65535 ! \
>                  rtpbin.send_rtp_sink_0 \
>                  { rtpbin.send_rtp_src_0 ! udpsink host=192.168.1.2 port=5000 } \
>                  { rtpbin.send_rtcp_src_0 ! udpsink host=192.168.1.2 port=5001 sync=false async=false } \
>                  { udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0 }
> On the receiver side I run following command to render it -
> gst-launch -v gstrtpbin name=rtpbin udpsrc port=5000 caps="application/x-rtp,media=video,clock-rate=90000,encoding-name=mpegts" ! \
>                  rtpbin.recv_rtp_sink_0 rtpbin. ! \
>                  identity sync=true silent=true ! \
>                  rtpmp2tdepay ! \
>                  flutsdemux name=demuxer \
>                      demuxer. ! queue max-size-buffers=0 max-size-time=0 ! flumcaacdec ! audioconvert ! volume volume=10 ! autoaudiosink \
>                  demuxer. ! queue max-size-buffers=0 max-size-time=0 ! fluh264dec! autovideosink \
>                  udpsrc port=5001 ! \
>                  rtpbin.recv_rtcp_sink_0 \
>                  rtpbin.send_rtcp_src_0 ! \
>                  udpsink port=5005 sync=false async=false -t
> h264.ts is a MPEG TS file with aac audio format and H.264 video format. I am using commercial versions of Fluendo plugins.
> On the receiver side I see jerky video and after some time video stops. I am using a quad core machine on the receiver side.
> If I repeat the same experiment using tcpserversink (in place of rtp bin) plugin on the streamer side and tcpclientsrc on the receiver side, everything works ok.
> Am I missing setting some rtp bin property or is it a problem with rtp bin? Can someone suggest some experiment which can narrow down the problem?
>

2 problems, timestamps are not correctly set on the sender side (use
mpegtsparse in front of the payloader?). The second problem is that the
demuxer might not correctly preserve timing information on the receiver.
Also: http://bugzilla.gnome.org/show_bug.cgi?id=548979 

Wim


> Thanks,
> Lomesh
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: problems in streaming H.264 content using gstreamer

Agarwal, Lomesh


-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Wim Taymans
Sent: Friday, August 29, 2008 1:58 AM
To: Discussion of the development of GStreamer
Subject: Re: [gst-devel] problems in streaming H.264 content using gstreamer

On Thu, 2008-08-28 at 11:38 -0700, Agarwal, Lomesh wrote:

> I am trying to stream/render H.264 content using gstreamer on two Ubuntu machines. Here is what I run on the server (streaming) side -
> gst-launch -v gstrtpbin name=rtpbin filesrc location=h264.ts ! \
>                  queue2 max-size-buffers=65535 ! \
>                  rtpmp2tpay ! \
>                  queue2 max-size-buffers=65535 ! \
>                  rtpbin.send_rtp_sink_0 \
>                  { rtpbin.send_rtp_src_0 ! udpsink host=192.168.1.2 port=5000 } \
>                  { rtpbin.send_rtcp_src_0 ! udpsink host=192.168.1.2 port=5001 sync=false async=false } \
>                  { udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0 }
> On the receiver side I run following command to render it -
> gst-launch -v gstrtpbin name=rtpbin udpsrc port=5000 caps="application/x-rtp,media=video,clock-rate=90000,encoding-name=mpegts" ! \
>                  rtpbin.recv_rtp_sink_0 rtpbin. ! \
>                  identity sync=true silent=true ! \
>                  rtpmp2tdepay ! \
>                  flutsdemux name=demuxer \
>                      demuxer. ! queue max-size-buffers=0 max-size-time=0 ! flumcaacdec ! audioconvert ! volume volume=10 ! autoaudiosink \
>                  demuxer. ! queue max-size-buffers=0 max-size-time=0 ! fluh264dec! autovideosink \
>                  udpsrc port=5001 ! \
>                  rtpbin.recv_rtcp_sink_0 \
>                  rtpbin.send_rtcp_src_0 ! \
>                  udpsink port=5005 sync=false async=false -t
> h264.ts is a MPEG TS file with aac audio format and H.264 video format. I am using commercial versions of Fluendo plugins.
> On the receiver side I see jerky video and after some time video stops. I am using a quad core machine on the receiver side.
> If I repeat the same experiment using tcpserversink (in place of rtp bin) plugin on the streamer side and tcpclientsrc on the receiver side, everything works ok.
> Am I missing setting some rtp bin property or is it a problem with rtp bin? Can someone suggest some experiment which can narrow down the problem?
>

2 problems, timestamps are not correctly set on the sender side (use
mpegtsparse in front of the payloader?).
[Agarwal, Lomesh] adding mpegtsparse doesn't help.
 The second problem is that the
demuxer might not correctly preserve timing information on the receiver.
Also: http://bugzilla.gnome.org/show_bug.cgi?id=548979
[Agarwal, Lomesh] any pointers on how to resolve or workaround this bug?

Wim


> Thanks,
> Lomesh
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: problems in streaming H.264 content using gstreamer

Agarwal, Lomesh
In reply to this post by Wim Taymans


-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of Wim Taymans
Sent: Friday, August 29, 2008 1:58 AM
To: Discussion of the development of GStreamer
Subject: Re: [gst-devel] problems in streaming H.264 content using gstreamer

On Thu, 2008-08-28 at 11:38 -0700, Agarwal, Lomesh wrote:

> I am trying to stream/render H.264 content using gstreamer on two Ubuntu machines. Here is what I run on the server (streaming) side -
> gst-launch -v gstrtpbin name=rtpbin filesrc location=h264.ts ! \
>                  queue2 max-size-buffers=65535 ! \
>                  rtpmp2tpay ! \
>                  queue2 max-size-buffers=65535 ! \
>                  rtpbin.send_rtp_sink_0 \
>                  { rtpbin.send_rtp_src_0 ! udpsink host=192.168.1.2 port=5000 } \
>                  { rtpbin.send_rtcp_src_0 ! udpsink host=192.168.1.2 port=5001 sync=false async=false } \
>                  { udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0 }
> On the receiver side I run following command to render it -
> gst-launch -v gstrtpbin name=rtpbin udpsrc port=5000 caps="application/x-rtp,media=video,clock-rate=90000,encoding-name=mpegts" ! \
>                  rtpbin.recv_rtp_sink_0 rtpbin. ! \
>                  identity sync=true silent=true ! \
>                  rtpmp2tdepay ! \
>                  flutsdemux name=demuxer \
>                      demuxer. ! queue max-size-buffers=0 max-size-time=0 ! flumcaacdec ! audioconvert ! volume volume=10 ! autoaudiosink \
>                  demuxer. ! queue max-size-buffers=0 max-size-time=0 ! fluh264dec! autovideosink \
>                  udpsrc port=5001 ! \
>                  rtpbin.recv_rtcp_sink_0 \
>                  rtpbin.send_rtcp_src_0 ! \
>                  udpsink port=5005 sync=false async=false -t
> h264.ts is a MPEG TS file with aac audio format and H.264 video format. I am using commercial versions of Fluendo plugins.
> On the receiver side I see jerky video and after some time video stops. I am using a quad core machine on the receiver side.
> If I repeat the same experiment using tcpserversink (in place of rtp bin) plugin on the streamer side and tcpclientsrc on the receiver side, everything works ok.
> Am I missing setting some rtp bin property or is it a problem with rtp bin? Can someone suggest some experiment which can narrow down the problem?
>

2 problems, timestamps are not correctly set on the sender side (use
mpegtsparse in front of the payloader?). The second problem is that the
demuxer might not correctly preserve timing information on the receiver.
Also: http://bugzilla.gnome.org/show_bug.cgi?id=548979
[Agarwal, Lomesh] can somebody explain the second problem? I don't understand how does this absolute time versus running time makes a difference?

Wim


> Thanks,
> Lomesh
>
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/gstreamer-devel