class Abrizer::Adaptation
Attributes
bitrate[R]
height[R]
width[R]
Public Class Methods
new(width:, height:, bitrate:)
click to toggle source
# File lib/abrizer/adaptation.rb, line 9 def initialize(width:, height:, bitrate:) @width = width @height = height @bitrate = bitrate end
Public Instance Methods
constrained_bitrate()
click to toggle source
TODO: make the constrained bitrate (maxrate) value configurable
# File lib/abrizer/adaptation.rb, line 30 def constrained_bitrate @bitrate * 1.1 end
ffmpeg_cmd(input, output_directory, pass)
click to toggle source
# File lib/abrizer/adaptation.rb, line 15 def ffmpeg_cmd(input, output_directory, pass) cmd = %Q|ffmpeg -y #{debug_settings} \ -i #{input} -vf \ yadif,scale='#{width}:trunc(#{width}/dar/2)*2',setsar=1 \ -an -c:v libx264 -x264opts 'keyint=48:min-keyint=48:no-scenecut' \ -b:v #{bitrate}k -preset faster -pix_fmt yuv420p | if pass == 2 cmd += %Q| -maxrate #{constrained_bitrate}k -bufsize #{bitrate}k -pass 2 #{filepath(output_directory)} | else cmd += " -pass 1 -f mp4 /dev/null " end cmd end
filepath(output_directory)
click to toggle source
# File lib/abrizer/adaptation.rb, line 38 def filepath(output_directory) name = "#{outfile_basename}.mp4" File.join output_directory, name end
filepath_fragmented(output_directory)
click to toggle source
# File lib/abrizer/adaptation.rb, line 43 def filepath_fragmented(output_directory) name = "#{outfile_basename}-frag.mp4" File.join output_directory, name end
outfile_basename()
click to toggle source
# File lib/abrizer/adaptation.rb, line 34 def outfile_basename "adaptation-#{width}x#{height}-#{bitrate}" end
to_hash()
click to toggle source
# File lib/abrizer/adaptation.rb, line 56 def to_hash {width: @width, height: @height, bitrate: @bitrate} end
to_json()
click to toggle source
# File lib/abrizer/adaptation.rb, line 52 def to_json MultiJson.dump(to_hash) end
to_s()
click to toggle source
# File lib/abrizer/adaptation.rb, line 48 def to_s "Width: #{@width}, Height: #{@height}, Bitrate: #{@bitrate}" end