Hi,
I'm developing simple rtsp server and client. Simplified pipeline on the server side looks like: filesrc ! decodebin caps=video/x-h264 ! rtph264pay ! rtpbin (rtpbin is then connected to udpsinks for RTP, RTCP and udpsrc for RTCP). I used Totem to play the stream and everything looks to be working fine. Stream is played properly from start to end. However, I do have some problems with seek command. Lets say, one of the ten seek commands brakes down the player, sometimes it works, sometimes it doesn't. After calling gst_element_seek on the server side, there is a glitch in the player (followed by some artifacts in the rendered video) and then I get lots of "non-existing PPS referenced" on the debug console. Sadly it won't stabilize itself, it's broken for good until I restart the player. Secondly, I have implemented also a simple client, where pipeline is like this: rtpbin ! rtph264depay ! decodebin2 ! autovideosink This workd nicely for few first seconds. After that I again get lots of "non-existing PPS referenced" (no seek is performed!). Moreover, dump from rtph264depay to filesink produces exactly the same binary data as in the input file on the server side, so it is not a data corruption issue. I would be very happy if someone could explain to me what can cause "non-existing PPS referenced" because I don't even know where to start with this thing. Thanks in advance, Jaroslaw _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel smime.p7s (10K) Download Attachment |
Hello Jaroslaw,
The problem is that in case of streaming if sps & pps is lost no decoder can decode the H264 video, hence you getting the error "non-existing PPS referenced". To fix this please set config-interval property of rtph264pay , so that sps &pps are sent again and again. This will resolve your issue . Cheers Kapil 2011/3/10 Jarosław Przybyłowicz <[hidden email]> Hi, -- www.mediamagictechnologies.com (Gstreamer, ffmpeg, Red5, Streaming) twitter handle: @gst_kaps http://www.linkedin.com/in/kapilagrawal _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hello Kapil,
Many thanks for your reply. I believe that this may resolve my issue with seek problem. Still I am wondering, why totem works properly with no config-interval set on server side, while my client would need that (when no seek is done)? Best Regards, Jaroslaw W dniu 2011-03-10 16:53, Kapil Agrawal pisze: > Hello Jaroslaw, > > The problem is that in case of streaming if sps & pps is lost no > decoder can decode the H264 video, hence you getting the error > "non-existing PPS referenced". > > To fix this please set config-interval property of rtph264pay , so > that sps &pps are sent again and again. This will resolve your issue . > > Cheers > Kapil > _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
>> To fix this please set config-interval property of rtph264pay , so
>> that sps &pps are sent again and again. This will resolve your issue . We have noticed that this does not work for H.264 5.1; the video gets corrupted; we haven't looked at it yet; it's somewhere in our queue to have a look at it. Maybe 5.1 changes the SPS/PPS data and we never correct for this; but this is just a (very) wild stab in the dark. -- greetz, marc The test of intelligent tinkering is to save all the parts. -- Aldo Leopold crichton 2.6.26 #1 PREEMPT Tue Jul 29 21:17:59 CDT 2008 GNU/Linux _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel signature.asc (204 bytes) Download Attachment |
Still, this does not explain why totem is behaving well, while my client
is not :) W dniu 2011-03-10 21:19, Marc Leeman pisze: > We have noticed that this does not work for H.264 5.1; the video gets > corrupted; we haven't looked at it yet; it's somewhere in our queue to > have a look at it. > > Maybe 5.1 changes the SPS/PPS data and we never correct for this; but > this is just a (very) wild stab in the dark. > > > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
I just explained why you were getting the "non-existing PPS referenced"
at client side you might try what using gst-launch playbin2 uri=....... -v Internally totem uses playbin2, so above command should help you figure out why totem works. Also Without the Debug logs & the video it be very hard for anyone to suggest proper reason. - Kapil 2011/3/11 Jarosław Przybyłowicz <[hidden email]> Still, this does not explain why totem is behaving well, while my client is not :) -- www.mediamagictechnologies.com (Gstreamer, ffmpeg, Red5, Streaming) twitter handle: @gst_kaps http://www.linkedin.com/in/kapilagrawal _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
Again, thanks for your reply! I believe that I would be able fix my client if totem is working properly. But still I have a small issue when trying to perform a seek command with totem. Setting config-interval helped me a bit, now "non-existing PPS referenced" errors are stabilizing. After a small hicup they won't appear later on. But still, after they appear (even though it's a finite number of errors - probably until config-interval elapses) Totem develops a timestamping problem on videosink and this problem lasts untill end of the playback. 0:00:38.570667963 5892 0x14df100 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:38.571139064 5892 0x14df100 ERROR ffmpeg :0:: reference picture missing during reorder 0:00:38.571174222 5892 0x14df100 ERROR ffmpeg :0:: Missing reference picture 0:00:38.580773091 5892 0x14df100 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:38.590665497 5892 0x14df100 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:38.831743615 5892 0x1481e80 WARN basesink gstbasesink.c:2739:gst_base_sink_is_too_late:<autovideosink0-actual-sink-xvimage> warning: A lot of buffers are being dropped. 0:00:38.831768421 5892 0x1481e80 WARN basesink gstbasesink.c:2739:gst_base_sink_is_too_late:<autovideosink0-actual-sink-xvimage> warning: There may be a timestamping problem, or this computer is too slow. .... .... .... .... .... 0:00:41.834620475 5892 0x1481e80 WARN basesink gstbasesink.c:2739:gst_base_sink_is_too_late:<autovideosink0-actual-sink-xvimage> warning: A lot of buffers are being dropped. 0:00:41.834642335 5892 0x1481e80 WARN basesink gstbasesink.c:2739:gst_base_sink_is_too_late:<autovideosink0-actual-sink-xvimage> warning: There may be a timestamping problem, or this computer is too slow. If "non-existing PPS referenced" does not show up, timestamping is ok as well. Is there anything I can do about it on the server side? Best regards, Jaroslaw On 03/11/2011 08:13 AM, Kapil Agrawal wrote: > I just explained why you were getting the "non-existing PPS referenced" > > at client side you might try what using gst-launch playbin2 uri=....... -v > Internally totem uses playbin2, so above command should help you > figure out why totem works. > > Also Without the Debug logs & the video it be very hard for anyone to > suggest proper reason. > > - Kapil _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel smime.p7s (10K) Download Attachment |
In reply to this post by Kapil Agrawal
When it comes to my broken client, I tried a gst-launch with pipeline
that "simulates" things that happen in code. So here it goes: server pipeline gst-launch-0.10 gstrtpbin name=rtpbin filesrc location=/home/versor/pirates4-tlr1_h1080p.mov ! decodebin2 caps=video/x-h264 ! rtph264pay config-interval=1 ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink port=5000 client pipeline gst-launch-0.10 --gst-debug-level=2 gstrtpbin name=rtpbin udpsrc caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=\"J01AKKkYDwDLYA1AQEBtsK173wE\\=\\,KN4JyA\\=\\=\", payload=96" port=5000 ! rtpbin.recv_rtp_sink_0 rtpbin. ! rtph264depay ! decodebin2 ! autovideosink It behaves exactly same way, plays video well for first few seconds and just after that I get errors in log 0:00:00.579418412 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579475690 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579491473 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579505878 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579520028 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579533926 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579547878 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579561737 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579575746 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579589750 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579603696 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579617630 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579631531 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579645570 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579659381 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579673226 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579687301 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579701199 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579715262 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579729469 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579743424 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579757263 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579771167 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579784966 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:00.579798858 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:05.440395062 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.440484100 30223 0x275ed90 ERROR ffmpeg :0:: number of reference frames exceeds max (probably corrupt input), discarding one 0:00:05.456588320 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.475654377 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.498713693 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.529932566 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.567931166 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.611954462 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.651577010 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced 0:00:05.780057524 30223 0x275ed90 ERROR ffmpeg :0:: non-existing PPS referenced I tried to look at the gst-launch with playbin2 and increased verbosity to check if my pipeline is different, but it seems that it is constructed in the same way. What am I missing? Thanks for help, Jaroslaw On 03/10/2011 04:53 PM, Kapil Agrawal wrote: > Hello Jaroslaw, > > The problem is that in case of streaming if sps & pps is lost no > decoder can decode the H264 video, hence you getting the error > "non-existing PPS referenced". > > To fix this please set config-interval property of rtph264pay , so > that sps &pps are sent again and again. This will resolve your issue . > > Cheers > Kapil _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel smime.p7s (10K) Download Attachment |
I've managed to fix the problem. It appears that udpsrc is dropping some
packets with default buffer-size. Setting to 500KB made it a lot better (any ideas on the optimal values?) Still there is an issue with timestamping, sometimes when packets are dropped on udp, videosink is starting to drop frames (really lot of them) this won't stabilize itself and continues until playback is finished. What can I do about this? Best regards, Jaroslaw On 03/11/2011 03:53 PM, Jarosław Przybyłowicz wrote: > When it comes to my broken client, I tried a gst-launch with pipeline > that "simulates" things that happen in code. > > So here it goes: > server pipeline > > gst-launch-0.10 gstrtpbin name=rtpbin filesrc > location=/home/versor/pirates4-tlr1_h1080p.mov ! decodebin2 > caps=video/x-h264 ! rtph264pay config-interval=1 ! > rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink port=5000 > > client pipeline > gst-launch-0.10 --gst-debug-level=2 gstrtpbin name=rtpbin udpsrc > caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, > encoding-name=(string)H264, > sprop-parameter-sets=\"J01AKKkYDwDLYA1AQEBtsK173wE\\=\\,KN4JyA\\=\\=\", payload=96" > port=5000 ! rtpbin.recv_rtp_sink_0 rtpbin. ! rtph264depay ! decodebin2 > ! autovideosink > > It behaves exactly same way, plays video well for first few seconds > and just after that I get errors in log > > 0:00:00.579418412 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579475690 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579491473 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579505878 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579520028 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579533926 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579547878 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579561737 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579575746 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579589750 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579603696 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579617630 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579631531 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579645570 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579659381 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579673226 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579687301 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579701199 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579715262 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579729469 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579743424 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579757263 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579771167 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579784966 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:00.579798858 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:05.440395062 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.440484100 30223 0x275ed90 ERROR ffmpeg > :0:: number of reference frames exceeds max (probably corrupt input), > discarding one > 0:00:05.456588320 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.475654377 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.498713693 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.529932566 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.567931166 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.611954462 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.651577010 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > 0:00:05.780057524 30223 0x275ed90 ERROR ffmpeg > :0:: non-existing PPS referenced > > I tried to look at the gst-launch with playbin2 and increased > verbosity to check if my pipeline is different, but it seems that it > is constructed in the same way. > What am I missing? > > Thanks for help, > > Jaroslaw > > On 03/10/2011 04:53 PM, Kapil Agrawal wrote: >> Hello Jaroslaw, >> >> The problem is that in case of streaming if sps & pps is lost no >> decoder can decode the H264 video, hence you getting the error >> "non-existing PPS referenced". >> >> To fix this please set config-interval property of rtph264pay , so >> that sps &pps are sent again and again. This will resolve your issue . >> >> Cheers >> Kapil > > > > _______________________________________________ > gstreamer-devel mailing list > [hidden email] > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel smime.p7s (10K) Download Attachment |
Free forum by Nabble | Edit this page |