class Abrizer::FfmpegProcessor

Creates the fMP4 files that are then packaged

Public Class Methods

new(filename, output_dir) click to toggle source
# File lib/abrizer/ffmpeg_processor.rb, line 8
def initialize(filename, output_dir)
  @filename = filename
  @output_directory = output_dir
  @adaptation_finder = Abrizer::AdaptationFinder.new(filepath: @filename)
end

Public Instance Methods

first_pass_adaptation() click to toggle source
# File lib/abrizer/ffmpeg_processor.rb, line 26
def first_pass_adaptation
  adaptations = Abrizer::AdaptationFinder.new(filepath: @filename).adaptations
  sorted = adaptations.sort_by do |adaptation|
   adaptation.width
  end
  sorted[-2]
end
first_pass_cmd() click to toggle source
# File lib/abrizer/ffmpeg_processor.rb, line 34
def first_pass_cmd
  first_pass_adaptation.ffmpeg_cmd(@filename, output_directory, 1)
end
make_directory() click to toggle source
# File lib/abrizer/ffmpeg_processor.rb, line 22
def make_directory
  FileUtils.mkdir_p output_directory unless File.exist? output_directory
end
process() click to toggle source
# File lib/abrizer/ffmpeg_processor.rb, line 14
def process
  make_directory
  Dir.chdir output_directory
  process_first_pass
  process_second_passes
  process_audio
end
process_audio() click to toggle source
# File lib/abrizer/ffmpeg_processor.rb, line 54
def process_audio
  `ffmpeg -y #{debug_settings} -i #{@filename} -c:a libfdk_aac -b:a 128k -vn #{audio_filepath}`
  `mp4fragment #{audio_filepath} #{audio_filepath_fragmented}`
  FileUtils.rm audio_filepath
end
process_first_pass() click to toggle source
# File lib/abrizer/ffmpeg_processor.rb, line 38
def process_first_pass
  puts first_pass_cmd
  `#{first_pass_cmd}`
end
process_second_passes() click to toggle source

Creates a file per adaptation based on aspect ratio and resolution

# File lib/abrizer/ffmpeg_processor.rb, line 44
def process_second_passes
  @adaptation_finder.adaptations.each do |adaptation|
    cmd = adaptation.ffmpeg_cmd(@filename, output_directory, 2)
    puts cmd
    `#{cmd}`
    `mp4fragment #{adaptation.filepath(output_directory)} #{adaptation.filepath_fragmented(output_directory)}`
    FileUtils.rm adaptation.filepath(output_directory)
  end
end