Какие существуют лучшие методы для эффективного перекодирования видео?

У меня есть два видеофайла, для которых я проанализировал пересчитанные характеристики. Второй файл показывает в 7 раз большую "информативность", но его размер всего втрое больше. Я использовал Media Player Classic для получения информации о кодировании, однако не заметил принципиальных различий.

Я хотел бы найти способ перекодировать видео более эффективно, чтобы добиться более высокого FPS (так как 20 кадров в секунду выглядят плохо) и уменьшить размер файла. Я знаком с более эффективными кодеками, такими как AV1 и VP9-WebM, но понимаю, что они не всегда поддерживаются.

Что можно сделать в данном случае? С чего лучше начать? Какие шаги предпринять?
  • 21 января 2025 г. 11:54
Ответы на вопрос 2
Для эффективного перекодирования видео и достижения лучшего соотношения между качеством и размером файла, вы можете использовать ряд методов и инструментов. Вот несколько шагов и рекомендаций, которые помогут вам в этом процессе:

### 1. Выбор кодека

Вы уже упомянули о таких современных кодеках, как AV1 и VP9. Рассмотрим подробнее их использование:

- **AV1**: Этот кодек обеспечивает отличное сжатие и качество, но его кодирование может быть медленным. Поддержка AV1 улучшается, но не все платформы и устройства его поддерживают.
- **VP9**: Хорошо подходит для веб-видео. У него высокая степень сжатия, и он поддерживается многими браузерами.
- **H.265/HEVC**: Хороший баланс между качеством и размером, также поддерживается многими устройствами и плеерами. 

### 2. Использование программ для кодирования

Существуют разнообразные инструменты для перекодирования видео с поддержкой современных кодеков:

- **HandBrake**: Удобный и бесплатный инструмент с поддержкой H.265 и других кодеков. Вы можете настраивать параметры битрейта, разрешения и других характеристик.
- **FFmpeg**: Мощный инструмент командной строки с огромными возможностями. Позволяет использовать различные кодеки, корректировать разрешение, частоту кадров и многое другое.
- **Avidemux**: Легкий в использовании инструмент для быстрого перекодирования и редактирования видео. 

### 3. Настройки кодирования

Атрибуты, которые стоит настроить:

- **Битрейт**: Уменьшите битрейт для снижения размера файла; однако имейте в виду, что слишком низкий битрейт может снижать качество.
- **Разрешение**: Если разрешение слишком высокое для вашего контента или целевой платформы, попробуйте снизить его.
- **Частота кадров (FPS)**: Повышение FPS может негативно повлиять на размер файла. Попробуйте оптимальное значение (например, 30 FPS или 24 FPS, если это подходит для контента).
- **Профили и уровни кодирования**: Используйте более высокие профили (например, main или high для H.264/HEVC), чтобы получить лучшее качество при аналогичном битрейте.

### 4. Оптимизация

Для достижения ещё большей эффективности:

- **Дуальное кодирование**: Используйте два прохода кодирования. В первом проходе собираются данные о видео, а во втором автоматически выбирается лучший битрейт.
- **Настройки качества**: Задайте целевое качество (например, QP для FFmpeg) вместо фиксированного битрейта.
- **Проверка целевых устройств**: Поддержка форматирования и кодеков - это важный аспект. Убедитесь, что ваши выборы совместимы с платформой, на которой ваше видео будет воспроизводиться.

### 5. Тестирование

После изменения настроек:

- Сделайте несколько тестовых кодирований с разными настройками.
- Сравните качество и размер файла.
- Используйте инструменты анализа, такие как MediaInfo, чтобы оценить различия.

### Заключение

Перекодирование видео — это баланс между качеством и размером файла. Экспериментируйте с различными настройками и кодеками, чтобы найти оптимальные значения для вашего конкретного случая. Начните с настройки битрейта и частоты кадров, а затем переходите к единообразию кодеков и профилей.
Первому файлу нужно сжать 402240 точек на кадр, 20 fps, получаем в секунду 8 млн точек. Видим сжатие 817 kb/sec 
Второму файлу нужно сжать 921600 точек на кадр, 60 fps, получаем в секунду 55.3 млн точек. Видим 2526 kb/sec

Сравниваем 55.3 / 8 и 2526 / 817 = 6.9125 и 3.0917992656058751529987760097919

То есть разница в "качестве сжатия" всего в 2 с хвостиком раза.
В данном случае еще следует обратить внимание, что видео с маленьким разрешением часто скрадывает мелкие движения, их вообще на нем не видно, и соответственно оно упрощается. Либо вообще можно проверить что за видео - фильмы в среднем сжимаются гораздо хуже, чем какие-нить презентации с кучей статического контента.

По поводу размера файлов, еще обращу внимание что 128 и 104 kb/s для звука - значимо влияет на размер файла. Звук вообще может занимать четверть а то и треть, ибо сжимается хуже, чем видео.

Ну собственно и все. Тут оба видео сжаты одним и тем же кодеком, и сложно предположить, что можно как-то заметно качественнее пережать, дефолтные настройки в современных кодеках обычно fits many, и какие-то кастомные настройки обычно влияют не столько на размер, сколько на адаптацию сжатия к контенту видео.

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

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