8000 GitHub - rubarb666/m3u8 at v0.1.1
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

rubarb666/m3u8

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

m3u8

Python m3u8 parser.

Documentation

The basic usage is to create a playlist object from uri, file path or directly from a string:

import m3u8

m3u8_obj = m3u8.load('http://videoserver.com/playlist.m3u8')  # this could also be an absolute filename
print m3u8_obj.segments
print m3u8_obj.target_duration

# if you already have the content as string, use

m3u8_obj = m3u8.loads('#EXTM3U8 ... etc ... ')

Encryption key

The segments may be encrypted, in this case the key attribute will be an object with all the attributes from #EXT-X-KEY:

If no #EXT-X-KEY is found, the key attribute will be None.

Multiple keys is not supported yet (and has a low priority), follow issue 1 for updates.

Variant playlists (variable bitrates)

A playlist can have a list to other playlist files, this is used to represent multiple bitrates videos, and it's called variant streams. See an example here.

variant_m3u8 = m3u8.loads('#EXTM3U8 ... contains a variant stream ...')
variant_m3u8.is_variant    # in this case will be True

for playlist in variant_m3u8.playlists:
    playlist.uri
    playlist.stream_info.bandwidth

the playlist object used in the for loop above has a few attributes:

  • uri: the url to the stream
  • stream_info: a StreamInfo object (actually a namedtuple) with all the attributes available to #EXT-X-STREAM-INF

NOTE: the following attributes are not implemented yet, follow issue 4 for updates

  • iframe_stream_info: usually None, unless it's a playlist with I-Frames, in this case it's also a namedtuple IFrameStreamInfo with all the attribute available to #EXT-X-I-FRAME-STREAM-INF
  • alternative_audios: it's an empty list, unless it's a playlist with Alternative audio, in this case it's a list with Media objects with all the attributes available to #X-EXT-MEDIA
  • alternative_videos: same as alternative_audios

Running Tests

$ ./runtests

Contributing

All contribution is welcome! If, and only if, it

  • has tests
  • follows the code conventions

If you plan to implement a new feature or something that will take more than a few minutes, please open an issue to make sure we don't work on the same thing.

About

Python m3u8 Parser for HTTP Live Streaming (HLS) Transmissions

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.5%
  • Shell 0.5%
0