Вопрос или проблема
Я не знаю много о ffmpeg, кроме базового представления об кодировании/декодировании и нескольких видео, которые я смотрел на YouTube о его использовании. У меня также нет большого опыта в цифровом видео, я лишь изредка смотрю фильмы или курсы, или потоки и т. д…
У меня есть компьютер Intel с i7-6700, который работает медленно. И у меня есть папка на 30 гигабайт с лекциями, закодированными в старом формате реального медиа “.rm”, и я пробовал ffmpeg на ней.
ffmpeg -init_hw_device "vulkan=vk:0" -hwaccel vulkan -hwaccel_output_format vulkan -i input.rm -c:v hevc output.mp4
Результат был впечатляющим: входной файл весил 144 мегабайта, выходной — 95 мегабайт, что составляет чуть более 30% сокращения.
40%+ также было получено с файлами AVI, что заставило меня заинтересоваться, чтобы узнать больше о ffmpeg, и привело меня к вопросу, который стоит за постом: почему я получил такое значительное сокращение размера видеовыхода? Это просто более эффективное сжатие для формата x265 или произошло сопоставимое потеря данных с оригинальных файлов?
И как бы я мог измерить такую потерю данных? Какие инструменты использовать, если таковые имеются, чтобы увидеть, какие данные были в входе и что вышло на выходе?
Я периодически проверяю документацию ffmpeg онлайн, но хотел получить ответ на свой вопрос быстрым и простым способом, потому что у меня много видео, которые я хочу сжать, чтобы сэкономить место, и это займет время, поэтому я решил спросить как можно раньше.
Существует ли какая-либо методология или инструменты, которые можно использовать для отслеживания потери данных при транскодировании видео с помощью ffmpeg?
Насколько и какие данные теряются при транскодировании в ffmpeg?
Дело не в ffmpeg, а в видеокодеке, который вы используете. Видеосжатие в целом является с потерями, и в зависимости от используемого кодека и его настроек, оно удаляет больше или меньше данных из видео. Конечно, суть в том, чтобы удалить только те данные, которые вы не видите. Некоторые кодеки более успешны в этом, чем другие.
Почему я получил такое значительное сокращение размера видеовыхода?
Видеокодеки со временем развиваются. Во многом это связано с тем, что алгоритмы становятся более умными, но в основном это происходит из-за того, что доступная вычислительная мощность значительно увеличивается с течением времени. Таким образом, более современный кодек обычно может значительно уменьшить размер видео без значительной потери качества.
И как бы я мог измерить такую потерю данных?
На практике просмотрите одно и то же видео до и после рекомпрессии рядом. Сосредоточьтесь на мелких деталях. Вода и взрывы notoriously сложно сжать, поэтому вы, скорее всего, сначала заметите снижение качества именно там.
Ответ или решение
Потери данных при транскодировании с использованием FFmpeg: подробный анализ
Введение
Транскодирование видео — это процесс изменения формата, кодека или параметров сжатия медиафайла. FFmpeg, как один из наиболее распространенных инструментов для работы с мультимедийными файлами, позволяет пользователям преобразовывать видеоконтент различных форматов. Однако, когда речь идет о транскодировании, важно понимать, сколько и каких данных может быть потеряно в процессе.
Природа видеосжатия
Лоссивое и без потерь сжатие. Большинство используемых видеокодеков, в том числе HEVC (x265), применяют лоссивые методы сжатия. Это означает, что некоторые данные о видео теряются при сжатии, чтобы уменьшить размер файла. Кодеки, такие как HEVC, работают, удаляя избыточные визуальные данные, которые человек не заметит, тем самым достигая более эффективного соотношения размера и качества.
Причины значительного уменьшения размера файла
В вашем случае, при кодировании исходного файла формата .rm в формат mp4 с помощью кодека HEVC, размер файла уменьшился с 144 МБ до 95 МБ — это сокращение почти на 30%. Причины подобного уменьшения размеров заключаются в:
-
Современной технологии кодирования: HEVC предлагает более совершенные алгоритмы сжатия по сравнению с устаревшими форматами. Он может уменьшать файл, не ухудшая визуальное качество.
-
Оптимизации параметров сжатия: Кодеки могут настраиваться для достижения лучшего соотношения между качеством и размером файла. Например, использование различных уровней битрейта и настроек качества может привести к меньшему размеру выходного файла.
Методы измерения потерь данных
Чтобы оценить, сколько данных было утеряно, можно использовать несколько подходов:
-
Сравнительный анализ качества: Один из наиболее простых методов — визуально сравнить исходное и сжатое видео. Обратите внимание на детали, особенно в сложных сценах, таких как вода или взрывы, которые труднее поддаются сжатию.
-
Инструменты для анализа медиафайлов: Используйте программы, такие как MediaInfo или VLC, чтобы получить техническую информацию о видеофайлах. Эти инструменты могут предоставить информацию о битрейте, разрешении, частоте кадров и других параметрах, которые могут помочь выявить изменения между исходным и сжатым файлами.
-
Тесты на восприятие: Проведите сессии с участниками, чтобы выяснить, заметят ли они разницу в качестве между оригиналом и кодированным файлом. Это качественный подход для определения эффекта потерь.
Заключение
Транскодирование с помощью FFmpeg может привести к потере данных, но также предоставляет возможность значительно сократить размер файлов благодаря современным кодекам и технологиям. Степень потерь варьируется в зависимости от выбранного кодека и его настроек. Выбор правильного метода измерения потерь данных может существенно помочь в оценке качества выходного видеоконтента.
Если у вас есть изображения или серии видео, которые вы хотите перекодировать, ознакомьтесь с параметрами кодирования и попробуйте разные настройки, чтобы достичь оптимального баланса между качеством и размером файла.