Как я могу использовать Avidemux для повторного сжатия видео H264 с таким же качеством?
У меня есть несколько видеороликов, снятых на телефон, и они довольно массивные, учитывая их длину (например, 3-минутное видео с разрешением 1920×1080 превышает 400 МБ).
Я предполагаю, что это потому, что телефон предпочитает срок службы батареи и качество по сравнению с местом для хранения, поэтому я думаю, что я мог бы запустить их через Avidemux, чтобы перекодировать их и уменьшить их размер, не сильно ухудшая их качество. Я понимаю, что некоторая деградация неизбежна. Но так как есть много места для сжатия, я думаю, что должно быть возможно избежать значительной ощутимой деградации.
Видео кодируются в H264/AAC в контейнере MP4. Я могу просто скопировать аудио прямо в Avidemux. Но как вывести некоторые приблизительные значения для кодера H264, чтобы сохранить качество видео? Я не думаю, что формат H264 хранит информацию о своих входных параметрах. Можно выбрать уровень качества, который полностью увеличивает размер файла без усиления, а также можно выбрать уровень качества, который делает видео ужасным; Есть ли какой-то способ проанализировать входные данные, чтобы выяснить "приятное место", где размер видео уменьшается, не слишком сильно влияя на качество?
Я понимаю, что в этом вопросе есть некоторая степень субъективности; что я считаю "ощутимой" деградацией? Однако, учитывая, что видеокодеры традиционно параметризованы качествами восприятия, возможно ли придумать приблизительный диапазон для некоторых основных параметров?
1 ответ
Есть несколько инструментов командной строки или 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
а также level
(в ffmpeg
) параметры. Не беспокойтесь о скорости передачи, она ничего не говорит вам о размере файла. Я думаю, что level
в ffmpeg
в 10 раз превышает реальное значение (т.е. 40
означает уровень 4, 41
означает 4.1 и т. д.).
Avidemux позволяет вам использовать упрощенные настройки, где вы можете установить их и оставить более точные настройки по умолчанию в Avidemux.
Я понял, что это соответствующие настройки:
- Использовать расширенную настройку не отмечено.
- Профиль высокий.
- Уровень IDC - 4.
Использование более медленного предустановленного значения повысит качество этих параметров (до определенного уровня).
Вы также можете использовать двухпроходное кодирование для дальнейшего уменьшения размера файла. Я не знаю хорошего способа предсказать разумный размер файла, но хороший средний двухбитовый битрейт для 1920×1080 - это что-то от 6-8 Мбит / с. Не ориентируйтесь на исходный размер файла или скорость передачи: вы просто получите файл того же размера.
В моем случае простое однопроходное кодирование на уровне качества 20 (по умолчанию Avidemux) уменьшило размер файла вдвое, а сравнение с использованием Bino и Kinovea не показало (мне) никакой разницы, даже на размытых кадрах или высококонтрастных кадрах. Выполнение двухпроходного кодирования со скоростью 7 Мбит / с (именно так получилось однопроходное кодирование) снизило это до 40%.