Class: Abrizer::ProgressiveVp9
Instance Method Summary
collapse
#debug_settings
#adaptations_filepath, #all_media_paths, #audio_filepath, #audio_filepath_fragmented, #basename, #canvas_filepath, #canvas_partial_filepath, #captions_filepath, #data_filepath, #data_partial_filepath, #ffprobe_filepath, #filename_directory, #first_image_filepath, #hlsts_aac_filepath, #hlsts_aac_partial_filepath, #hlsts_filepath, #hlsts_partial_filepath, #mp3_filepath, #mp3_partial_filepath, #mp4_filepath, #mp4_partial_filepath, #mpd_filepath, #mpd_partial_filepath, #output_directory, #output_directory_basename, #poster_filepath, #poster_image_filepath, #poster_partial_filepath, #sprites_filepath, #sprites_partial_filepath, #vp9_filepath, #vp9_partial_filepath, #webvtt_input_filepath
Constructor Details
#initialize(filename, output_dir = nil) ⇒ ProgressiveVp9
Returns a new instance of ProgressiveVp9.
7
8
9
10
11
12
13
|
# File 'lib/abrizer/progressive_vp9.rb', line 7
def initialize(filename, output_dir=nil)
@filename = filename
@output_directory = output_dir
make_directory
Dir.chdir @output_directory
find_adaptation
end
|
Instance Method Details
#bitrate ⇒ Object
Since we are using the VP9 as a fallback we use half the bitrate we would use for an MP4 encode.
34
35
36
|
# File 'lib/abrizer/progressive_vp9.rb', line 34
def bitrate
@adaptation.bitrate/2
end
|
#create ⇒ Object
15
16
17
18
|
# File 'lib/abrizer/progressive_vp9.rb', line 15
def create
`#{ffmpeg_cmd_pass1}`
`#{ffmpeg_cmd_pass2}`
end
|
#ffmpeg_cmd_pass1 ⇒ Object
38
39
40
41
42
43
|
# File 'lib/abrizer/progressive_vp9.rb', line 38
def ffmpeg_cmd_pass1
"ffmpeg -y #{debug_settings} -i #{@filename} -c:v libvpx-vp9 -crf 10 -b:v #{bitrate*1.1}k -c:a libvorbis \
-vf yadif,scale='#{@adaptation.width}:trunc(#{@adaptation.width}/dar/2)*2',setsar=1 \
-speed 4 -tile-columns 6 -frame-parallel 1 -pix_fmt yuv420p \
-pass 1 -passlogfile ffmpeg2pass-webm -f webm /dev/null"
end
|
#ffmpeg_cmd_pass2 ⇒ Object
45
46
47
48
49
50
|
# File 'lib/abrizer/progressive_vp9.rb', line 45
def ffmpeg_cmd_pass2
"ffmpeg -y #{debug_settings} -i #{@filename} -c:v libvpx-vp9 -crf 10 -b:v #{bitrate*1.1}k -c:a libvorbis \
-vf yadif,scale='#{@adaptation.width}:trunc(#{@adaptation.width}/dar/2)*2',setsar=1 \
-speed 1 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 \
-pass 2 -passlogfile ffmpeg2pass-webm -pix_fmt yuv420p #{static_filepath}"
end
|
#find_adaptation ⇒ Object
24
25
26
27
28
29
30
|
# File 'lib/abrizer/progressive_vp9.rb', line 24
def find_adaptation
adaptations = Abrizer::AdaptationFinder.new(filepath: @filename).adaptations
sorted = adaptations.sort_by do |adaptation|
adaptation.width
end
@adaptation = sorted.last
end
|
#make_directory ⇒ Object
20
21
22
|
# File 'lib/abrizer/progressive_vp9.rb', line 20
def make_directory
FileUtils.mkdir_p @output_directory unless File.exist? @output_directory
end
|
#static_filepath ⇒ Object
52
53
54
|
# File 'lib/abrizer/progressive_vp9.rb', line 52
def static_filepath
File.join output_directory, "progressive-vp9.webm"
end
|