carlanton / m3u8-parser

A simple HLS playlist parser for Java
MIT License
184 stars 60 forks source link

#EXT-X-DATERANGE limited to 1 per media segment #37

Open NFLjmarkarian opened 3 years ago

NFLjmarkarian commented 3 years ago

First off, great library, it's very useful!

I have an issue where I need to add multiple dateRange objects within a playlist. (For simplicity, let's say it's an example where I have 1 media segment that is 10 seconds long, and I want to fire timed meta data at the 0 second mark and the 5 second mark).

Currently, there is no way to do this, as dateRange is a single attribute of MediaSegmentBuilder. I am only able to associate 1 dateRange object with 1 Media Segment.

According to the spec, I think dateRange should not be an attribute of MediaSegmentBuilder, but instead, MediaPlaylist.Builder and should be a collection: https://datatracker.ietf.org/doc/html/rfc8216#section-4.3.2.7

Alternatively, I considered two other solutions: 1) Change the dateRange attribute on MediaSegmentBuilder to be a collection or 2) Allow the creation of Media Segments without a duration/uri (which is currently required), and create Media Segment containers that are essentially empty except for 1 date range attribute.

What are your thoughts?

carlanton commented 3 years ago

Hi!

Thank you for your feedback. I haven't really used that tag myself but if you think it make sense to have multiple tags for a single segment, let's do it! :)

EXT-X-DATERANGE is defined under "4.3.2 Media Segment Tags", why do you think that it it's better to store it in MediaPlaylist.Builder?

I think I want to go with option 1 (change it to a collection), but add methods to keep backwards compatibility. Not sure if I understand option 2 though...

Cheers, Anton

wishygupta commented 2 years ago

@carlanton Thank you for making this library. Have been very useful. Even I have this requirement where I need to add multiple date range. Having a collection for date range would be much better. Any plans on it? @NFLjmarkarian how did you do it?