Как использовать Avidemux для повторного сжатия видео H264 с сохранением качества?

Как использовать Avidemux для повторного сжатия видео H264 с сохранением качества?

У меня есть куча видеороликов, снятых на мой телефон, и они довольно большие, учитывая их продолжительность (например, 3-минутное видео с разрешением 1920×1080 весит более 400 МБ).

Я предполагаю, что это потому, что телефон отдает предпочтение времени работы батареи и качеству, а не пространству для хранения, поэтому я думаю, что я мог бы пропустить их через Avidemux, чтобы перекодировать их и уменьшить их размер, не слишком жертвуя их качеством. Я понимаю, что некоторое ухудшение неизбежно. Но поскольку есть так много места для сжатия, я думаю, что должно быть возможно избежать значительной частиощутимыйдеградация.

Видео закодировано в H264/AAC в контейнере MP4. Я могу просто скопировать аудио напрямую в Avidemux. Но как мне вывести некоторые приблизительные значения для кодировщика H264, чтобы сохранить качество видео? Я не думаю, что формат H264 сохраняет информацию о своих входных параметрах. Можно выбрать уровень качества, который полностью раздувает размер файла без какого-либо выигрыша, и также можно выбрать уровень качества, который делает видео ужасным; есть ли какой-то способ проанализировать входные данные, чтобы выяснить «золотую середину», где размер видео уменьшается без слишком сильного влияния на качество?

Я понимаю, что в этом вопросе есть некоторая доля субъективности: что быясчитать "ощутимой" деградацией? Однако, учитывая, что видеокодеры традиционно параметризуются по перцептивным качествам, можно ли определить приблизительный диапазон для некоторых основных параметров?

решение1

Существует несколько инструментов командной строки или графического интерфейса, которые показывают некоторые упрощенные параметры кодирования видео H264, например, ffmpegили mediainfo:

$ mediainfo myvideo.mp4
[... look for the "Video" section ...]
Format profile                           : High@L4
Bit rate                                 : 17.0 Mbps

$ ffprobe -show_streams myvideo.mp4
[... look for a [STREAM] header followed by codec_type=video ...]
profile=High
level=40
bit_rate=16996359

Обратите внимание на параметры profileи levelffmpeg). Не беспокойтесь о битрейте, он не скажет вам ничего, чего не скажет размер файла. Ядуматьчто выход levelin ffmpegв 10 раз больше реального значения (т. е. 40означает уровень 4, 41означает 4,1 и т. д.).

Avidemux позволяет использовать упрощенные настройки, в которых вы можете задать их самостоятельно, а более тонкие настройки оставить по умолчанию, как в Avidemux.

Скриншот Avidemux

Я подумал, что это соответствующие настройки:

  • Использовать расширенную конфигурациюне отмечено.
  • Профильв приоритете.
  • Уровень IDCэто 4.

Используя более медленныйПредустановленныйценность увеличит качество в пределах этих параметров (до определенного предела).

Вы также можете использовать двухпроходное кодирование для дальнейшего уменьшения размера файла. Я не знаю хорошего способа предсказать разумный размер файла, но хороший двухпроходный средний битрейт для 1920×1080 составляет что-то от 6 до 8 Мбит/с. Не ориентируйтесь на исходный размер файлаили скорость передачи данных: вы просто получите файл того же размера.

В моем случае простое кодирование в один проход на уровне качества 20 (по умолчанию в Avidemux) уменьшило размер файла вдвое, а сравнение с использованием Bino и Kinovea не показало никакой разницы (для меня), даже на кадрах с размытием движения или высокой контрастностью. Кодирование в два прохода на скорости 7 Мбит/с (именно так вышло кодирование в один проход) уменьшило этот показатель до 40%.

Связанный контент