HLS stream playback is not smooth with 1.11.2 (vlc, ffplay ok)

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

HLS stream playback is not smooth with 1.11.2 (vlc, ffplay ok)

rland
Hi,I'm working  with 1.11.2, when playing some HLS stream,
obviously can  feel the playback is not smooth, it should be drop frame.
----
....
01-01 08:04:00.591   944  5883 W [gstbasesink.c:2901] <basesink> warning: A lot of buffers are being dropped.
....
01-01 08:04:02.042   944  5881 V [gstvideodecoder.c:3121] <videodecoder> accepting buffer inside segment: 0:00:02.043000000 0:00:02.084708333 seg 0:00:00.000000000 to 99:99:99.999999999 time 0:00:00.000000000
01-01 08:04:02.042   944  5881 D [gstvideodecoder.c:3155] <videodecoder> Dropping frame due to QoS. start:0:00:02.043000000 deadline:0:00:02.043000000 earliest_time:0:00:05.011717403
...

----
On Android, just drop frames, the screen gives a slight sense of jitter.
On PC, more serious, after about 45s,video frame freezes/hangs...

Here is one of the HLS stream:
https://drive.google.com/drive/folders/0B8t5E5lSOxhHbU1ERndPN3lFLU0?usp=sharing

Drop frames should not be performance-related,
 video specifications are as follows:
------
 Duration: 00:03:22.00, start: 567.273000, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1200x504, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0

------
I extracted the source file audio pts with ffmpeg, the interval between the two frames are about 4000

ffprobe -show_frames -select_streams a:0 -i  http://10.9.44.131/issures/iqiyi/index.m3u8 > ~/Desktop/audio.info
------
                 pts           diff(PTS(n) - PTS(n-1))
pkt_pts 51057810 4230
pkt_pts 51062040 4140
pkt_pts 51066180 4230
pkt_pts 51070410 4140
pkt_pts 51074550 4140
pkt_pts 51078690 4230
pkt_pts 51082920 4140
pkt_pts 51087060 4230
pkt_pts 51091290 4140
pkt_pts 51095430 4230
pkt_pts 51099660 4140
pkt_pts 51103800 4140
pkt_pts 51107940 4230
pkt_pts 51112170 4140
pkt_pts 51116310 4230
pkt_pts 51120540 4140
pkt_pts 51124680 4230
pkt_pts 51128910 4140
pkt_pts 51133050 4230
pkt_pts 51137280 4140
pkt_pts 51141420 4140
pkt_pts 51145560 4230
pkt_pts 51149790 4140
pkt_pts 51153930 4230
pkt_pts 51158160 4140
pkt_pts 51162300 4230
pkt_pts 51166530 4140
pkt_pts 51170670 4230
pkt_pts 51174900 4140
....


-------
,But gstreamer tsdemux.c gst_ts_demux_record_pts   out of the pts is like this:
-----
01-02 01:18:21.227  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51153930 at offset 152092      
01-02 01:18:21.403  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51229170 at offset 217892      
 
   <= diff= 51229170-51153930 = 75240

01-02 01:18:21.608  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51287670 at offset 280308      
   <= diff= 51287670 - 51229170 = 58500
01-02 01:18:21.649  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51316920 at offset 294220
   <= diff = 51316920 - 51287670 = 29250      
01-02 01:18:21.652  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51321150 at offset 294972      
   <= 51321150 - 51316920 = 4230
01-02 01:18:21.674  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51333660 at offset 304184      
01-02 01:18:21.678  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51337890 at offset 305124      
01-02 01:18:21.681  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51342030 at offset 305876      
01-02 01:18:21.804  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51404760 at offset 352876      
01-02 01:18:21.926  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51463260 at offset 392544      
01-02 01:18:21.933  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51467400 at offset 393296      
01-02 01:18:21.957  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51471630 at offset 400816      
01-02 01:18:21.960  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51475770 at offset 401568      
01-02 01:18:21.963  4289  4863 tsdemux.c:1973] <tsdemux> pid 0x0101 raw pts:51480000 at offset 402320      

-----

Vlc and ffplay can smooth play, where is a problem gstreamer?May it be timestamp related? Or gstreamer can not properly handle EXT-X-DISCONTINUITY?

Plz help me ,thinks.




Reply | Threaded
Open this post in threaded view
|

Re: HLS stream playback is not smooth with 1.11.2 (vlc, ffplay ok)

rland
Ask some questions, in tsdemux, the calculation of the timestamp
is associated with the pcr, if the file itself pcr is not continuous,
or the interval is too large, will lead to gstreamer A/V synchronization issure?
[In  https://drive.google.com/drive/folders/0B8t5E5lSOxhHbU1ERndPN3lFLU0?usp=sharing ,
Some ts file  two adjacent pcr interval of 8s, which should be regarded as a problem well?

1. PCR:15314130000(00:09:27.190) PTS:51054570 DTS:51047100
2. PCR:15488685000(00:09:33.655) PTS:51636420 DTS:51628950  <= diff 6s
3. PCR:15713892000(00:09:41.996) PTS:52387200 DTS:52379640  <= diff 8s
...

]

Is it possible, do not use pcr to recalculate timestamp, just rely on pts / dts in the
file as a basis for handling synchronization?


Reply | Threaded
Open this post in threaded view
|

Re: HLS stream playback is not smooth with 1.11.2 (vlc, ffplay ok)

Sebastian Dröge-3
Hi,

Please file a bug about this with a sample stream at
  https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=gst-plugins-bad

Also include information about in which version it was working before,
if any.


Thanks!

On Fri, 2017-03-17 at 01:22 -0700, lucky chou wrote:

> Ask some questions, in tsdemux, the calculation of the timestamp 
> is associated with the pcr, if the file itself pcr is not
> continuous, 
> or the interval is too large, will lead to gstreamer A/V
> synchronization
> issure?
> [In 
> https://drive.google.com/drive/folders/0B8t5E5lSOxhHbU1ERndPN3lFLU0?u
> sp=sharing
> ,
> Some ts file  two adjacent pcr interval of 8s, which should be
> regarded as a
> problem well?
>
> 1. PCR:15314130000(00:09:27.190) PTS:51054570 DTS:51047100
> 2. PCR:15488685000(00:09:33.655) PTS:51636420 DTS:51628950  <= diff
> 6s
> 3. PCR:15713892000(00:09:41.996) PTS:52387200 DTS:52379640  <= diff
> 8s
> ...
>
> ]
>
> Is it possible, do not use pcr to recalculate timestamp, just rely on
> pts /
> dts in the 
> file as a basis for handling synchronization? 
>
>
>
>
>
>
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble
> .com/HLS-stream-playback-is-not-smooth-with-1-11-2-vlc-ffplay-ok-
> tp4682224p4682274.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (981 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: HLS stream playback is not smooth with 1.11.2 (vlc, ffplay ok)

rland
Reply | Threaded
Open this post in threaded view
|

Re: HLS stream playback is not smooth with 1.11.2 (vlc, ffplay ok)

rland
In reply to this post by Sebastian Dröge-3
On PC,  Play this stream:
https://drive.google.com/drive/folders/0B8t5E5lSOxhHbU1ERndPN3lFLU0?usp=sharing ,
I got the following error message:
---
...
0:00:41.080701679 28909 0x7f59fc022aa0 ERROR                  libav :0:: no frame!


Android using mediacodec, it will not appear this error,just  playback
 is not smooth, audio and video slightly out of sync (fps = 23, can be clearly felt).
But if we forced use of ffmpeg to decode on  android, then there will be the same error:
-----
03-29 15:04:26.211 21013 21194 E  [:0] <libav> no frame!
03-29 15:04:26.211 21013 21186 W[gstavviddec.c:1695] <libav> avdec_h264: decoding error (len: -1094995529, have_data: 0)