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

2020
detly

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

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

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

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

1

1 ответ на вопрос

3
detly

Есть несколько инструментов командной строки или GUI, которые показывают некоторые упрощенные параметры кодирования видео 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«s выход 10 × реальной стоимости (то есть. 40Означает уровень 4, 41означает 4,1, и т.д.).

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

Avidemux screenshot

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

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

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

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

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

Похожие вопросы