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