class CarrierwaveStreamioFfmpeg::Options

Public Instance Methods

codec(format) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 85
def codec(format)
  case format
    when :mp4
      { video_codec: 'libx264',
        audio_codec: 'ac3' }
    when :webm
      { video_codec: 'libvpx',
        audio_codec: 'libvorbis' }
    when :ogv
      { video_codec: 'libtheora',
        audio_codec: 'libvorbis' }
    else
      { video_codec: 'libx264',
        audio_codec: 'libvo_aacenc' }
  end
end
file_type(format) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 102
def file_type(format)
  case format
    when :mp4
      'mp4'
    when :webm
      '.webm'
    when :ogv
      '.ogv'
    else
      '.mp4'
  end
end
set_audio_quality(opts, file) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 32
def set_audio_quality(opts, file)
  case opts[:quality]
    when :very_low
      64
    when :low
      96
    when :med
      128
    when :high
      256
    when :very_high
      320
    else
      (file.audio_bitrate)/100
  end
end
set_file_resolution(opts, file) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 66
def set_file_resolution(opts, file)
  case opts[:resolution]
    when :p240
      '352 x 240'
    when :p360
      '480 x 360'
    when :p480
      '858 x 480'
    when :p720
      '1280 x 720'
    when :p1080
      '1920 x 1080'
    when :p2160
      '3860 x 2160'
    else
      file.resolution
  end
end
set_video_frames(opts, file) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 15
def set_video_frames(opts, file)
  case opts[:quality]
    when :very_low
      15
    when :low
      24
    when :med
      25
    when :high
      30
    when :very_high
      60
    else
      file.frame_rate
  end
end
set_video_quality(opts, file) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 49
def set_video_quality(opts, file)
  case opts[:quality]
    when :very_low
      128
    when :low
      384
    when :med
      1250
    when :high
      5000
    when :very_high
      15000
    else
      (file.video_bitrate)/100
  end
end
transcoder_options(preserve_aspect_ratio) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 115
def transcoder_options(preserve_aspect_ratio)
  if preserve_aspect_ratio
    { preserve_aspect_ratio: preserve_aspect_ratio }
  else
    { preserve_aspect_ratio: :height }
  end
end
video_options(file, opts = {}) click to toggle source
# File lib/carrierwave_streamio_ffmpeg/options.rb, line 4
def video_options(file, opts = {})
  opts[:resolution]    = set_file_resolution(opts, file)
  opts[:video_bitrate] = set_video_quality(opts, file)
  opts[:frame_rate] = set_video_frames(opts, file)
  opts[:audio_bitrate] = set_audio_quality(opts, file)
  opts[:threads] = 1
  format = opts[:format]
  opts = opts.except(:quality, :preserve_aspect_ratio, :format)
  opts.merge!(codec(format))
end