Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft #176

Open
wants to merge 117 commits into
base: master
Choose a base branch
from
Open

Draft #176

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
7b147f0
add waffle.io badge
waffle-iron Aug 26, 2014
939d753
Merge pull request #6 from waffle-iron/master
grafov Aug 26, 2014
3f7e626
Badge moved.
grafov Aug 26, 2014
bd6526c
Badge moved.
grafov Aug 26, 2014
d540e38
Fixing typos.
itsjamie Nov 5, 2014
055626a
Adding quotes to URI to make the external API nicer.
itsjamie Nov 5, 2014
2d03e9b
Move the writing of the no cache header to inside playlist type event.
itsjamie Nov 5, 2014
e50ea99
Fix EXT-X-PLAYLIST-TYPE parsing
kz26 Nov 6, 2014
e67b026
Merge pull request #9 from jamie-stackhouse/typo-fixes
grafov Nov 9, 2014
007a2bf
Merge pull request #13 from kz26/master
grafov Nov 9, 2014
098402f
Merge branch 'master' into draft
grafov Nov 9, 2014
3326a36
Merge branch 'allow-cache-no' of https://github.com/jamie-stackhouse/…
grafov Nov 14, 2014
986784a
Update docs to version 7 of the protocol
grafov Jan 10, 2015
6b163f6
Change development rules
grafov Jan 11, 2015
2b6e962
Merge branch 'URI-quotes' into draft
grafov Jan 11, 2015
c2a76e1
Realize support for #EXT-X-I-FRAME-STREAM-INF and #EXT-X-I-FRAMES-ONLY
grafov Jan 11, 2015
55d5c58
Fix markdown formatting of a table in docs
grafov Jan 11, 2015
c282690
Remove unfinished docs section
grafov Jan 11, 2015
c493a39
Add support for Stringer interface
grafov Jan 11, 2015
1deeac0
Follow naming convention for examples
grafov Jan 11, 2015
f70185e
Add unit test for MasterPlaylist.String()
grafov Jan 11, 2015
3dc926b
Update copyleft info
grafov Feb 1, 2015
1b10275
Add EXT-X-MAP tag support
grafov Feb 1, 2015
030cf87
Update docs
grafov Feb 1, 2015
404f61e
Fix inversed logic of DuratiofAsInt()
grafov Feb 1, 2015
6732a16
Fix #7 EXT-X-DISCONTINUITY parsing error
grafov Feb 1, 2015
bd7bf4d
Fix name of example to conform name policy
grafov Feb 1, 2015
1bf8e5b
Update docs in code
grafov Feb 1, 2015
2bd01c3
Update date in doc
grafov Feb 2, 2015
40d2845
Merge pull request #4 from Makombo/patch-2
grafov Feb 2, 2015
8732ff3
Change link to more complete Ruby library
grafov Feb 8, 2015
ec42556
Fix handling of multiple codecs in params string
dennwc Feb 12, 2015
937e49a
Fixing Handling of the Audio property on VariantParams to write out A…
Feb 12, 2015
ad851ee
Fixing the HLS version when using alternatives. Fixing Resolution, it…
Feb 14, 2015
5b2425f
Fixing check on if Alternatives is being used on the VariantParams
Feb 14, 2015
204f10c
Fixing setting the version, adding a test and fixing the resolution n…
Feb 14, 2015
7f921c3
Adding LANGUAGE to EXT-X-MEDIA tag.
Feb 14, 2015
fca304f
Type should not be quoted.
Feb 14, 2015
7a02999
Fixing AUTOSELECT
Feb 14, 2015
6d91003
bug fix
Mistobaan Mar 12, 2015
50a00e7
Merge pull request #1 from zshenker/fix-encode-audio-group
Mar 13, 2015
faabffa
Making sure that alternatives EXT-X-MEDIA tags only get written once.
Mar 13, 2015
012d504
Fixing prevention of duplicates.
Mar 13, 2015
ec39221
fix bug
Mistobaan Mar 21, 2015
651d571
Merge pull request #17 from zshenker/fix-encode-audio-group
grafov Apr 5, 2015
a55a54f
Merge pull request #18 from Mistobaan/master
grafov Apr 5, 2015
dd81060
Set empty string as default title for EXTINF
grafov Apr 5, 2015
9416506
Add file with list of authors
grafov Apr 5, 2015
69e8bbe
Add small note about authors list
grafov Apr 5, 2015
2359838
Merge pull request #16 from dennwc/master
grafov Apr 5, 2015
496e03b
Add new author to the list
grafov Apr 5, 2015
2e6266e
Fix a little typo in authors list
grafov Apr 5, 2015
be558c0
Merge pull request #19 from zshenker/fix-alt-duplicates
grafov May 6, 2015
d5a7da2
Add note about draft17
grafov May 16, 2015
72fd350
Fix set version for ext-x-media
grafov May 16, 2015
e297cba
Fix version set
grafov May 16, 2015
46f09ba
Produce the SUBTITLES attribute for EXT-X-STREAM-INF entries that spe…
May 20, 2015
23d5bdb
Merge pull request #20 from skidder/generate-subtitle-attribute-for-v…
grafov May 24, 2015
353ca12
fix playlist version in SetKey method
Aug 14, 2015
facecdd
Merge pull request #23 from THE108/master
grafov Aug 15, 2015
7052917
Fixed unnecessary playlist version change in SetDefaultKey
Aug 18, 2015
8a35b4b
Merge pull request #24 from juliancooper/setdefault-key-version-fix
grafov Aug 22, 2015
4a417c5
Authors list updated
Aug 22, 2015
50702b2
this fixes the issue-25 but there is still work to do or the library …
iivarih Sep 1, 2015
6acbc3b
Merge pull request #26 from iivarih/issues-25
grafov Sep 1, 2015
ef69200
Fix typo
AlekSi Sep 12, 2015
4ad8282
Merge pull request #27 from AlekSi/patch-1
grafov Sep 12, 2015
837611c
Changes to add sampleaes tags
sinkers Sep 24, 2015
6164ad1
Removing Set and Get
sinkers Sep 28, 2015
8ee4978
Updated quotes on KEYFORMAT and KEYFORMATVERSIONS
sinkers Oct 2, 2015
0c0306a
Merge pull request #28 from bcasinclair/master
grafov Oct 4, 2015
e6a07eb
Merge branch 'master' into draft
Oct 4, 2015
a65d5bf
Add copyright of library authors
Oct 4, 2015
2467a66
Add copyright of library authors
Oct 4, 2015
3b37d15
Support Name attribute in #EXT-X-STREAM-INF tag
bradleyfalzon Oct 15, 2015
76df961
Append Args if playlist already has query params
bradleyfalzon Oct 15, 2015
535475c
Merge pull request #30 from bradleyfalzon/name-stream-inf
grafov Oct 17, 2015
c84e6d9
Merge pull request #31 from bradleyfalzon/existing-query
grafov Oct 17, 2015
ac1fd13
Merge branch 'master' into draft
Oct 17, 2015
be34e44
Use segment Keyformat and Keyformatversions on MediaPlaylist.Encode()
bradleyfalzon Dec 7, 2015
45b0e3f
Merge pull request #32 from bradleyfalzon/segment-key
grafov Jan 9, 2016
79f6a15
Add new contributors to the list
Jan 9, 2016
a949dd9
fix typo
shawnps Feb 6, 2016
9095b2c
fix typo
shawnps Feb 6, 2016
11af315
Merge pull request #34 from shawnps/patch-2
grafov Feb 7, 2016
e98338e
Merge pull request #33 from shawnps/patch-1
grafov Feb 7, 2016
707a08a
Increment pls version when either KEYFORMAT or KEYFORMATVERSIONS is set
Feb 15, 2016
b65f348
Remove normalize SeqNo. Allow starting 0
Mar 4, 2016
07eeb53
Parsing SCTE35 tag from playlist
Mar 9, 2016
bf7791a
Merge pull request #39 from hori-ryota/feature/modify-default-seqno
bradleyfalzon Mar 15, 2016
887abb5
Merge pull request #35 from bradleyfalzon/key-versions
bradleyfalzon Mar 15, 2016
3146aef
Using a different struct for all SCTE attributes
Mar 16, 2016
394d315
len func applied on correct value
Mar 16, 2016
336e130
Removing unnecessary wrapping
Mar 16, 2016
25d13fe
Making use of decodeParamsLine func to extract attributes and values …
Mar 16, 2016
0114bd5
Added test cases for reader for scte35
Mar 16, 2016
db4ff05
Adding in AUTHORS file
Mar 16, 2016
7009ef2
Merge branch 'master' of https://github.com/grafov/m3u8
Mar 17, 2016
027badc
Merge pull request #40 from amagimedia/master
bradleyfalzon Mar 17, 2016
249b2ef
Support EXT-SCTE when encoding playlists
bradleyfalzon Mar 20, 2016
47e27b4
Merge pull request #41 from bradleyfalzon/scte-writer
bradleyfalzon Mar 22, 2016
6221288
SCTE35 tag correction
Mar 22, 2016
2265621
Merge pull request #42 from amagimedia/master
bradleyfalzon Mar 22, 2016
7f82306
Fix #36 Media Playlist Set* methods modifying wrong segment
bradleyfalzon Apr 13, 2016
fd7ef46
Merge pull request #43 from bradleyfalzon/36-set-methods
grafov Apr 24, 2016
043cb45
Add new author to the list.
Apr 24, 2016
ad32b47
Fix typos.
Apr 24, 2016
5b9e95a
Remove complicated rules about `draft` branch because this branch not…
Apr 24, 2016
6d47017
Remove stillmaintained.com badge because this service seems dead.
Apr 24, 2016
85b9413
Add names of maintainers.
Apr 24, 2016
e34965e
Add media playlist AppendSegment(*MediaSegment) method (#44)
bradleyfalzon Apr 26, 2016
cfabe24
Add goreportcard.com badge.
Apr 26, 2016
ade25f8
Minor formatting fix.
Apr 28, 2016
fb07fd8
Add links to FOSS projects where lib used.
Apr 28, 2016
304751b
Fix EXT-X-MEDIA parsing.
Apr 30, 2016
c98e584
Update info about IETF drafts.
May 1, 2016
cce0a8e
Merge branch 'master' into draft
May 2, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
There are many persons contribute their code (include small patches)
to the project. They listed below in an alphabetical order:

- Alexander (Axel) I.Grafov <[email protected]>
- Andrey Chernov <[email protected]>
- Andrew Sinclair <[email protected]>
- Bradley Falzon <[email protected]>
- Denys Smirnov <[email protected]>
- Fabrizio (Misto) Milo <[email protected]>
- Hori Ryota <[email protected]>
- Jamie Stackhouse <[email protected]>
- Julian Cooper <[email protected]>
- Kz26
- Makombo
- Scott Kidder <[email protected]>
- Vishal Kumar Tuniki <[email protected]>
- Zac Shenker <[email protected]>

If you want to be added to this list (or removed for any reason)
just open an issue about it.
85 changes: 56 additions & 29 deletions M3U8.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,33 @@
<!--*- mode:markdown;mode:orgtbl -*-->

<!---
Part of M3U8 parser & generator library.
This doc explaines M3U8 tag occurence in different versions
of HLS protocol and their status in Go library.

Copyleft 2013-2015 Alexander I.Grafov aka Axel <[email protected]>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

ॐ तारे तुत्तारे तुरे स्व
-->

M3U8 tags cheatsheet
====================

The table above describes tags of M3U8, their occurence in playlists of different types and their support status
in the go-library. Current library version is 0.2.
in the go-library. Current stable version of the library is 0.2.

Legend for playlist types:

Expand All @@ -13,22 +37,23 @@ Legend for playlist types:
<!--- Note: markdown table below prepared in Emacs Orgmode and automatically converted to Github Markdown format -->

<!--- BEGIN RECEIVE ORGTBL specs -->
| Tag | Occured in | Proto ver. | Lib ver. |
| Tag | Occured in | Proto ver | In Go lib since |
|---|---|---|---|
| EXT-X-ALLOW-CACHE | MED | 1 | 0.1 |
| EXT-X-BYTERANGE | MED | 4 | 0.1 |
| EXT-X-DISCONTINUITY | MED | 1 | 0.2 |
| EXT-X-DISCONTINUITY-SEQUENCE | MED | 6 | |
| EXT-X-ENDLIST | MED | 1 | 0.1 |
| EXT-X-I-FRAME-STREAM-INF | MAS | 4 | |
| EXT-X-I-FRAMES-ONLY | MED | 4 | |
| EXT-X-I-FRAME-STREAM-INF | MAS | 4 | 0.3 |
| EXT-X-I-FRAMES-ONLY | MED | 4 | 0.3 |
| EXT-X-INDEPENDENT-SEGMENTS | MAS | 6 | |
| EXT-X-KEY | MED | 1 | 0.1 |
| EXT-X-MAP | MED | 5 | |
| EXT-X-MAP | MED | 5 | 0.3 |
| EXT-X-MEDIA | MAS | 4 | 0.1 |
| EXT-X-MEDIA-SEQUENCE | MED | 1 | 0.1 |
| EXT-X-PLAYLIST-TYPE | MED | 3 | 0.2 |
| EXT-X-PROGRAM-DATE-TIME | MED | 1 | 0.2 |
| EXT-X-SESSION-DATA | MAS | 7 | |
| EXT-X-START | MAS | 6 | |
| EXT-X-STREAM-INF | MAS | 1 | 0.1 |
| EXT-X-TARGETDURATION | MED | 1 | 0.1 |
Expand All @@ -39,36 +64,37 @@ Legend for playlist types:

<!---
#+ORGTBL: SEND specs orgtbl-to-gfm
| Tag | Occured in | Proto ver. | Lib ver. |
|------------------------------+------------+------------+----------|
| | | <l> | <l> |
| EXT-X-ALLOW-CACHE | MED | 1 | 0.1 |
| EXT-X-BYTERANGE | MED | 4 | 0.1 |
| EXT-X-DISCONTINUITY | MED | 1 | 0.2 |
| EXT-X-DISCONTINUITY-SEQUENCE | MED | 6 | |
| EXT-X-ENDLIST | MED | 1 | 0.1 |
| EXT-X-I-FRAME-STREAM-INF | MAS | 4 | |
| EXT-X-I-FRAMES-ONLY | MED | 4 | |
| EXT-X-INDEPENDENT-SEGMENTS | MAS | 6 | |
| EXT-X-KEY | MED | 1 | 0.1 |
| EXT-X-MAP | MED | 5 | |
| EXT-X-MEDIA | MAS | 4 | 0.1 |
| EXT-X-MEDIA-SEQUENCE | MED | 1 | 0.1 |
| EXT-X-PLAYLIST-TYPE | MED | 3 | 0.2 |
| EXT-X-PROGRAM-DATE-TIME | MED | 1 | 0.2 |
| EXT-X-START | MAS | 6 | |
| EXT-X-STREAM-INF | MAS | 1 | 0.1 |
| EXT-X-TARGETDURATION | MED | 1 | 0.1 |
| EXT-X-VERSION | MAS | 2 | 0.1 |
| EXTINF | MED | 1 | 0.1 |
| EXTM3U | MAS,MED | 1 | 0.1 |
| Tag | Occured in | Proto ver | In Go lib since |
|------------------------------+------------+-----------+-----------------|
| | | <l> | <l> |
| EXT-X-ALLOW-CACHE | MED | 1 | 0.1 |
| EXT-X-BYTERANGE | MED | 4 | 0.1 |
| EXT-X-DISCONTINUITY | MED | 1 | 0.2 |
| EXT-X-DISCONTINUITY-SEQUENCE | MED | 6 | |
| EXT-X-ENDLIST | MED | 1 | 0.1 |
| EXT-X-I-FRAME-STREAM-INF | MAS | 4 | 0.3 |
| EXT-X-I-FRAMES-ONLY | MED | 4 | 0.3 |
| EXT-X-INDEPENDENT-SEGMENTS | MAS | 6 | |
| EXT-X-KEY | MED | 1 | 0.1 |
| EXT-X-MAP | MED | 5 | 0.3 |
| EXT-X-MEDIA | MAS | 4 | 0.1 |
| EXT-X-MEDIA-SEQUENCE | MED | 1 | 0.1 |
| EXT-X-PLAYLIST-TYPE | MED | 3 | 0.2 |
| EXT-X-PROGRAM-DATE-TIME | MED | 1 | 0.2 |
| EXT-X-SESSION-DATA | MAS | 7 | |
| EXT-X-START | MAS | 6 | |
| EXT-X-STREAM-INF | MAS | 1 | 0.1 |
| EXT-X-TARGETDURATION | MED | 1 | 0.1 |
| EXT-X-VERSION | MAS | 2 | 0.1 |
| EXTINF | MED | 1 | 0.1 |
| EXTM3U | MAS,MED | 1 | 0.1 |
-->


IETF drafts notes
-----------------

[IETF](http://ietf.org) document currently in Draft status. Different versions of the document introduce changes of HLS protocol playlist formats. Last version of the HLS protocol is version 6.
[IETF](http://ietf.org) document currently in Draft status. Different versions of the document introduce changes of HLS protocol playlist formats. Latest version of the HLS protocol is version 7.

http://tools.ietf.org/html/draft-pantos-http-live-streaming

Expand All @@ -78,3 +104,4 @@ http://tools.ietf.org/html/draft-pantos-http-live-streaming
* Version 4 of the HLS protocol described in draft07-draft08.
* Version 5 of the HLS protocol described in draft09-draft11.
* Version 6 of the HLS protocol described in draft12-draft13.
* Version 7 of the HLS protocol described in draft14-draft19.
59 changes: 27 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ M3U8
This is a most complete opensource library for parsing and generating of M3U8 playlists
used in HTTP Live Streaming (Apple HLS) for internet video translations.

Features are:
M3U8 is simple text format and parsing library for it must be simple too. It did not offer
ways to play HLS or handle playlists over HTTP. So library features are:

* Realized HLS specs up to version 3 of the protocol.
* Support HLS specs up to version 5 of the protocol.
* Parsing and generation of master-playlists and media-playlists.
* Autodetect input streams as master or media playlists.
* Offer structures for keeping playlists metadata.
* Encryption keys support for usage with DRM systems like Verimatrix etc.
* Encryption keys support for use with DRM systems like [Verimatrix](http://verimatrix.com) etc.
* Support for non standard [Google Widevine](http://www.widevine.com) tags.

Copyleft Alexander I.Grafov aka Axel <[email protected]>

Library licensed under GPLv3.
Library licensed under GPLv3. Copyleft by library authors (see [AUTHORS](AUTHORS)).

Install
-------
Expand All @@ -24,12 +24,12 @@ Install

or get releases from https://github.com/grafov/m3u8/releases

Documentation
Documentation [![Go Walker](http://gowalker.org/api/v1/badge)](http://gowalker.org/github.com/grafov/m3u8)
-------------

Package online documentation (examples included) available at:

* http://gowalker.org/github.com/grafov/m3u8 [![Go Walker](http://gowalker.org/api/v1/badge)](http://gowalker.org/github.com/grafov/m3u8)
* http://gowalker.org/github.com/grafov/m3u8
* http://godoc.org/github.com/grafov/m3u8

Supported by the HLS protocol tags and their library support explained in [M3U8 cheatsheet](M3U8.md).
Expand Down Expand Up @@ -99,51 +99,46 @@ Related links
Library usage
-------------

This library successfully used in streaming software developed for my employer and tested with
generating of VOD and Live streams and parsing of Widevine Live streams. Also library usage noted
in opensource software:
This library was successfully used in streaming software developed for company where I worked several
years ago. It was tested then in generating of VOD and Live streams and parsing of Widevine Live streams.
Also the library used in opensource software so you may look at these apps for usage examples:

* [Stream Surfer](http://streamsurfer.org) monitoring software.
* [gohls](https://github.com/kz26/gohls) — HLS downloader.
* [HLS downloader](https://github.com/kz26/gohls)
* [Another HLS downloader](https://github.com/Makombo/hlsdownloader)
* [HLS utils](https://github.com/archsh/hls-utils)

M3U8 parsing/generation in other languages
------------------------------------------

* https://github.com/globocom/m3u8 in Python
* https://github.com/zencoder/m3uzi in Ruby
* https://github.com/sethdeckard/m3u8 in Ruby
* https://github.com/Jeanvf/M3U8Paser in Objective C
* https://github.com/tedconf/node-m3u8 in Javascript
* http://sourceforge.net/projects/m3u8parser/ in Java
* https://github.com/karlll/erlm3u8 in Erlang

Project status [![Is maintained?](http://stillmaintained.com/grafov/m3u8.png)](http://stillmaintained.com/grafov/m3u8)
---------------
Project status [![Go Report Card](https://goreportcard.com/badge/grafov/m3u8)](https://goreportcard.com/report/grafov/m3u8)
--------------

In development.
[![Build Status](https://travis-ci.org/grafov/m3u8.png?branch=master)](https://travis-ci.org/grafov/m3u8) [![Build Status](https://drone.io/github.com/grafov/m3u8/status.png)](https://drone.io/github.com/grafov/m3u8/latest)

[![Build Status](https://travis-ci.org/grafov/m3u8.png?branch=master)](https://travis-ci.org/grafov/m3u8) for last commit from `master` or `draft` branches.
Project maintainers:

[![Build Status](https://drone.io/github.com/grafov/m3u8/status.png)](https://drone.io/github.com/grafov/m3u8/latest) for `master` branch.
* Bradley Falzon @bradleyfalzon
* Alexander Grafov @grafov

Development rules:

* Changes firstly applied to `draft` branch then after minimal testing with unit tests it merged with `master` branch.
* Code in `draft` branch may be in inconsistent state.
* After complete testing and one week usage with my prober for HLS [Stream Surfer](http://streamsurfer.org) it may be released as new library version (minor version number increased).
* Each new API call or tag accompanied by at least one unit test until it released in a new library version.
* Major version number increased on API changes or new tags (until v1.0 this rule is not applied).
* I reserve the right to break the development rules if my life plans make me do it.
* After complete testing and one week usage with my prober for HLS [Stream Surfer](http://streamsurfer.org) it may be released as new library version.
* Each new API call or M3U8 tag accompanied by at least with one unit test till new release (this rule will be apply after v1.0).
* Versioning scheme follows http://semver.org rules (but versions till v1.0 not support bacward compatibility, see release notes carefully).

Project dashboard: https://waffle.io/grafov/m3u8
Project dashboard: https://waffle.io/grafov/m3u8 [![Stories in Ready](https://badge.waffle.io/grafov/m3u8.png?label=ready&title=Ready)](https://waffle.io/grafov/m3u8)

Roadmap
-------

For version 0.3:

* Support tags from versions 4 and 5 of the specs.

For version 1.0:
To version 1.0:

* Support for all M3U8 tags up to latest version of specs.
* Support all M3U8 tags up to latest version of specs.
* Code coverage by unit tests more than 90%
15 changes: 10 additions & 5 deletions TODO.org
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
* Planned features
** DONE [#A] Support EXT-X-PROGRAM-DATE-TIME
** DONE [#A] Support for EXT-X-PLAYLIST-TYPE :proto3:
** [#A] Support for EXT-X-I-FRAMES-ONLY :proto4:
** [#A] Support for EXT-X-I-FRAME-STREAM-INF :proto4:
** [#A] Support for EXT-X-MAP :proto5:
** [#A] Support for EXT-X-START :proto6:
** DONE [#A] Support for EXT-X-I-FRAMES-ONLY :proto4:
** DONE [#A] Support for EXT-X-I-FRAME-STREAM-INF :proto4:
** DONE [#A] Support for EXT-X-MAP :proto5:
** TODO Add samples from iOS Devs Lib
https://developer.apple.com/library/ios/technotes/tn2288/_index.html
** [#A] Support for EXT-X-START :proto6:
** [#A] Support for EXT-X-DISCONTINUITY-SEQUENCE :proto6:
** [#B] Autoexpand option for playlist buffers
** [#B] CR/LF protection: characters within a quoted-string MUST NOT include linefeed (0xA), carriage-return (0xD) or double quote (0x22). :draft12:validation:
Expand All @@ -34,4 +36,7 @@
** [#C] Add examples of playlists with #EXT-X-KEY
** [#C] Cover each API call with unit test
** [#C] Cover each tag with unit test
** Merge media playlists
* Planned for M3U8 utils
** Merge media playlists
** Rename segments by mask in a playlist

16 changes: 8 additions & 8 deletions doc.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Package M3U8 is parser & generator library for Apple HLS.

// Copyleft 2013-2014 Alexander I.Grafov aka Axel <[email protected]>
// Copyleft 2013-2015 Alexander I.Grafov aka Axel <[email protected]>

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
Expand All @@ -19,18 +19,18 @@

/*

This is a most complete opensource library for parsing and generating of M3U8 playlists
used in HTTP Live Streaming (Apple HLS) for internet video translations.
This is a most complete opensource library for parsing and generating of M3U8 playlists used in HTTP Live Streaming (Apple HLS) for internet video translations.

Features are:
M3U8 is simple text format and parsing library for it must be simple too. It did not offer ways to play HLS or handle playlists over HTTP. Library features are:

* Support HLS specs up version 3 of the protocol.
* Support HLS specs up to version 5 of the protocol.
* Parsing and generation of master-playlists and media-playlists.
* Offers structures for keeping playlists metadata.
* Encryption keys support for usage with DRM systems like Verimatrix etc.
* Autodetect input streams as master or media playlists.
* Offer structures for keeping playlists metadata.
* Encryption keys support for usage with DRM systems like Verimatrix (http://verimatrix.com) etc.
* Support for non standard Google Widevine (http://www.widevine.com) tags.

Library coded acordingly with IETF draft http://tools.ietf.org/html/draft-pantos-http-live-streaming-12
Library coded accordingly with IETF draft http://tools.ietf.org/html/draft-pantos-http-live-streaming

Examples of usage may be found in *_test.go files of a package. Also see below some simple examples.

Expand Down
Loading