Class: DragonflyVideo::Processors::Optimize
Constant Summary
BaseProcessor::FFMPEG_COMMAND
Instance Method Summary
collapse
Instance Method Details
#call(content, options = {}) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/dragonfly_video/processors/optimize.rb', line 6
def call(content, options = {})
raise "optimize only supports mp4" unless content.ext == "mp4"
profile = options.fetch(:profile, :default).to_sym
case profile
when :streaming
crf = 26
maxrate = "4000k"
bufsize = "8000k"
gop = 96
profile_v = "main"
preset = "fast"
when :archive
crf = 18
maxrate = nil
bufsize = nil
gop = nil
profile_v = "high"
preset = "slow"
when :mobile
crf = 28
maxrate = "1500k"
bufsize = "3000k"
gop = 48
profile_v = "baseline"
preset = "fast"
else crf = 24
maxrate = nil
bufsize = nil
gop = nil
profile_v = "main"
preset = "medium"
end
maxrate_option = maxrate ? "-maxrate #{maxrate} -bufsize #{bufsize}" : ""
gop_option = gop ? "-g #{gop}" : ""
content.shell_update do |old_path, new_path|
"#{FFMPEG_COMMAND} -y -i #{old_path} #{gop_option} -map_metadata -1 -c:a aac -c:v libx264 -crf #{crf} -preset #{preset} -profile:v #{profile_v} -pix_fmt yuv420p -movflags +faststart -vf 'scale=trunc(iw/2)*2:trunc(ih/2)*2' #{maxrate_option} #{new_path}"
end
end
|