module ZencoderAPI #:nodoc: # This class implements a couple of bogus recipes, mainly as an example of usage. Recipe isntances can be passed in to Zencoder#submit_job class Recipe @@keys = [:label, :base_url, :filename, :width, :height, :quality, :speed, :upscale, :stretch, :frame_rate, :max_frame_rate, :keyframe_interval, :video_bitrate, :bitrate_cap, :buffer_size, :h264_profile, :h264_level, :skip_video, :audio_codec, :audio_bitrate, :audio_channels, :audio_sample_rate, :skip_audio, :start_clip, :clip_length, :thumbnails, :notifications] @@thumb_keys = [:number, :size, :base_url, :prefix] # constructor. accepts a name for the recipe, and a hash of params. The constructor will try to verify that you aren't doing # something it doesn't know about, though does no further validation. def initialize(name, params ) params = params.inject(Hash.new) do |m,v| m[v.first.to_s.to_sym]=v.last m end raise RecipeError.new("no recipe parameters?") if params.empty? raise RecipeError.new("unknown recipe parameter #{params.keys - @@keys}") unless (params.keys - @@keys).empty? if params[:thumbnails] raise RecipeError.new("unknown thumb keys #{params[:thumbnails].keys - @@thumb_keys}") if (params[:thumbnails].keys - @@thumb_keys).empty? end @o = params end def to_json #:nodoc: @o.to_json end end # Raised if something goes wrong with a recipe configuration class RecipeError < Exception; end # Some example recipes. module Recipes #A sample iphone recipe. if you have a better one, send me a patch. def self.iphone(params={}) raise "Base_url unset." unless params['base_url'] defaults = { "label"=> "iphone", "width"=> 240, "frame_rate"=> 24, "max_frame_rate"=> 24, "video_bitrate"=> 40, "bitrate_cap"=> 100 } params = defaults.merge(params) Recipe.new(:iphone, params) end # A sample web recipe. if you have a better one, send me a patch. def self.web(params={}) raise "Base_url unset." unless params['base_url'] defaults = { "label"=> "web", "width"=> 240, "frame_rate"=> 24, "max_frame_rate"=> 24, "video_bitrate"=> 40, "bitrate_cap"=> 100 } params = defaults.merge(params) Recipe.new(:web, params) end end end