Я проверил большинство других предложенных ответов на этот вопрос. Выводы по данным испытаний приведены ниже. Вот предложенные ответы, которые я проверил:
(BR) Изменить битрейт, используя:
ffmpeg -i $infile -b $bitrate $newoutfile
(CR) Измените коэффициент постоянной скорости, используя:
ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile
(SZ) Измените размер экрана видео (например, на половину его размера в пикселях), используя:
ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile
(BL) Измените профиль H.264 на «базовый уровень», используя:
ffmpeg -i $infile -profile:v baseline $outfile
(DF) Использовать обработку ffmpeg по умолчанию, используя:
ffmpeg -i $infile $outfile
ДАННЫЕ
- «размер» - процентный размер пикселя преобразованного видео по отношению к оригиналу.
- «битрейт» - битрейт оригинальных и конвертированных видео.
- «определение» - размер видео в пикселях.
- «конвертировать» - время конвертации видео в секундах.
Я рассчитал целевой битрейт для (BL), используя предложенный метод.
=== Файл A - Как узел помогает продвигать Angular-Fnbixa7Ts6M.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 64152 kb 214% 76% 40% 83% 76%
bitrate 411 kb/s 883 313 165 342 313
definition 1920x1080 1920x1080 1920x1080 960x540 1920x1080 1920x1080
convert -- 648 509 225 427 510
=== Файл B - Использование GraphQL с Angular _ By - Ли Костелло-OGyFxqt5INw.mkv ===
original BR CR SZ BL DF
-------- --- -- -- -- --
size 410301 kb 33% 109% 28% 143% 109%
bitrate 2687 kb/s 880 2920 764 3843 2920
definition 3840x2160 3840x2160 3840x2160 1920x1080 3840x2160 3840x2160
convert -- 2307 3188 1116 2646 3278
ВЫВОДЫ
(SZ) метод, безусловно, самый быстрый метод. Это было в 2-4 раза быстрее. Это может быть очень серьезной проблемой для видео высокой четкости, поскольку для преобразования всех остальных методов требовалось больше времени, чем для реальной длины видео! Например, метод (CR) занял 53 минуты для преобразования 21-минутного видео.
Метод (SZ), безусловно, является лучшим методом, если определение видео больше, чем определение экрана, на котором оно будет отображаться. Например, если ваш телефон может отображать только изображение в формате 1080p, отправка видео с разрешением 3840x2160 будет просто расточительной. Лучше всего вдвое уменьшить его до 1080p.
Некоторые из предложенных ответов на самом деле увеличили размер некоторых видео. Например, метод (BR) более чем удвоил размер выборки 1080p. Тем не менее, размер 2160p составил одну треть. Для семпла высокой четкости все методы (CR), (BL) и (DF) увеличили размер видео.
Правильный (или лучший) ответ
Всегда лучше сначала уменьшить разрешение до максимума, поддерживаемого вашим целевым дисплеем.
Если вы хотите уменьшить размер файла, это будет зависеть от вашего личного выбора. Вы можете уменьшить объем информации или увеличить степень сжатия.
Вы можете уменьшить разрешение больше, если это не то, что вас беспокоит.
Если видео не содержит быстрых сцен, вы можете снизить частоту кадров.
Если у вас мощный процессор, а пространство - это единственная проблема, вы можете увеличить степень сжатия.
Скорость передачи данных является комбинацией нескольких факторов. Поэтому простое указание ffmpeg понижения скорости передачи может не дать желаемых результатов.
Другим способом снижения содержания информации является снижение глубины цвета. Как это сделать, пока не обсуждалось.
ffmpeg
странице man показана-fs
опция ограничения размера вывода, что-то вродеffmpeg -i in.avi -fs 100M out.avi
работы?