Я перевірив більшість інших запропонованих відповідей на це питання. Висновки даних тесту наведені нижче. Ось запропоновані відповіді, які я перевірив:
(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
ДАНІ
- "size" - відсотковий розмір пікселя перетвореного відео по відношенню до оригіналу.
- "бітрейт" - бітрейт оригінальних та конвертованих відео.
- "визначення" - розмір пікселів відео.
- "конвертувати" - час перетворення відео за секунди.
Я розраховував цільовий бітрейт для (BL), використовуючи запропонований метод.
=== Файл A - як вузол допомагає приводити кут-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 з кутовим _ Автор - Лі Костелло-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
працює?