class CarrierWave::Video::FfmpegOptions
Attributes
callbacks[R]
custom[R]
format[R]
resolution[R]
Public Class Methods
new(format, options)
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 6 def initialize(format, options) @format = format.to_s @resolution = options[:resolution] || "640x360" @custom = options[:custom] @callbacks = options[:callbacks] || {} @logger = options[:logger] @unparsed = options @progress = options[:progress] @preserve_aspect_ratio = options[:preserve_aspect_ratio] || :width @format_options = defaults.merge(options) end
Public Instance Methods
encoder_options()
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 34 def encoder_options { preserve_aspect_ratio: @preserve_aspect_ratio } end
format_options()
click to toggle source
input
# File lib/carrierwave/video/ffmpeg_options.rb, line 39 def format_options @format_options end
format_params()
click to toggle source
output
# File lib/carrierwave/video/ffmpeg_options.rb, line 44 def format_params params = @format_options.dup params.delete(:watermark) params[:custom] = params[:custom] + watermark_params params end
logger(model)
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 23 def logger(model) model.send(@logger) if @logger.present? end
progress(model)
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 27 def progress(model) if @progress args = model.method(@progress).arity == 3 ? [@format, @format_options] : [] lambda { |val| model.send(@progress, *(args + [val])) } end end
raw()
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 19 def raw @unparsed end
watermark?()
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 51 def watermark? @format_options[:watermark].present? end
watermark_params()
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 55 def watermark_params return [] unless watermark? @watermark_params ||= begin path = @format_options[:watermark][:path] position = @format_options[:watermark][:position].to_s || :bottom_right margin = @format_options[:watermark][:pixels_from_edge] || @format_options[:watermark][:margin] || 10 positioning = case position when 'bottom_left' "#{margin}:main_h-overlay_h-#{margin}" when 'bottom_right' "main_w-overlay_w-#{margin}:main_h-overlay_h-#{margin}" when 'top_left' "#{margin}:#{margin}" when 'top_right' "main_w-overlay_w-#{margin}:#{margin}" end ["-vf", "\"movie=#{path} [logo]; [in][logo] overlay=#{positioning} [out]\""] end end
Private Instance Methods
defaults()
click to toggle source
# File lib/carrierwave/video/ffmpeg_options.rb, line 79 def defaults @defaults ||= { resolution: @resolution, watermark: {} }.tap do |h| case format when 'mp4' h[:video_codec] = 'libx264' h[:audio_codec] = 'aac' h[:custom] = %w(-r 30 -strict -2 -map_metadata -1) when 'ogv' h[:video_codec] = 'libtheora' h[:audio_codec] = 'libvorbis' h[:custom] = %w(-b 1500k -ab 160000 -g 30) when 'webm' h[:video_codec] = 'libvpx' h[:audio_codec] = 'libvorbis' h[:custom] = %w(-b 1500k -ab 160000 -f webm) end end end