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