m3u8

Parser and generator of M3U8-playlists for Apple HLS. Library for Go language.

BSD-3-CLAUSE License

Stars
1.2K
Committers
37

Bot releases are visible (Hide)

m3u8 - Support custom tags Latest Release

Published by leikao about 5 years ago

Feature:

  1. Support custom tags (#138 #82 )

Thanks to @mjneil for contributing.

m3u8 - Major release, add support for more tags and attributes

Published by leikao about 5 years ago

This is a major release version after v0.10 since 2017, added lots of features and bugfix.

Features:

  1. Add reader support for EXT-OATCLS-SCTE35 and EXT-X-CUE-OUT (#81)
  2. Make comma optional in #EXTINF when strict mode is false (#85, #84)
  3. Encode Segment.Map attribute (#94)
  4. Add support for AVERAGE-BANDWIDTH, FRAME-RATE and HDCP-LEVEL attributes of EXT-X-STREAM-INF tag (#112, #132)
  5. Add support for EXT-X-DISCONTINUITY-SEQUENCE tag (#112)
  6. Add writer support of the SeqId attribute of MediaSegment (#124)
  7. Add support for EXT-X-INDEPENDENT-SEGMENTS tag (#128, #103)
  8. Add support for EXT-X-START tag (#131)

Bugfix:

  1. Omit URI for Key method NONE (#95, #68)
  2. Increase sequence number in Slide() method automatically (#113, #72)
  3. Decode got error while #EXT-X-PROGRAM-DATE-TIME exists in media playlist (#121, #120)
  4. Add new line after EXT-X-DISCONTINUITY-SEQUENCE (#129)

Thanks to @bradleyfalzon @andyborn @0xApe @soldiermoth @mlafeldt @eric @soldiermoth @mihail812 @agparadiso @leikao for contributing.

m3u8 - Improved date/time parsing and closed captions

Published by grafov over 7 years ago

The release introduces two features:

  • Add closed captions to writer. Refs #79, #80 Thanks to @mbowBC for this contribution.

  • Customizable TimeParse() function allows broad support for time formats beside RFC3339. It allows parse playlists for devices that not strictly conform dates and times standards. By default it uses FullTimeParse() that implemented parsing that follows date representations from ISO/IEC 8601:2004.
    Refs #78 Thanks to @md2k for this contribution.

  • Comments slightly polished.

m3u8 - License changed to BSD

Published by grafov almost 8 years ago

This release has no new features or bugfixes. It just moved license of the project from GNU GPL to BSD. See the new LICENSE in the root of the repo. Previous release v0.8 and the versions below available under GNU GPL v.3.

More explanations in the issue #71 and in the release notes of the previous release. If you have complains please create an issue or drop me a mail.

m3u8 - The bugfixes and upcoming license changing

Published by grafov almost 8 years ago

There are a lot of bugfixes and optimizations.

This is the last release under GNU GPL license. As decided by the maintainers of the project the code from the next release will be covered by BSD 3-clause license (#71). It will allow usage of m3u8 package in any kind of projects include the projects under proprietary licenses. It is no problem for GPL projects as conditions of GPL license allows include the code under BSD-licenses.

So the next release v0.9 will be with the same code but include the new license. The code of the version 0.8 and below can be used under GNU GPL.

There are a lot of contributions was made since the project started. As initial author of the project I very glad that this piece of the code was useful and attracted other people for participating. I am very grateful for all the participants for their contribution to the project! So if the conditions of BSD license totally inappropriate for a contributor and he don't want to see his name among authors of the code under non-GPL license then he can create the issue with a complain or just drop me a mail. Then I will remove the patches from this contributor and replace them with a new code under my authorship. I not sure how it is correct from the view of law but m3u8 is amateur project for me so I don't want spend many time for license questions. It is the code only matters.

m3u8 - A lot of fixes + SCTE tag support

Published by grafov over 8 years ago

Features:

#42, #41, #40 SCTE35 tag support
#39, #37 Starting serNo from 0 not from 1.

Bugfixes:

#43 Fix #36 Media Playlist Set* methods modifying wrong segment
#38 Fixed bug of writing vod playlist

m3u8 - Apply keyformat and keyformatversions per segment

Published by grafov almost 9 years ago

Small fix by @bradleyfalzon:

  • Use segment Keyformat and Keyformatversions on MediaPlaylist.Encode() #32

No API changed.

m3u8 - Non-standard tag Name

Published by grafov about 9 years ago

Minor feature added:

  • Support Name attribute in #EXT-X-STREAM-INF tag #30

Bugfix:

  • Append Args if playlist already has query params #31

No changes in API.

m3u8 - Keyformat version encoding

Published by grafov about 9 years ago

Minor features added:

  • Added encoding for KEYFORMATVERSIONS for AES encrypted playlists (refs #28)
  • Added copyright for library authors referenced to AUTHORS file.

No API changes.

m3u8 - One more fix

Published by grafov about 9 years ago

  • Fixed unnecessary playlist version change in SetDefaultKey (pull request #24 related to #23)

No API changes.

m3u8 - Version 0.5 One fix + one feature

Published by grafov about 9 years ago

  • Produce the SUBTITLES attribute for EXT-X-STREAM-INF entries #20
  • Fix playlist version in SetKey method #23

No API changes.

m3u8 - Release v0.4.2. Bugfixes

Published by grafov over 9 years ago

  • Fix alt duplicates #19 by @zshenker
  • A small fix with set version in playlists

No API changes.

m3u8 - Release 0.4.1. Broken tests

Published by grafov over 9 years ago

  • Fix alt duplicates #19 by @zshenker

No API changes.

m3u8 - Release 0.4. Bugfixes and code cleanup

Published by grafov over 9 years ago

Patches by @dennwc #16, @zshenker #17 and @Mistobaan #18 with fixes:

  • Fix handling of multiple codecs in params string
  • Fixed Audio group name being incorrectly set to the Video group name
  • When using Alternatives (which writes an EXT-X-MEDIA-TAG, master manifest version should be 4 (not let at the default of 3)
  • RESOLUTION should not be in quotes (mediastreamvalidator will complain about this, and some players will have issues)
  • LANGUAGE was not being included in the EXT-X-MEDIA tag
  • TYPE & AUTOSELECT should not be quoted, they are considered enums
  • Add check for parameter existence in EXTINF parsing.

No API changes.

m3u8 - Release 0.3.2

Published by grafov over 9 years ago

API changes:

  • Added Count of mediaplaylist segments to public API (#4). It was planned to merge for 0.3.0 but was missed.

Features was introduced in a major v0.3 release:

  • Support all tags up to version 5 of the protocol
  • Added support of tags EXT-X-I-FRAME-STREAM-INF, EXT-X-I-FRAMES-ONLY, EXT-X-MAP

New tags support was not well tested yet, please see #15.

m3u8 - Release 0.3.1

Published by grafov over 9 years ago

Fixes:

  • Fixed bug #7 reported by THE108
  • Fixed bug with inverted DurationAsInt() logic

API changes:

  • DurationAsInt(true) now set duration values to integers as expected from a function declaration.

Features was introduced in a major v0.3 release:

  • Support all tags up to version 5 of the protocol
  • Added support of tags EXT-X-I-FRAME-STREAM-INF, EXT-X-I-FRAMES-ONLY, EXT-X-MAP

New tags support was not well tested yet, please see #15.

m3u8 - Release 0.3

Published by grafov over 9 years ago

Features support of all tags up to version 5 of the protocol and minor fixes:

  • Support of tags EXT-X-I-FRAME-STREAM-INF, EXT-X-I-FRAMES-ONLY, EXT-X-MAP
  • Merged with URI-quotes patch made by Jamie Stackhouse #10

New tags support was not well tested yet, please see #15.

m3u8 - Release 0.2.2

Published by grafov almost 10 years ago

Changes:

m3u8 - Version 0.2.1. Bugfixes for parsing

Published by grafov almost 10 years ago

Fixed bugs with parsing media-playlists:

  • #EXT-X-PLAYLIST-TYPE parsing broken #12 (fixed with #13)
  • Fixing typos in media alternatives parsing #9

No new functions. Update from 0.2 recommended.

m3u8 -

Published by grafov over 10 years ago

Ready for release v0.2