2

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

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

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

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

1 ответ1

3

Существует несколько инструментов командной строки или графического интерфейса, которые показывают некоторые упрощенные параметры кодирования видео 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). Не беспокойтесь о скорости передачи, она ничего не говорит вам о размере файла. Я думаю, что level в выводе ffmpeg 10 раз больше реального значения (т.е. 40 означает уровень 4, 41 означает 4.1 и т.д.).

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

Скриншот Avidemux

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .