m3u8 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|