M3Uzi

Read and write M3U files with (relative) ease.

Usage

Read an M3U file:

M3Uzi.read("/path/to/file.m3u8")

Write an M3U file:

m3u.write("/path/to/file.m3u8")

Get a list of filenames:

m3u.filenames

Get all file reference objects:

m3u.files

Add a file to the M3U index:

m3u.add_file do |file|
  file.path = "/path/to/file.ts"
  file.duration = 10
  file.description = "no desc"
end

Get all tag reference objects:

m3u.tags

Get an individual tag value (TARGETDURATION MEDIA-SEQUENCE ALLOW-CACHE STREAM-INF ENDLIST VERSION):

m3u[:targetduration]
m3u[:media_sequence]

Set an individual tag value:

m3u[:targetduration] = 100

Add a tag to the M3U index (custom tags even):

m3u.add_tag do |tag|
  tag.name = "VERSION"
  tag.value = "1"
end

Add a comment:

m3u << "Comment"
m3u.add_comment("Comment")

NOTES

  • Target duration will be calculated and included if omitted

TODO

  • Tags KEY, PROGRAM-DATE-TIME, and DISCONTINUITY are not supported
  • Stream info is not working yet
  • Tests need to be written
  • Needs to be turned into a gem

(c) 2010 Brandon Arbini / Zencoder, Inc.