|
|
|
@ -41,11 +41,14 @@ module Paperclip |
|
|
|
|
@output_options['vframes'] = 1 |
|
|
|
|
when 'mp4' |
|
|
|
|
unless eligible_to_passthrough?(metadata) |
|
|
|
|
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" |
|
|
|
|
size_limit_in_bits = MediaAttachment::VIDEO_LIMIT * 8 |
|
|
|
|
desired_bitrate = (metadata.width * metadata.height * 30 * BITS_PER_PIXEL).floor |
|
|
|
|
maximum_bitrate = (size_limit_in_bits / metadata.duration).floor - 192_000 # Leave some space for the audio stream |
|
|
|
|
bitrate = [desired_bitrate, maximum_bitrate].min |
|
|
|
|
|
|
|
|
|
@output_options['b:v'] = bitrate |
|
|
|
|
@output_options['maxrate'] = bitrate + 192_000 |
|
|
|
|
@output_options['bufsize'] = bitrate * 5 |
|
|
|
|
|
|
|
|
|
if high_vfr?(metadata) |
|
|
|
|
@output_options['vsync'] = 'vfr' |
|
|
|
|