Class: Av::Commands::Base
- Inherits:
-
Object
- Object
- Av::Commands::Base
- Defined in:
- lib/av/commands/base.rb
Overview
Common features across commands
Instance Attribute Summary collapse
-
#audio_filters ⇒ Object
Returns the value of attribute audio_filters.
-
#command_name ⇒ Object
Returns the value of attribute command_name.
-
#default_params ⇒ Object
Returns the value of attribute default_params.
-
#destination ⇒ Object
Returns the value of attribute destination.
-
#input_params ⇒ Object
Returns the value of attribute input_params.
-
#options ⇒ Object
Returns the value of attribute options.
-
#output_format(format) ⇒ Object
Returns the value of attribute output_format.
-
#output_params ⇒ Object
Returns the value of attribute output_params.
-
#source ⇒ Object
Returns the value of attribute source.
-
#video_filters ⇒ Object
Returns the value of attribute video_filters.
Instance Method Summary collapse
- #add_destination(dest) ⇒ Object
- #add_input_param(*param) ⇒ Object
- #add_output_param(*param) ⇒ Object
- #add_source(src) ⇒ Object
-
#filter_rotate(degrees) ⇒ Object
Children should override the following methods.
- #identify(path) ⇒ Object
-
#initialize(options = {}) ⇒ Base
constructor
A new instance of Base.
- #parse_param(param) ⇒ Object
- #reset_default_filters ⇒ Object
- #reset_input_filters ⇒ Object
- #reset_output_filters ⇒ Object
- #run ⇒ Object
- #set_input_params(hash) ⇒ Object
- #set_output_params(hash) ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ Base
Returns a new instance of Base.
19 20 21 22 23 24 |
# File 'lib/av/commands/base.rb', line 19 def initialize( = {}) reset_input_filters reset_output_filters reset_default_filters @options = end |
Instance Attribute Details
#audio_filters ⇒ Object
Returns the value of attribute audio_filters.
12 13 14 |
# File 'lib/av/commands/base.rb', line 12 def audio_filters @audio_filters end |
#command_name ⇒ Object
Returns the value of attribute command_name.
8 9 10 |
# File 'lib/av/commands/base.rb', line 8 def command_name @command_name end |
#default_params ⇒ Object
Returns the value of attribute default_params.
14 15 16 |
# File 'lib/av/commands/base.rb', line 14 def default_params @default_params end |
#destination ⇒ Object
Returns the value of attribute destination.
17 18 19 |
# File 'lib/av/commands/base.rb', line 17 def destination @destination end |
#input_params ⇒ Object
Returns the value of attribute input_params.
9 10 11 |
# File 'lib/av/commands/base.rb', line 9 def input_params @input_params end |
#options ⇒ Object
Returns the value of attribute options.
7 8 9 |
# File 'lib/av/commands/base.rb', line 7 def @options end |
#output_format(format) ⇒ Object
Returns the value of attribute output_format.
11 12 13 |
# File 'lib/av/commands/base.rb', line 11 def output_format @output_format end |
#output_params ⇒ Object
Returns the value of attribute output_params.
10 11 12 |
# File 'lib/av/commands/base.rb', line 10 def output_params @output_params end |
#source ⇒ Object
Returns the value of attribute source.
16 17 18 |
# File 'lib/av/commands/base.rb', line 16 def source @source end |
#video_filters ⇒ Object
Returns the value of attribute video_filters.
13 14 15 |
# File 'lib/av/commands/base.rb', line 13 def video_filters @video_filters end |
Instance Method Details
#add_destination(dest) ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/av/commands/base.rb', line 30 def add_destination dest # infer format from extension unless format has already been set if @output_format.nil? output_format File.extname(dest) end @destination = dest end |
#add_input_param(*param) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/av/commands/base.rb', line 52 def add_input_param *param p = parse_param(param) ::Av.log "Adding input parameter #{p}" @input_params[p[0]] = [] unless @input_params.has_key?(p[0]) @input_params[p[0]] << p[1] self end |
#add_output_param(*param) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/av/commands/base.rb', line 64 def add_output_param *param p = parse_param(param) ::Av.log "Adding output parameter #{p}" @output_params[p[0]] = [] unless @output_params.has_key?(p[0]) @output_params[p[0]] << p[1] self end |
#add_source(src) ⇒ Object
26 27 28 |
# File 'lib/av/commands/base.rb', line 26 def add_source src @source = src end |
#filter_rotate(degrees) ⇒ Object
Children should override the following methods
142 143 144 |
# File 'lib/av/commands/base.rb', line 142 def filter_rotate degrees raise ::Av::FilterNotImplemented, 'rotate' end |
#identify(path) ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/av/commands/base.rb', line 94 def identify path = {} command = %Q(#{@command_name} -i "#{File.(path)}" 2>&1) out = ::Av.run(command, [0,1]) out.split("\n").each do |line| if line =~ /(([\d\.]*)\s.?)fps,/ [:fps] = $1.to_i end # Matching lines like: # Video: h264, yuvj420p, 640x480 [PAR 72:72 DAR 4:3], 10301 kb/s, 30 fps, 30 tbr, 600 tbn, 600 tbc if line =~ /Video:(.*)/ v = $1.to_s size = v.match(/\d{3,5}x\d{3,5}/).to_s [:size] = size unless size.empty? [:aspect] = size.split('x').first.to_f / size.split('x').last.to_f if [:size] end # Matching Duration: 00:01:31.66, start: 0.000000, bitrate: 10404 kb/s if line =~ /Duration:(\s.?(\d*):(\d*):(\d*\.\d*))/ [:length] = $2.to_s + ":" + $3.to_s + ":" + $4.to_s end if line =~ /rotate\s*:\s(\d*)/ [:rotate] = $1.to_i end end unless .empty? end |
#parse_param(param) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/av/commands/base.rb', line 146 def parse_param param list = [] if param.count == 2 list = param elsif param.count == 1 case param[0].class.to_s when 'Hash' list[0], list[1] = param[0].to_a.flatten! when 'Array' list = param[0] end end list end |
#reset_default_filters ⇒ Object
48 49 50 |
# File 'lib/av/commands/base.rb', line 48 def reset_default_filters @default_params = ParamHash.new end |
#reset_input_filters ⇒ Object
38 39 40 41 42 |
# File 'lib/av/commands/base.rb', line 38 def reset_input_filters @input_params = ParamHash.new @audio_filters = ParamHash.new @video_filters = ParamHash.new end |
#reset_output_filters ⇒ Object
44 45 46 |
# File 'lib/av/commands/base.rb', line 44 def reset_output_filters @output_params = ParamHash.new end |
#run ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/av/commands/base.rb', line 76 def run raise Av::CommandError if (@source.nil? && @destination.nil?) || @command_name.nil? parameters = [] parameters << @command_name parameters << @default_params if @default_params if @input_params parameters << @input_params.to_s end parameters << %Q(-i "#{@source}") if @source if @output_params parameters << @output_params.to_s end parameters << %Q(-y "#{@destination}") if @destination command_line = parameters.flatten.compact.join(" ").strip.squeeze(" ") ::Av.run(command_line) end |
#set_input_params(hash) ⇒ Object
60 61 62 |
# File 'lib/av/commands/base.rb', line 60 def set_input_params hash @input_params = hash end |
#set_output_params(hash) ⇒ Object
72 73 74 |
# File 'lib/av/commands/base.rb', line 72 def set_output_params hash @output_params = hash end |