uencode 0.0.1 → 0.0.2
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.
- data/README.md +6 -2
- data/lib/uencode/elements.rb +33 -0
- data/lib/uencode/version.rb +1 -1
- data/spec/elements_spec.rb +33 -0
- data/spec/fixtures/configuration.yaml +23 -0
- data/spec/spec_helper.rb +0 -1
- data/uencode.gemspec +1 -0
- metadata +30 -11
data/README.md
CHANGED
|
@@ -33,7 +33,7 @@ capture = UEncode::CaptureOutput.new :destination => "http://whatever.com/foo.zi
|
|
|
33
33
|
job.add_capture capture
|
|
34
34
|
|
|
35
35
|
request = UEncode::Request.new job
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
response = request.send
|
|
38
38
|
|
|
39
39
|
puts response.code # => 'Ok'
|
|
@@ -46,12 +46,16 @@ puts response.userdata # => 'This is a simple test'
|
|
|
46
46
|
|
|
47
47
|
Currently all the uEncode API parameters are supported (or so I think :)
|
|
48
48
|
|
|
49
|
-
Currently the gem does not validate parameters
|
|
49
|
+
Currently the gem does not validate parameters values, so pay attention to the API docs.
|
|
50
50
|
|
|
51
51
|
You can see the whole list of accepted parameters in the [uEncode API documentation](http://www.uencode.com/api/300#response_codes).
|
|
52
52
|
|
|
53
53
|
For the UEncode classes that map to each complex API parameters (like Crop, Size, FrameRate, etc) take a look at the spec file at /spec/elements_spec.rb or read the docs.
|
|
54
54
|
|
|
55
|
+
## Credits
|
|
56
|
+
|
|
57
|
+
This gem was created during my work to integrate the uEncode API in our application at [DailyDigital](http://www.dailydigital.com). Thanks for letting me open source it!
|
|
58
|
+
|
|
55
59
|
## Running the specs
|
|
56
60
|
|
|
57
61
|
* bundle install
|
data/lib/uencode/elements.rb
CHANGED
|
@@ -111,11 +111,40 @@ module UEncode
|
|
|
111
111
|
|
|
112
112
|
# Medium is a single video to transcode
|
|
113
113
|
class Medium
|
|
114
|
+
attr_reader :video_config, :audio_config
|
|
115
|
+
|
|
114
116
|
def initialize
|
|
115
117
|
@video_config = VideoConfig.new
|
|
116
118
|
@audio_config = AudioConfig.new
|
|
117
119
|
end
|
|
118
120
|
|
|
121
|
+
# Configures the transcoding using a nested hash with the following format:
|
|
122
|
+
#
|
|
123
|
+
# config = {"video" => { ... }, "audio" => { ... }
|
|
124
|
+
#
|
|
125
|
+
# The keys for the "video" hash can be any of the following: bitrate, codec, cbr, crop,
|
|
126
|
+
# deinterlace, framerate, height, keyframe_interval, maxbitrate, par, profile, passes,
|
|
127
|
+
# stretch, width.
|
|
128
|
+
#
|
|
129
|
+
# The "framerate" and "par" values must be also hashes, with the following format:
|
|
130
|
+
#
|
|
131
|
+
# {"numerator" => 10, "denominator" => 11}
|
|
132
|
+
#
|
|
133
|
+
# The keys for the "audio" hash can be any of the following:
|
|
134
|
+
# codec, bitrate, channels, samplerate.
|
|
135
|
+
#
|
|
136
|
+
def configure(hash)
|
|
137
|
+
video = hash["video"]
|
|
138
|
+
audio = hash["audio"]
|
|
139
|
+
configure_video do |c|
|
|
140
|
+
video.each_pair { |key, value| c.send("#{key}=", value) }
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
configure_audio do |c|
|
|
144
|
+
audio.each_pair { |key, value| c.send("#{key}=", value) }
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
119
148
|
def configure_video
|
|
120
149
|
yield @video_config
|
|
121
150
|
end
|
|
@@ -186,6 +215,10 @@ module UEncode
|
|
|
186
215
|
|
|
187
216
|
include Enumerable
|
|
188
217
|
|
|
218
|
+
def self.from_hash(hash)
|
|
219
|
+
new({})
|
|
220
|
+
end
|
|
221
|
+
|
|
189
222
|
def initialize(options)
|
|
190
223
|
@video_output = VideoOutput.new options[:video_output] || {}
|
|
191
224
|
@captures = []
|
data/lib/uencode/version.rb
CHANGED
data/spec/elements_spec.rb
CHANGED
|
@@ -31,6 +31,9 @@ describe UEncode::Medium do
|
|
|
31
31
|
|
|
32
32
|
describe "#configure_video" do
|
|
33
33
|
let(:medium) { UEncode::Medium.new }
|
|
34
|
+
let(:config) { YAML::load_file("spec/fixtures/configuration.yaml") }
|
|
35
|
+
let(:video_config) { config["video"] }
|
|
36
|
+
let(:audio_config) { config["audio"] }
|
|
34
37
|
|
|
35
38
|
it { medium.video.bitrate.should == 10000 }
|
|
36
39
|
it { medium.video.codec.should == "mp4" }
|
|
@@ -46,6 +49,36 @@ describe UEncode::Medium do
|
|
|
46
49
|
it { medium.video.passes.should == 1 }
|
|
47
50
|
it { medium.video.stretch.should == false }
|
|
48
51
|
it { medium.video.width.should == 400 }
|
|
52
|
+
|
|
53
|
+
context "from a hash (video parameters)" do
|
|
54
|
+
before { medium.configure config }
|
|
55
|
+
subject { medium.video_config }
|
|
56
|
+
|
|
57
|
+
its(:bitrate) { should == video_config["bitrate"] }
|
|
58
|
+
its(:codec) { should == video_config["codec"] }
|
|
59
|
+
its(:cbr) { should == video_config["cbr"] }
|
|
60
|
+
its(:crop) { should == video_config["crop"] }
|
|
61
|
+
its(:deinterlace) { should == video_config["deinterlace"] }
|
|
62
|
+
its(:framerate) { should == video_config["framerate"] }
|
|
63
|
+
its(:height) { should == video_config["height"] }
|
|
64
|
+
its(:keyframe_interval) { should == video_config["keyframe_interval"] }
|
|
65
|
+
its(:maxbitrate) { should == video_config["maxbitrate"] }
|
|
66
|
+
its(:par) { should == video_config["par"] }
|
|
67
|
+
its(:profile) { should == video_config["profile"] }
|
|
68
|
+
its(:passes) { should == video_config["passes"] }
|
|
69
|
+
its(:stretch) { should == video_config["stretch"] }
|
|
70
|
+
its(:width) { should == video_config["width"] }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context "from a hash (audio parameters)" do
|
|
74
|
+
before { medium.configure config }
|
|
75
|
+
subject { medium.audio_config }
|
|
76
|
+
|
|
77
|
+
its(:codec) { should == audio_config["codec"] }
|
|
78
|
+
its(:bitrate) { should == audio_config["bitrate"] }
|
|
79
|
+
its(:channels) { should == audio_config["channels"] }
|
|
80
|
+
its(:samplerate) { should == audio_config["samplerate"] }
|
|
81
|
+
end
|
|
49
82
|
end
|
|
50
83
|
|
|
51
84
|
describe "#configure_audio" do
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
video:
|
|
2
|
+
bitrate: 4500000
|
|
3
|
+
codec: "mp4"
|
|
4
|
+
width: 1920
|
|
5
|
+
height: 1080
|
|
6
|
+
passes: 1
|
|
7
|
+
maxbitrate: 2000000
|
|
8
|
+
deinterlace: false
|
|
9
|
+
cbr: false
|
|
10
|
+
stretch: false
|
|
11
|
+
profile: "baseline"
|
|
12
|
+
framerate:
|
|
13
|
+
numerator: 30000
|
|
14
|
+
denominator: 1001
|
|
15
|
+
par:
|
|
16
|
+
numerator: 1
|
|
17
|
+
denominator: 1
|
|
18
|
+
keyframe_interval: 60
|
|
19
|
+
audio:
|
|
20
|
+
codec: "aac"
|
|
21
|
+
bitrate: 256000
|
|
22
|
+
channels: 2
|
|
23
|
+
samplerate: 44100
|
data/spec/spec_helper.rb
CHANGED
data/uencode.gemspec
CHANGED
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: uencode
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.0.
|
|
5
|
+
version: 0.0.2
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- "C\xC3\xA1ssio Marques"
|
|
@@ -10,12 +10,11 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date: 2011-
|
|
13
|
+
date: 2011-07-07 00:00:00 -03:00
|
|
14
14
|
default_executable:
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: rspec
|
|
18
|
-
prerelease: false
|
|
19
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
|
20
19
|
none: false
|
|
21
20
|
requirements:
|
|
@@ -23,10 +22,10 @@ dependencies:
|
|
|
23
22
|
- !ruby/object:Gem::Version
|
|
24
23
|
version: 2.6.0
|
|
25
24
|
type: :development
|
|
25
|
+
prerelease: false
|
|
26
26
|
version_requirements: *id001
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: vcr
|
|
29
|
-
prerelease: false
|
|
30
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
|
31
30
|
none: false
|
|
32
31
|
requirements:
|
|
@@ -34,10 +33,10 @@ dependencies:
|
|
|
34
33
|
- !ruby/object:Gem::Version
|
|
35
34
|
version: 1.9.0
|
|
36
35
|
type: :development
|
|
36
|
+
prerelease: false
|
|
37
37
|
version_requirements: *id002
|
|
38
38
|
- !ruby/object:Gem::Dependency
|
|
39
39
|
name: guard
|
|
40
|
-
prerelease: false
|
|
41
40
|
requirement: &id003 !ruby/object:Gem::Requirement
|
|
42
41
|
none: false
|
|
43
42
|
requirements:
|
|
@@ -45,10 +44,10 @@ dependencies:
|
|
|
45
44
|
- !ruby/object:Gem::Version
|
|
46
45
|
version: "0"
|
|
47
46
|
type: :development
|
|
47
|
+
prerelease: false
|
|
48
48
|
version_requirements: *id003
|
|
49
49
|
- !ruby/object:Gem::Dependency
|
|
50
50
|
name: guard-rspec
|
|
51
|
-
prerelease: false
|
|
52
51
|
requirement: &id004 !ruby/object:Gem::Requirement
|
|
53
52
|
none: false
|
|
54
53
|
requirements:
|
|
@@ -56,10 +55,10 @@ dependencies:
|
|
|
56
55
|
- !ruby/object:Gem::Version
|
|
57
56
|
version: "0"
|
|
58
57
|
type: :development
|
|
58
|
+
prerelease: false
|
|
59
59
|
version_requirements: *id004
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: growl
|
|
62
|
-
prerelease: false
|
|
63
62
|
requirement: &id005 !ruby/object:Gem::Requirement
|
|
64
63
|
none: false
|
|
65
64
|
requirements:
|
|
@@ -67,10 +66,10 @@ dependencies:
|
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
67
|
version: "0"
|
|
69
68
|
type: :development
|
|
69
|
+
prerelease: false
|
|
70
70
|
version_requirements: *id005
|
|
71
71
|
- !ruby/object:Gem::Dependency
|
|
72
72
|
name: rb-fsevent
|
|
73
|
-
prerelease: false
|
|
74
73
|
requirement: &id006 !ruby/object:Gem::Requirement
|
|
75
74
|
none: false
|
|
76
75
|
requirements:
|
|
@@ -78,10 +77,10 @@ dependencies:
|
|
|
78
77
|
- !ruby/object:Gem::Version
|
|
79
78
|
version: "0"
|
|
80
79
|
type: :development
|
|
80
|
+
prerelease: false
|
|
81
81
|
version_requirements: *id006
|
|
82
82
|
- !ruby/object:Gem::Dependency
|
|
83
83
|
name: webmock
|
|
84
|
-
prerelease: false
|
|
85
84
|
requirement: &id007 !ruby/object:Gem::Requirement
|
|
86
85
|
none: false
|
|
87
86
|
requirements:
|
|
@@ -89,10 +88,10 @@ dependencies:
|
|
|
89
88
|
- !ruby/object:Gem::Version
|
|
90
89
|
version: "0"
|
|
91
90
|
type: :development
|
|
91
|
+
prerelease: false
|
|
92
92
|
version_requirements: *id007
|
|
93
93
|
- !ruby/object:Gem::Dependency
|
|
94
94
|
name: nokogiri
|
|
95
|
-
prerelease: false
|
|
96
95
|
requirement: &id008 !ruby/object:Gem::Requirement
|
|
97
96
|
none: false
|
|
98
97
|
requirements:
|
|
@@ -100,10 +99,10 @@ dependencies:
|
|
|
100
99
|
- !ruby/object:Gem::Version
|
|
101
100
|
version: 1.4.4
|
|
102
101
|
type: :runtime
|
|
102
|
+
prerelease: false
|
|
103
103
|
version_requirements: *id008
|
|
104
104
|
- !ruby/object:Gem::Dependency
|
|
105
105
|
name: httparty
|
|
106
|
-
prerelease: false
|
|
107
106
|
requirement: &id009 !ruby/object:Gem::Requirement
|
|
108
107
|
none: false
|
|
109
108
|
requirements:
|
|
@@ -111,7 +110,19 @@ dependencies:
|
|
|
111
110
|
- !ruby/object:Gem::Version
|
|
112
111
|
version: "0"
|
|
113
112
|
type: :runtime
|
|
113
|
+
prerelease: false
|
|
114
114
|
version_requirements: *id009
|
|
115
|
+
- !ruby/object:Gem::Dependency
|
|
116
|
+
name: rake
|
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
|
118
|
+
none: false
|
|
119
|
+
requirements:
|
|
120
|
+
- - ">="
|
|
121
|
+
- !ruby/object:Gem::Version
|
|
122
|
+
version: "0"
|
|
123
|
+
type: :runtime
|
|
124
|
+
prerelease: false
|
|
125
|
+
version_requirements: *id010
|
|
115
126
|
description: UEncode API client
|
|
116
127
|
email:
|
|
117
128
|
- cassiommc@gmail.com
|
|
@@ -134,6 +145,7 @@ files:
|
|
|
134
145
|
- lib/uencode/response.rb
|
|
135
146
|
- lib/uencode/version.rb
|
|
136
147
|
- spec/elements_spec.rb
|
|
148
|
+
- spec/fixtures/configuration.yaml
|
|
137
149
|
- spec/fixtures/job_with_one_video_and_no_capture.yml
|
|
138
150
|
- spec/request_spec.rb
|
|
139
151
|
- spec/response_spec.rb
|
|
@@ -154,12 +166,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
154
166
|
requirements:
|
|
155
167
|
- - ">="
|
|
156
168
|
- !ruby/object:Gem::Version
|
|
169
|
+
hash: 2924149938077751902
|
|
170
|
+
segments:
|
|
171
|
+
- 0
|
|
157
172
|
version: "0"
|
|
158
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
174
|
none: false
|
|
160
175
|
requirements:
|
|
161
176
|
- - ">="
|
|
162
177
|
- !ruby/object:Gem::Version
|
|
178
|
+
hash: 2924149938077751902
|
|
179
|
+
segments:
|
|
180
|
+
- 0
|
|
163
181
|
version: "0"
|
|
164
182
|
requirements: []
|
|
165
183
|
|
|
@@ -170,6 +188,7 @@ specification_version: 3
|
|
|
170
188
|
summary: Simple UEncode API client written in Ruby
|
|
171
189
|
test_files:
|
|
172
190
|
- spec/elements_spec.rb
|
|
191
|
+
- spec/fixtures/configuration.yaml
|
|
173
192
|
- spec/fixtures/job_with_one_video_and_no_capture.yml
|
|
174
193
|
- spec/request_spec.rb
|
|
175
194
|
- spec/response_spec.rb
|