Change video compression parameters (#26631)
This commit is contained in:
parent
dd72a8d28b
commit
01b87a1632
2 changed files with 14 additions and 12 deletions
|
@ -4,6 +4,9 @@ module Paperclip
|
|||
# This transcoder is only to be used for the MediaAttachment model
|
||||
# to check when uploaded videos are actually gifv's
|
||||
class Transcoder < Paperclip::Processor
|
||||
# This is the H.264 "High" value taken from https://www.dr-lex.be/info-stuff/videocalc.html
|
||||
BITS_PER_PIXEL = 0.11
|
||||
|
||||
def initialize(file, options = {}, attachment = nil)
|
||||
super
|
||||
|
||||
|
@ -38,8 +41,11 @@ module Paperclip
|
|||
@output_options['vframes'] = 1
|
||||
when 'mp4'
|
||||
unless eligible_to_passthrough?(metadata)
|
||||
@output_options['acodec'] = 'aac'
|
||||
@output_options['strict'] = 'experimental'
|
||||
bitrate = (metadata.width * metadata.height * 30 * BITS_PER_PIXEL) / 1_000
|
||||
|
||||
@output_options['b:v'] = "#{bitrate}k"
|
||||
@output_options['maxrate'] = "#{bitrate + 192}k"
|
||||
@output_options['bufsize'] = "#{bitrate * 5}k"
|
||||
|
||||
if high_vfr?(metadata)
|
||||
@output_options['vsync'] = 'vfr'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue