uencode 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
- puts job.to_xml
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' values, so pay attention at the API docs.
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
@@ -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 = []
@@ -1,3 +1,3 @@
1
1
  module UEncode
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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
@@ -3,7 +3,6 @@ require 'rspec'
3
3
  require 'rspec/autorun'
4
4
  require "vcr"
5
5
 
6
-
7
6
  VCR.config do |c|
8
7
  library_dir = File.join(File.dirname(__FILE__), 'fixtures/')
9
8
  c.cassette_library_dir = library_dir
data/uencode.gemspec CHANGED
@@ -29,4 +29,5 @@ Gem::Specification.new do |s|
29
29
 
30
30
  s.add_dependency "nokogiri", "1.4.4"
31
31
  s.add_dependency "httparty"
32
+ s.add_dependency "rake"
32
33
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: uencode
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
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-05-18 00:00:00 -03:00
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