m3u8 0.6.5 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/Gemfile +0 -5
- data/lib/m3u8/playlist_item.rb +10 -3
- data/lib/m3u8/version.rb +1 -1
- data/m3u8.gemspec +5 -1
- data/spec/lib/m3u8/playlist_item_spec.rb +8 -4
- metadata +60 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59afb153649738feaf50a0c63229cce241a3be9e
|
4
|
+
data.tar.gz: 56d7ee49319b9be6d6feecb3c9b591e5461b8402
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 153894fa6fc82485c37cd5f67f8126d7692d1f22bb74c8afb94b2586f2dbd311ed2d2f63df5f62dbe9bd89fd94bfcad19f2efead08a4929893df365470b24085
|
7
|
+
data.tar.gz: 4b642321d954e3ac44598052ae0c44164bfdf6f22c46e95ab4f03674cbc43244006dd6cfc35d901128c31b1ca9571e56718960753e687c7754cbc574389e8cab
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
#### 0.6.6 (3/30/2016) - Merged pull request #14 from [raphi](https://github.com/raphi). Adds support for non-standard name attribute on #EXT-X-STREAM-INF tags.
|
2
|
+
|
1
3
|
#### 0.6.5 (3/18/2016) - Merged pull requests #11 from [jviney](https://github.com/jviney). Adds codec string for main profile level 4.1.
|
2
4
|
|
3
5
|
#### 0.6.4 (2/21/2016) - Merged pull requests #8, #9, and #10 from [jviney](https://github.com/jviney). Adds FRAME-RATE attribute to PlayListItem, fixes NONE option for CLOSED-CAPTIONS attribute.
|
data/Gemfile
CHANGED
data/lib/m3u8/playlist_item.rb
CHANGED
@@ -6,7 +6,7 @@ module M3u8
|
|
6
6
|
attr_accessor :program_id, :width, :height, :codecs, :bandwidth,
|
7
7
|
:audio_codec, :level, :profile, :video, :audio, :uri,
|
8
8
|
:average_bandwidth, :subtitles, :closed_captions, :iframe,
|
9
|
-
:frame_rate
|
9
|
+
:frame_rate, :name
|
10
10
|
MISSING_CODEC_MESSAGE = 'Audio or video codec info should be provided.'
|
11
11
|
|
12
12
|
def initialize(params = {})
|
@@ -69,7 +69,8 @@ module M3u8
|
|
69
69
|
frame_rate: parse_frame_rate(attributes['FRAME-RATE']),
|
70
70
|
video: attributes['VIDEO'], audio: attributes['AUDIO'],
|
71
71
|
uri: attributes['URI'], subtitles: attributes['SUBTITLES'],
|
72
|
-
closed_captions: attributes['CLOSED-CAPTIONS']
|
72
|
+
closed_captions: attributes['CLOSED-CAPTIONS'],
|
73
|
+
name: attributes['NAME'] }
|
73
74
|
end
|
74
75
|
|
75
76
|
def parse_average_bandwidth(value)
|
@@ -112,7 +113,8 @@ module M3u8
|
|
112
113
|
audio_format,
|
113
114
|
video_format,
|
114
115
|
subtitles_format,
|
115
|
-
closed_captions_format
|
116
|
+
closed_captions_format,
|
117
|
+
name_format].compact.join(',')
|
116
118
|
end
|
117
119
|
|
118
120
|
def program_id_format
|
@@ -168,6 +170,11 @@ module M3u8
|
|
168
170
|
end
|
169
171
|
end
|
170
172
|
|
173
|
+
def name_format
|
174
|
+
return if name.nil?
|
175
|
+
%(NAME="#{name}")
|
176
|
+
end
|
177
|
+
|
171
178
|
def audio_codec
|
172
179
|
return if @audio_codec.nil?
|
173
180
|
return 'mp4a.40.2' if @audio_codec.downcase == 'aac-lc'
|
data/lib/m3u8/version.rb
CHANGED
data/m3u8.gemspec
CHANGED
@@ -20,5 +20,9 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency 'bundler'
|
22
22
|
spec.add_development_dependency 'rake'
|
23
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.4'
|
24
|
+
spec.add_development_dependency 'coveralls'
|
25
|
+
spec.add_development_dependency 'guard'
|
26
|
+
spec.add_development_dependency 'guard-rspec'
|
27
|
+
spec.add_development_dependency 'simplecov'
|
24
28
|
end
|
@@ -20,7 +20,8 @@ describe M3u8::PlaylistItem do
|
|
20
20
|
input = %(#EXT-X-STREAM-INF:CODECS="avc",BANDWIDTH=540,) +
|
21
21
|
%(PROGRAM-ID=1,RESOLUTION=1920x1080,FRAME-RATE=23.976,) +
|
22
22
|
%(AVERAGE-BANDWIDTH=550,AUDIO="test",VIDEO="test2",) +
|
23
|
-
%(SUBTITLES="subs",CLOSED-CAPTIONS="caps",URI="test.url")
|
23
|
+
%(SUBTITLES="subs",CLOSED-CAPTIONS="caps",URI="test.url",) +
|
24
|
+
%(NAME="1080p")
|
24
25
|
item = M3u8::PlaylistItem.parse(input)
|
25
26
|
expect(item.program_id).to eq '1'
|
26
27
|
expect(item.codecs).to eq 'avc'
|
@@ -34,12 +35,14 @@ describe M3u8::PlaylistItem do
|
|
34
35
|
expect(item.subtitles).to eq 'subs'
|
35
36
|
expect(item.closed_captions).to eq 'caps'
|
36
37
|
expect(item.uri).to eq 'test.url'
|
38
|
+
expect(item.name).to eq '1080p'
|
37
39
|
end
|
38
40
|
|
39
41
|
it 'should parse m3u8 into current instance' do
|
40
42
|
input = %(#EXT-X-STREAM-INF:CODECS="avc",BANDWIDTH=540,) +
|
41
43
|
%(PROGRAM-ID=1,AUDIO="test",VIDEO="test2",) +
|
42
|
-
%(SUBTITLES="subs",CLOSED-CAPTIONS="caps",URI="test.url")
|
44
|
+
%(SUBTITLES="subs",CLOSED-CAPTIONS="caps",URI="test.url",) +
|
45
|
+
%(NAME="SD")
|
43
46
|
item = M3u8::PlaylistItem.new
|
44
47
|
item.parse(input)
|
45
48
|
expect(item.program_id).to eq '1'
|
@@ -53,6 +56,7 @@ describe M3u8::PlaylistItem do
|
|
53
56
|
expect(item.subtitles).to eq 'subs'
|
54
57
|
expect(item.closed_captions).to eq 'caps'
|
55
58
|
expect(item.uri).to eq 'test.url'
|
59
|
+
expect(item.name).to eq 'SD'
|
56
60
|
end
|
57
61
|
end
|
58
62
|
|
@@ -75,13 +79,13 @@ describe M3u8::PlaylistItem do
|
|
75
79
|
|
76
80
|
hash = { codecs: 'avc', bandwidth: 540, uri: 'test.url', audio: 'test',
|
77
81
|
video: 'test2', average_bandwidth: 500, subtitles: 'subs',
|
78
|
-
frame_rate: 30, closed_captions: 'caps' }
|
82
|
+
frame_rate: 30, closed_captions: 'caps', name: 'SD' }
|
79
83
|
item = M3u8::PlaylistItem.new(hash)
|
80
84
|
output = item.to_s
|
81
85
|
expected = %(#EXT-X-STREAM-INF:CODECS="avc",BANDWIDTH=540,) +
|
82
86
|
%(AVERAGE-BANDWIDTH=500,FRAME-RATE=30.000,) +
|
83
87
|
%(AUDIO="test",VIDEO="test2",SUBTITLES="subs",) +
|
84
|
-
%(CLOSED-CAPTIONS="caps"\ntest.url)
|
88
|
+
%(CLOSED-CAPTIONS="caps",NAME="SD"\ntest.url)
|
85
89
|
expect(output).to eq expected
|
86
90
|
end
|
87
91
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: m3u8
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Deckard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,70 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '3.
|
47
|
+
version: '3.4'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '3.
|
54
|
+
version: '3.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: coveralls
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
55
111
|
description: Generate and parse m3u8 playlists for HTTP Live Streaming (HLS).
|
56
112
|
email:
|
57
113
|
- seth@deckard.me
|