From 8a2b8e0321691ceab1c0c0c00c686d71cb065ae6 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 9 Mar 2020 02:20:18 +0100 Subject: 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 --- app/models/media_attachment.rb | 52 +++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 31 deletions(-) (limited to 'app/models') 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, -- cgit