class VideoConverter::Output

Attributes

keyframe_interval_in_seconds[RW]
log[RW]
work_dir[RW]
chunks_dir[RW]
crop[RW]
drm[RW]
encryption_key[RW]
encryption_key_url[RW]
faststart[RW]
ffmpeg_output[RW]
filename[RW]
group[RW]
height[RW]
log[RW]
mkdir_mode[RW]
no_fragments[RW]
one_pass[RW]
options[RW]
path[RW]
rotate[RW]
streams[RW]
thumbnails[RW]
type[RW]
uid[RW]
volume[RW]
watermarks[RW]
width[RW]
work_dir[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/video_converter/output.rb, line 15
def initialize params = {}
  self.work_dir = File.join(self.class.work_dir, params[:uid])
  self.mkdir_mode = params[:mkdir_mode]
  self.mkdir_mode = mkdir_mode.to_i(8) if mkdir_mode.is_a?(String)
  FileUtils.mkdir_p(work_dir, :mode => mkdir_mode)
  self.filename = params[:filename] or raise ArgumentError.new('Filename required')
  self.log = File.join(work_dir, self.class.log)
  self.type = params[:type] || 'default'
  if type == 'segmented'
    self.chunks_dir = File.join(work_dir, File.basename(filename, '.*'))
    FileUtils.mkdir_p(chunks_dir, :mode => mkdir_mode)
    if File.extname(filename) == '.m3u8'
      self.ffmpeg_output = chunks_dir + '.ts'
      params[:format] = 'mpegts'
    elsif File.extname(filename) == '.f4m'
      self.ffmpeg_output = chunks_dir = '.mp4'
      params[:format] = 'mp4'
    else
      raise "Invalid filename for type segmented"
    end
  else
    self.ffmpeg_output = File.join(work_dir, filename)
  end
  raise ArgumentError.new('Invalid type') unless %w(default segmented playlist).include?(type)
  [:path, :streams, :width, :height, :one_pass, :rotate, :faststart, :thumbnails, :group, :drm, :no_fragments, :crop, :watermarks, :volume, :encryption_key, :encryption_key_url].each { |attr| self.send("#{attr}=", params[attr]) }
  [:video_bitrate, :audio_bitrate].each { |bitrate| params[bitrate] = "#{params[bitrate]}k" if params[bitrate].is_a?(Numeric) }

  # options will be substituted to convertation commands
  self.options = params
end

Public Instance Methods

output_group(outputs) click to toggle source
# File lib/video_converter/output.rb, line 46
def output_group(outputs)
  paths = streams.map { |stream| stream[:path] }
  outputs.select { |output| paths.include?(output.filename) }.unshift(self)
end