videojs / videojs-contrib-hls

HLS library for video.js
http://videojs.github.io/videojs-contrib-hls/
Other
2.84k stars 791 forks source link

VideoJS HLS player starts playing Live stream after skipping some fragments #1444

Closed varadarajana closed 5 years ago

varadarajana commented 5 years ago

Description

I am trying to play an m3u8 file in live playback mode. I am using the HLS Videojs player for the same. There are around 8 video fragments of 4 seconds each. Whenever the player starts it plays 6th fragment.

Sources

Here is the source m3u8 file:

EXTM3U

EXT-X-VERSION:3

EXT-X-TARGETDURATION:4

EXT-X-MEDIA-SEQUENCE:0

EXTINF:3.8400000000000034,

live15Aug_ffout0.ts

EXTINF:3.8400000000000034,

live15Aug_ffout1.ts

EXTINF:3.8400000000000034,

live15Aug_ffout2.ts

EXTINF:5.759999999999998,

live15Aug_ffout3.ts

EXTINF:3.8399999999999963,

live15Aug_ffout4.ts

EXTINF:3.8400000000000034,

live15Aug_ffout5.ts

EXTINF:3.8400000000000034,

live15Aug_ffout6.ts

EXTINF:3.8400000000000034,

live15Aug_ffout7.ts

Steps to reproduce

Explain in detail the exact steps necessary to reproduce the issue.

  1. The m3u8 file along with fragments is placed in the virtual directory of an IIS server
  2. A demo player HTML file is written which contains the Videojs includes
  3. the media source is pointed to the internet location of the m3u8 file.

Results

Expected

I expect the content to play from live15Aug_ffout0.ts

Error output

But the player plays from live15Aug_ffout6.ts

Additional Information

If i include the E#EXT-X-ENDLIST tag then the sequence is working fine.

videojs-contrib-hls version

what version of videojs-contrib-hls does this occur with? videojs-contrib-hls 5.12.2

videojs version

what version of videojs does this occur with? video.js 6.6.3

Browsers

Platforms

Other Plugins

Other JavaScript

gesinger commented 5 years ago

Hey @varadarajana , for live videos (those without an EXT-X-ENDLIST tag), the player starts at the "safe live point," ~3 target durations from the end of the playlist. Thus, this should be expected behavior. If you want to play back starting from the beginning of the playlist, you can seek to the beginning, or you can change the live window for which segments the server shows at any given point. Hope this helps.

varadarajana commented 5 years ago

@gesinger Thank you, I added Sequence tag in that start of every playlist, pointing to the sequence number that is the first in the file. Now it works fine.

I have another question. I am using EXT-X-CUE tags while creating the playlist. Am I correct in assuming that that CUE-OUT and CUE-IN tags have to be in a single live playlist, can there be CUE-OUT in previous list and CUE-IN in current. The reason I ask this question is that I am forced to wait for CUE-OUT and CUE-IN in a single playlist so this induces a latency in refresh.