diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2020-03-09 02:20:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-09 02:20:18 +0100 |
commit | 8a2b8e0321691ceab1c0c0c00c686d71cb065ae6 (patch) | |
tree | 4a28d6c3f270496239474c31fc5c6997f0b5761b /app/models | |
parent | dc15c81e67da4df932233c3c40f6fada206c71e3 (diff) |
Change video uploads to always be converted to H264/MP4 (#13220)
Even if the container format is the same (.mp4), the codec could be different and not playable in web browsers
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/media_attachment.rb | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb index 49e2e5e27..7c9b4b909 100644 --- a/app/models/media_attachment.rb +++ b/app/models/media_attachment.rb @@ -57,6 +57,26 @@ class MediaAttachment < ApplicationRecord }, }.freeze + VIDEO_FORMAT = { + format: 'mp4', + content_type: 'video/mp4', + convert_options: { + output: { + 'loglevel' => 'fatal', + 'movflags' => 'faststart', + 'pix_fmt' => 'yuv420p', + 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'', + 'vsync' => 'cfr', + 'c:v' => 'h264', + 'maxrate' => '1300K', + 'bufsize' => '1300K', + 'frames:v' => 60 * 60 * 3, + 'crf' => 18, + 'map_metadata' => '-1', + }, + }, + }.freeze + VIDEO_STYLES = { small: { convert_options: { @@ -71,17 +91,7 @@ class MediaAttachment < ApplicationRecord blurhash: BLURHASH_OPTIONS, }, - original: { - keep_same_format: true, - convert_options: { - output: { - 'loglevel' => 'fatal', - 'map_metadata' => '-1', - 'c:v' => 'copy', - 'c:a' => 'copy', - }, - }, - }, + original: VIDEO_FORMAT, }.freeze AUDIO_STYLES = { @@ -98,26 +108,6 @@ class MediaAttachment < ApplicationRecord }, }.freeze - VIDEO_FORMAT = { - format: 'mp4', - content_type: 'video/mp4', - convert_options: { - output: { - 'loglevel' => 'fatal', - 'movflags' => 'faststart', - 'pix_fmt' => 'yuv420p', - 'vf' => 'scale=\'trunc(iw/2)*2:trunc(ih/2)*2\'', - 'vsync' => 'cfr', - 'c:v' => 'h264', - 'maxrate' => '1300K', - 'bufsize' => '1300K', - 'frames:v' => 60 * 60 * 3, - 'crf' => 18, - 'map_metadata' => '-1', - }, - }, - }.freeze - VIDEO_CONVERTED_STYLES = { small: VIDEO_STYLES[:small], original: VIDEO_FORMAT, |