Каким кодеком лучше сжимать видео
Рассказываем про сущность видеокодеков. Зачем нужны и что с ними делать?
Скачиваем HandBrake - бесплатный видеоконвертер
Видеконвертер Handbrake является одним из наиболее полезных кросс-платформенных медиа-конвертеров. Это абсолютно бесплатный и представляющий одинаково производительный функционал на Windows, Mac и Linux.
Handbrake
Видеоконвертер Handbrake имеет кучу параметров для настройки практически любого компонента видео и аудио, но разобраться в этом не составит особого труда, хотя минимальными знаниями видеоконвертации всё-таки нужно обладать. Все настройки сгруппированы по вкладкам и разделам. Поддержки русской локализации к сожалению нет, да она и не нужна, чтобы понять параметры, которые можно настроить.
Подготовьте видео файл, который Вы хотите уменьшить, скопировав его на компьютер. Запустите Handbrake и откройте подготовленный файл.
Выбор пресетов
Если Вам не знаком процесс видеоконвертации или Вам лень копаться в настройках программы, то разработчики предусмотрели наиболее оптимальные настройки (пресеты) уменьшения видео файлов под различные устройства. Каждый пресет представляет собой настроенные параметры аудио и видео для iPhone, Android, Windows Phone и других устройств.
Выбираете нужный пресет и программа автоматически выберет оптимальные параметры для выходного файла с оптимальным размером и качеством.
Кроме того, если вдруг Вам этого будет мало и Вы захотите более тонко настроить тот или иной параметр, то после настройки можно сохранить свой пресет, который потом использовать еще много раз.
Далее рассмотри наиболее важные особенности Handbrake для ручной настройки параметров видеоконвертации.
В Windows
Воспроизведите файл в проигрывателе, затем щелкните на него в библиотеке правой кнопкой мыши и выберите пункт "Свойства". В открывшейся вкладке вам нужны пункт "Видеокодек".
Другие хитрости для сжатия видео
Теперь с помощью этого руководства Вы сможете максимально сжать Ваши видео файлы без существенного влияния на качество.
А какие приемы используете Вы, чтобы уменьшить размер видео? Поделитесь в комментариях какими инструментами Вы сжимаете видео файлы.
Затраты на хранение данных зачастую становятся основным пунктом расходов при создании системы видеонаблюдения. Впрочем, они были бы несравнимо больше, если бы в мире не существовало алгоритмов, способных сжимать видеосигнал. О том, насколько эффективны современные кодеки, и какие принципы лежат в основе их работы, мы и поговорим в сегодняшнем материале.
Для большей наглядности начнем с цифр. Пускай видеозапись будет вестись непрерывно, в разрешении Full HD (сейчас это уже необходимый минимум, во всяком случае, если вы хотите полноценно использовать функции видеоаналитики) и в режиме реального времени (то есть, с фреймрейтом 25 кадров в секунду). Предположим также, что выбранное нами оборудование поддерживает аппаратное кодирование H.265. В этом случае при разных настройках качества изображения (высоком, среднем и низком) мы получим примерно следующие результаты.
Кодек
Интенсивность движения в кадре
Использование дискового пространства за сутки, ГБ
H.265 (Высокое качество)
H.265 (Высокое качество)
H.265 (Высокое качество)
H.265 (Среднее качество)
H.265 (Среднее качество)
H.265 (Среднее качество)
H.265 (Низкое качество)
H.265 (Низкое качество)
H.265 (Низкое качество)
Но если бы сжатия видео не существовало в принципе, мы бы увидели совсем иные цифры. Попробуем разобраться, почему. Видеопоток представляет собой не что иное, как последовательность статичных картинок (кадров) в определенном разрешении. Технически каждый кадр является двумерным массивом, содержащим информацию об элементарных единицах (пикселях), формирующих изображение. В системе TrueColor для кодирования каждого пикселя требуется 3 байта. Таким образом, в приведенном примере мы бы получили битрейт:
1920×1080×25×3/1048576 = ~148 Мб/с
Учитывая, что в сутках 86400 секунд, цифры выходят поистине астрономические:
148×86400/1024=12487 ГБ
Итак, если бы мы записывали видео без сжатия в максимальном качестве при заданных условиях, то для хранения данных, полученных с одной единственной видеокамеры в течение суток нам бы потребовалось 12 терабайт дискового пространства. Но даже система безопасности квартиры или малого офиса предполагает наличие, как минимум, двух устройств видеофиксации, тогда как сам архив необходимо сохранять в течение нескольких недель или даже месяцев, если того требует законодательство. То есть, для обслуживания любого объекта, даже весьма скромных размеров, потребовался бы целый дата-центр!
К счастью, современные алгоритмы сжатия видео помогают существенно экономить дисковое пространство: так, использование кодека H.265 позволяет сократить объем видео в 90 (!) раз. Добиться столь впечатляющих результатов удалось благодаря целому стеку разнообразных технологий, которые давно и успешно применяются не только в сфере видеонаблюдения, но и в «гражданском» секторе: в системах аналогового и цифрового телевидения, в любительской и профессиональной съемке, и многих других ситуациях.
Наиболее простой и наглядный пример — цветовая субдискретизация. Так называют способ кодирования видео, при котором намеренно снижается цветовое разрешение кадров и частота выборки цветоразностных сигналов становится меньше частоты выборки яркостного сигнала. Такой метод сжатия видеоданных полностью оправдан как с позиции физиологии человека, так и с точки зрения практического применения в области видеофиксации. Наши глаза хорошо замечают разницу в яркости, однако гораздо менее чувствительны к перепадам цвета, именно поэтому выборкой цветоразностных сигналов можно пожертвовать, ведь большинство людей этого попросту не заметит. В то же время, сложно представить, как в розыск объявляют машину цвета «паука, замышляющего преступление»: в ориентировке будет написано «темно-серый», и это правильно, ведь иначе прочитавший описание авто даже не поймет, о каком оттенке идет речь.
А вот со снижением детализации все оказывается уже совсем не так однозначно. Технически квантование (то есть, разбиение диапазона сигнала на некоторое число уровней с последующим их приведением к заданным значениям) работает великолепно: используя данный метод, размер видео можно многократно уменьшить. Но так мы можем упустить важные детали (например, номер проезжающего вдалеке автомобиля или черты лица злоумышленника): они окажутся смазаны и такая запись будет для нас бесполезной. Как же поступить в этой ситуации? Ответ прост, как и все гениальное: стоит взять за точку отсчета динамические объекты, как все тут же становится на свои места. Этот принцип успешно используется со времен появления кодека H.264 и отлично себя зарекомендовал, открыв ряд дополнительных возможностей для сжатия данных.
В MACos
Выберите файл и откройте его свойства. Во вкладке найдете пункт "Видеокодек".
Изменяем частоту кадров Видео
Ещё один важный параметр при сжатии видео, которому нужно уделить внимание - изменение часты кадров. Хочу сразу сказать, что я не советую изменять частоту кадров в отснятых Вами видео файлах. Если кто-то говорит Вам, что Вы должны уменьшить частоту кадров видео, не слушайте их. Каждый видео эксперт или специалист по редактирования видео скажет Вам, что в своих видео нужно сохранять исходную частоту кадров.
Человеческий глаз не способен увидеть скачки изображения выше 24 кадров в секунду (FPS). Поэтому может показаться логичным, если понизить частоту кадров до этого диапазона. Тем не менее, делать этого не нужно, та как изменение частоты кадров влияет на плавность видео, и в особенности на Ваши любительские съёмки, которые не лишены недостатков и содержат и рывки и резкие движения в кадре.
Оправданное изменение частоты кадров видео может быть полезно только для экспериментов со съёмкой замедленного действия.
Настройки частоты кадров в Handbrake находятся на вкладке Video.
А что за кодеки вообще бывают?
Их очень много, но мы разделим их на три группы для лёгкого восприятия.
Сколько места на диске занимает видео HD Ready, Full HD, 4K
Производительность видеосъёмки современных девайсов достигла очень серьезных высот. И уже съёмка в Full HD с частотой в 30 кадров/секунду является стандартом и необходимым требованием для любой цифровой камеры. Все флагманы смартфонов умеют снимать в Full HD, практически не уступая качеством получаемой картинки зеркальным камерам.
А сколько же места требуется для разных форматов видео для видеосъёмки. Точных показателей Вам никто не скажет, приведу некоторые примерные данные, на которые можно опираться при выборе устройства для записи и формата видео.
1 минута видео в среднем занимает:
- При съёмке в HD Readry (720р) со скоростью 30 кадров/секунду - 60 Мбайт;
- При съёмке Full HD (1080p) со скоростью 30 кадров/секунду - 130 Mбайт;
- При съёмке Full HD (1080p) со скоростью 60 кадров/секунду - 200 Мбайт;
- При съёмке 4К (UHD) скоростью 30 кадров/секунду - 375 Мбайт.
Разница между форматами видео HD, UHD, 4K и 8K играет решающую роль в определении объёмов записи. Но есть и другие параметры, от которых зависит размер видео файла: параметров аудио, битрейта, соотношения сторон, цветового разрешения и прочего.
Уменьшать видео на смартфонах я бы не рекомендовал без крайней необходимости, потому что никакой смартфон не сможет сохранить оптимальное качество видео и максимально сжать видео файл. Для процесса уменьшения видео существуют оптимальные компьютерные решения, которые с этой задачей справляются на ура. Сегодня я рассмотрю один из таких инструментов, который очень просто и быстро позволяет уменьшить размер видео файла без ущерба для качества.
Устанавливаем настройки Аудио
Перед тем, как перейти к основном параметром видео, настроим сначала аудио. Для этого перейдите на вкладку Audio в Handbrake. Если Вы не профессионал конвертации видео, то удивитесь: как много места аудио каналы занимают в отснятом видео файле.
Но, как правило, качественный звук в видео нужен только, если Вы сняли концерт любимой группы или музыкальный конкурс своих детей. Для остальных видео, где человеческая речь или музыкальная составляющая не является чем-то приоритетным, вот что мы сделаем:
- Проверьте, сколько всего звуковых дорожек. Рекомендую оставлять только одну, причём ту, которая, как правило, стоит первой. Остальные дорожки, кроме первой удалите.
- Используемый кодек советуют выбирать AAC (CoreAudio) или MP3. Эти кодеки позволят максимум уменьшить размер аудио дорожки с минимальными потерями, что достаточно не плохо для большинства случаев. На самом деле даже для концертов или других подобных видео, где важен звук Вы можете выбрать один из этих форматов сжатия, но попробовав выставить более высокий битрейт аудио.
- В битрейте выберите значение 160, которое установлено обычно по умолчанию для большинства видео. Выберите более высокий битрейт (256 или 320), если конвертируете видео с приоритетом аудио.
Я не рекомендую Вам выставлять частоту менее 32 и выше 48 для большинства случаев, а лучше установите его на Auto.
Для приведённого примера настройки аудио вторую дорожку можно сразу же удалить, она нам не нужна.
В чем разница между H.264 и H.265?
В H.265 используются все те же принципы сжатия, что и в H.264: фоновое изображение сохраняется единожды, а затем фиксируются лишь изменения, источником которых являются движущиеся объекты, что позволяет значительно снизить требования не только к объему хранилища, но и к пропускной способности сети. Однако в H.265 многие алгоритмы и методы прогнозирования движения претерпели значительные качественные изменения.
Так, обновленная версия кодека стала использовать макроблоки дерева кодирования (Coding Tree Unit, CTU) переменного размера с разрешением до 64×64 пикселей, тогда как ранее максимальный размер такого блока составлял лишь 16×16 пикселей. Это позволило существенно повысить точность выделения динамических блоков, а также эффективность обработки кадров в разрешении 4K и выше.
Кроме того, H.265 обзавелся улучшенным deblocking filter — фильтром, отвечающим за сглаживание границ блоков, необходимым для устранения артефактов по линии их стыковки. Наконец, улучшенный алгоритм прогнозирования вектора движения (Motion Vector Predictor, MVP) помог заметно снизить объем видео за счет радикального повышения точности предсказаний при кодировании движущихся объектов, чего удалось достичь за счет увеличения количества отслеживаемых направлений: если ранее учитывалось лишь 8 векторов, то теперь — 36.
Помимо всего перечисленного выше, в H.265 была улучшена поддержка многопоточных вычислений: квадратные области, на которые разбивается каждый кадр при кодировании, теперь могут обрабатываться независимо одна от другой. Появилась и поддержка волновой параллельной обработки данных (Wavefront Parallelel Processing, WPP), что также способствует повышению производительности сжатия. При активации режима WPP обработка CTU осуществляется построчно, слева направо, однако кодирование каждой последующей строки может начаться еще до завершения предыдущей в том случае, если данных, полученных из ранее обработанных CTU, для этого достаточно. Кодирование различных строк CTU с временной задержкой со сдвигом, наряду с поддержкой расширенного набора инструкций AVX/AVX2 позволяет дополнительно повысить скорость обработки видеопотока в многоядерных и многопроцессорных системах.
В чем суть кодека?
Когда мы снимаем видео, то оно в своем исходном виде прилично весит.
Представьте записываете вы 3-х минутный видос, а он весит 11 гигабайт.
В таких случаях нужен отдельный чемоданчик с картами памяти, иначе материал попросту не поместится.
Чтобы не таскаться с таким чемоданом и все файлы вмещались на карточку — нужен кодек.
Он сжимает данные файла для хранения или отправки, а затем разжимает их для воспроизведения или редактирования. По сути, это компьютерный код, который активируется каждый раз, когда запускается файл.
Но тут не всё так прекрасно. Из-за того, что видео сжимается, из него пропадает часть данных.
Это не так критично, как может показаться. В основном пропадают незначительные, идентичные кадры, записанные камерой.
А если происходят какие-то изменения в снимаемом материале, то кодек их плавно накладывает на предыдущие кадры.
Цель таких кодеков с потерей данных — уменьшить размер файла.
Есть кодеки без потери данных. Их цель улучшить качество медиа файла, одновременно с этим не увеличить его размер.
Флэш-карты для видеонаблюдения: когда значение имеет не только размер
И вновь вернемся к табличке, с которой мы начали сегодняшний разговор. Давайте подсчитаем, сколько дискового пространства нам понадобится в том случае, если мы хотим хранить видеоархив за последние 30 дней при максимальном качестве видеозаписи:
138×30/1024 = 4
По нынешним меркам 4 терабайта для винчестера индустриального класса — практически ничто: современные жесткие диски для видеонаблюдения имеют емкость до 14 терабайт и могут похвастаться рабочим ресурсом до 360 ТБ в год при MTBF до 1.5 миллионов часов. Что же касается карт памяти, то здесь все оказывается не так однозначно.
В IP-камерах флэш-карты играют роль резервных хранилищ: данные на них постоянно перезаписываются, чтобы в случае потери связи с видеосервером недостающий фрагмент видеозаписи можно было восстановить из локальной копии. Такой подход позволяет существенно повысить отказоустойчивость всей системы безопасности, однако при этом сами карты памяти испытывают колоссальные нагрузки.
При бытовом использовании подобное попросту невозможно, поэтому даже самая бюджетная карта памяти способна прослужить вам несколько лет к ряду без единого сбоя. А все благодаря алгоритмам выравнивания износа (wear leveling). Схематично их работу можно описать следующим образом. Пусть в нашем распоряжении есть новенькая флеш-карта, только что из магазина. Мы записали на нее несколько видеороликов, использовав 7 из 16 гигабайт. Через некоторое время мы удалили часть ненужных видео, освободив 3 гигабайта, и записали новые, объем которых составил 2 ГБ. Казалось бы, можно задействовать только что освободившееся место, однако механизм выравнивания износа выделит под новые данные ту часть памяти, которая ранее никогда не использовалась. Хотя современные контроллеры «тасуют» биты и байты куда более изощренно, общий принцип остается неизменным.
Напомним, что кодирование битов информации происходит путем изменения заряда в ячейках памяти за счет квантового туннелирования электронов сквозь слой диэлектрика, что вызывает постепенный износ диэлектрических слоев с последующей утечкой заряда. И чем чаще меняется заряд в конкретной ячейке, тем раньше она выйдет из строя. Выравнивание износа как раз направлено на то, чтобы каждая из доступных ячеек перезаписывалась примерно одинаковое количество раз и, таким образом, способствует увеличению срока службы карты памяти.
Нетрудно догадаться, что wear leveling перестает играть хоть сколько-нибудь значимую роль в том случае, если флэш-карта постоянно перезаписывается целиком: здесь на первый план уже выходит выносливость самих чипов. Наиболее объективным критерием оценки последней является максимальное количество циклов программирования/стирания (program/erase cycle), или, сокращенно, циклов P/E, которое способно выдержать флеш-память. Также достаточно точным и в данном случае наглядным (так как мы можем заранее рассчитать объемы перезаписи) показателем является коэффициент TBW (Terabytes Written). Если в технических характеристиках указан лишь один из перечисленных показателей, то вычислить другой не составит особого труда. Достаточно воспользоваться следующей формулой:
TBW = (Емкость × Количество циклов P/E)/1000
Так, например, TBW флеш-карты емкостью 128 гигабайт, ресурс которой составляет 200 P/E, будет равен: (128 × 200)/1000 = 25,6 TBW.
Давайте считать дальше. Выносливость карт памяти потребительского уровня составляет 100–300 P/E, и 300 — это в самом лучшем случае. Опираясь на эти цифры, мы можем с достаточно высокой точностью оценить срок их службы. Воспользуемся формулой и заполним новую таблицу для карты памяти емкостью 128 ГБ. Возьмем за ориентир максимальное качество картинки в Full HD, то есть в сутки камера будет записывать 138 ГБ видео, как мы выяснили ранее.
Проблема с кодированием видео и его сжатием его из гигабайтов в мегабайты, по-моему, всегда была актуальной. Если более менее профессиональные операторы, монтажники и т.д. уже не одну кошку съели на этой теме, то например любители и те, кто записывают видео с экрана своего монитора, порой долго чешут затылок, прежде чем добиться каких либо серьезных результатов. В итоге куча потерянного времени, никому не нужные гигабайты исходящего трафика для загрузки домашнего видео на ютуб. Конечно, можно использовать в какой-то степени готовые решения в лице одной программы, и сжать видео буквально тремя кликами, но это не наш подход, когда абсолютно все шаги можно контролировать и влиять на них. Покопавшись в поиске, Хабр так и не выдал ничего похожего. Хотя возможно, что просто плохо поискал.
Сразу оговорюсь, что изначально статья не моя. Я наткнулся на неё, лет пять назад, когда встала задача что-то делать с записанными моментами из тогда любимой многими игры Battlefield 2, на популярном отечественном ресурсе мувимейкеров. Постепенно статья допиливалась и публиковалась, то там, то там. Не исключаю, что первоначально статья пришла из-за «бугра» и всего на всего была переведена на наш могучий язык.
Итак, кодек х264 пришел на смену таким монстрам своего времени как DivX и XviD и удачно положил обоих на лопатки. Для того, что бы добиться действительно впечатляющего результата, нам понадобится следующие вещи:
1. MeGUI — этим мы сжимаем само видео. Вернее, сжимает сам кодек, а это только GUI объединивший в себе десятки разных специализированных утилит.
2. Avisynth — фреймсервер. Если вдруг кто не знает, что это такое, то он является посредником между нашим не сжатым видео и кодеком.
3. VLC media player — Тут совсем все просто. Всеядный плеер, умеющий работать с потоковым видео. Достаточно популярный.
4. K-Lite Codec Pack — пакет все возможных кодеков, на все случаи жизни. Нам нужна сборка Mega.
Настоятельно рекомендую обновлять K-Lite Codec Pack, как минимум всегда перед сжатием видео. Это конечно не обязательно, но опыт подсказывает, что если вы столкнетесь с непонятными ошибками/косяками/глюками/etc то в 50%, а то и больше, обновление кодеков избавит вас от лишнего геморроя.
Кстати, MeGUI достаточно быстро и часто обновляется и дополняется. Скриншоты приведенные ниже, могут уже не соответствовать текущей версии, но это не страшно. Как правило, меняется расположение элементов, что то пододвинули вправо, что-то перенесли в другую закладку. Пропажа находится очень быстро, поэтому не пугайтесь.
Поехали. Устанавливаем Avisynth, а затем MeGUI. После того, как MeGUI обновится, идем в папку, где лежит наш опытный образец, и для удобства создаем там файл с расширением *.avs. Открываем блокнотом и пишем заветные строки:
Первая строка, подскажет MeGUI с каким файлом требуется работать. Вторая строка, указывает на используемую систему цветов.
Существует несколько различных способов представление цвета. Например: цветовое пространство YUV и RGB. В YUV цветовом пространстве есть один компонент, который представляет яркость (сигнал яркости) и два других компонента, которые представляют цвет (сигнал цветности). В то время как яркость передается со всеми деталями, некоторые детали в компонентах сигнала цветности могут быть удалены путем понижения разрешения отсчетов (фильтрация или усреднение), что может быть сделано несколькими способами (т.е. есть много форматов для сохранения изображения в цветовом пространстве YUV). YV12 — один из таких форматов (тут сигнал цветности общий для каждого блока пиксел 2x2), который поддерживается AviSynth.
У нас получился скрипт. Идем дальше. Открываем MeGUI и указываем месторасположение скрипта. Если скрипт AviSynth находится в той же папке где и ваше видео, то вторая строка заполнится автоматически.
Открываем настройки кодека, нажатием на кнопку Config, справа от Encoder settings. Ставим галочку, подтверждая, что нам действительно нужны расширенные настройки. Дальше нам остается поставить галочки в соответствии со скриншотами.
Нажимаем на кнопку queue и идем спать, пить кофе и т.д. в зависимости от предпочтений и мощностей ПК.
Хочу оговориться, что данный конфиг подходит для исходного видео 720p. Для 1080p нужно немного под редактировать конфиг:
Так же можно указать, сколько кодеру можно использовать ядер:
Вкладка Misc -> раздел Other -> Threads и указываем, в сколько потоков сжимать видео. 1 поток на 1 виртуальное или физическое ядро.
Что мы получаем в итоге. Я имел в наличии следующий видео-ролик:
Format: RGB
Codec ID: 0x00000000
Codec ID/Info: Basic Windows bitmap format. 1, 4 and 8 bpp versions are palettised. 16, 24 and 32bpp contain raw RGB samples
Duration: 3mn 42s
Bit rate: 663 Mbps
Width: 1 280 pixels
Height: 720 pixels
Display aspect ratio: 16:9
Frame rate: 29.970 fps
Bit depth: 8 bits
Bits/(Pixel*Frame): 24.000
Stream size: 17.2 GiB (100%)
После ожидания около 15-16 минут, я получил на выходе 184 Мб.
Видео высокой четкости радует красивой и детализированной картинкой, однако оно занимает много места на диске. CHIP расскажет, как сократить объем файлов и сэкономить место в домашнем архиве.
Видео высокой четкости радует красивой и детализированной картинкой, однако оно занимает много места на диске. CHIP расскажет, как сократить объем файлов и сэкономить место в домашнем архиве.
CHIP расскажет, как сократить объем файлов и сэкономить место в домашнем архиве Лето подошло к концу, и наступила пора разобраться с отснятыми в отпуске фото- и видеоматериалами. Причем современные фотокамеры уже позволяют снимать видео в формате высокой четкости. Однако отличное качество снимков и видеороликов имеет и обратную сторону: файлы стали более объемными и в большом количестве уже с трудом могут помещаться на жесткий диск ПК. А значит, прежде чем поделиться впечатлениями с друзьями, выложив видеоролики в Сеть, а затем разместить их в домашнем видеоархиве, необходимо позаботиться о том, чтобы полученные файлы все же занимали поменьше места. Но как сделать так, чтобы все эти красивые и яркие пейзажи не были испорчены применяемыми в видеоконвертерах алгоритмами сжатия? Первое, что при ходит в голову, — найти в Интернете надежные методики компрессии без потерь. Однако чаще всего под этим понятием подразумеваются вовсе не lossless-форматы, а способы кодирования с потерями, позволяющие визуально не ухудшать качество изображения.
Стандарт для сжатия видео
Своеобразным «стандартом» в сфере кодирования видео является кодек H.264. Он поддерживается в рамках стандартов Blu-ray и HD DVD. Кроме того, с ним работают Apple QuickTime и Adobe Flash Player. Такая мощная поддержка профессионального сообщества, наряду с ростом вычислительных мощностей ПК, обеспечила ему широчайшие возможности использования в видеотехнике и программных продуктах.
Главным достоинством кодека H.264 является высокая возможная степень сжатия видеопотока без значительных визуальных изменений картинки. Достигается это за счет анализа не только каждого кадра в отдельности, но и их последовательности. В типичном видеоролике, где изображение в кадре быстро меняется лишь изредка, применяются методики предсказания сразу нескольких последующих кадров, что дает существенный выигрыш при кодировании разного рода движения. Кроме того, определенный выигрыш получается от экономии на цветовом пространстве (4:2:0 YUV вместо RGB). Это позволяет кодировать видео «на лету» без особых вычислительных затрат. Именно поэтому кодек H.264 используется в большинстве современных потребительских камер, смартфонах и видеорегистраторах.
Идеальное сжатие и высокое качество
Вкратце опишем процесс настройки бесплатного кодека ffdshow tryouts (есть на CHIP DVD) построенного на базе H.264. Наша цель — продемонстрировать основные возможности, поэтому мы остановимся лишь на нескольких базовых параметрах. Для конвертирования видео мы выбрали бесплатную программу MeGUI и пакет кодеков K-Lite Codec Pack (есть на CHIP DVD). После того как вы установите эти два пакета, откройте MeGUI. На вкладке «Input» в меню «Encoder setting» выберите вариант «x264» и кликните по кнопке справа «Config». Теперь можно заняться настройкой параметров кодека. Они разделены на несколько закладок.
MAIN — здесь можно задать «Preset» кодирования. Для «домашнего» видео имеет смысл выбирать медленные пресеты («Slow», «Slower» и т. п.). Кроме того, в меню «Tuning» можно выбрать характер кодируемого ролика. Это тоже своего рода пресет, «включающий» определенные параметры оптимизации.
FRAME-TYPE — группа параметров, управляющих качеством сжатия. H.264 поддерживает многопроходное кодирование. Опытные пользователи считают, что для перекодирования фильмов оптимально использовать два прохода. Ниже задается требуемая степень сжатия. Все зависит от выбранного режима: можно указать либо битрейт, либо индекс качества.
MISC — здесь в поле «Custom command line» опытные пользователи могут задать дополнительные параметры кодирования. Доступные команды можно найти в спецификации метода.
Хотя H.264 и относится к стандарту «сжатие с потерями», в нем не применяются методики обратимой архивации. В частности, в H.264 позволяется выбрать способ сжатия без потерь по итогам всей обработки: CABAC (Context adaptive binary arythmetic codes) или CAVLC (Сontext adaptive variable length codes). Правда, стоит отметить, что в использованной нами в качестве примера бесплатной библиотеке ffdshow эта настройка из графического интерфейса недоступна.
Сохраняем видео в архив и на YouTube
Отснятые в отпуске видеоролики в высоком разрешении, как правило, занимают много места на диске. Хранить их в таком виде в домашнем видеоархиве не очень экономно. К тому же многие предпочитают делиться впечатлениями с друзьями, выкладывая наиболее интересные ролики на популярный видеохостинг YouTube. Мы предлагаем совместить архивирование контента и подготовку роликов к закачке на видеосервис, воспользовавшись нашими советами по сжатию роликов без ощутимых потерь и адаптируя их для размещения в Сети.
YouTube, как и многие другие онлайн-сервисы, применяет методику сжатия H.264. При этом для эффективной передачи видео по Сети, в том числе на мобильные устройства, ресурс задействует строго определенный набор параметров. При загрузке ролика на сервер осуществляется его перекодирование с учетом этих параметров. Наилучшего качества удастся достичь вовсе не наибольшим потоком или индексом качества, заданными при кодировании, а наиболее удачным подбором параметров под требования видеохостинга. Иными словами, если вы хотите в итоге разместить видео на YouTube, сжатие без потерь для вас будет означать следование следующим рекомендациям.
КОНТЕЙНЕР MPEG-4. Для сохранения видео YouTube рекомендует использовать контейнер MPEG-4, который является в каком-то смысле «родным» для H.264. Для этого воспользуйтесь бесплатной программой Avidemux (есть на CHIP DVD).
«ВЫСОКИЙ» ПРОФИЛЬ (HIGH QUALITY). В базовых параметрах кодека надо указать «Высокий» профиль (High). Для кодирования видео HD качества следует использовать уровень не ниже 4: лишь начиная с него поддерживается разрешение 1920×1080 точек с частотой до 30 кадров/с. Цветовое пространство — 4.2.0. Уровень можно выбирать самому.
В Avidemux в разделе «Video Output» выберите кодек MPEG-4 AVC (x264) и в настройках последнего задайте профиль «High Quality» СРЕДНИЙ БИТРЕЙТ. Для видео высокой четкости (разрешение 1920×1080 точек при 29,97 кадра/с) YouTube рекомендует устанавливать средний битрейт от 5 до 8 Мбит/с. Его можно задать вручную, выбрав на первой вкладке метод кодирования «Average Bitrate». Это уменьшит размер файла с сохранением того же качества.
Чтобы вручную указать битрейт, в настройках кодека x264 на вкладке «General» задайте метод кодирования «Average Bitrate» B-КАДРЫ. При кодировании видео на ресурсе задействованы так называемые B-кадры — кадры, предсказанные с помощью специального алгоритма по двум соседним. Рекомендуем указывать присутствие двух последовательных B-кадров. При этом закрытая группа изображений (GOP) должна составлять не более половины кадровой частоты (15, если речь идет о 29,97 кадра/с).
На вкладке «Frame» установите значение последовательных B-кадров (B-Frame), равное двум СЖАТИЕ CABAC. В качестве дополнительного метода сжатия без потерь используется не самый эффективный, зато применимый на мобильных устройствах CABAC (Context adaptive binary arythmetic codes).
Для улучшения качества кодирования видео на вкладке «Frame» можно задать дополнительный метод сжатия без потерь CABAC ЗВУК В AAC-LC. Для аудио следует задействовать кодек AAC-LC (в Avidemux применяется тип AAC lav) при частоте дискретизации 48 или 96 кГц.
Для домашнего архива звук в видеоролике можно оставить без обработки. Для YouTube необходимо применить кодек AAC-LC
Сжатие без потерь: lossless-форматы
Методика сжатия видео без потерь — это обратимая архивация, аналогичная той, что мы применяем, к примеру, при упаковке в архив текстовых и других документов для пересылки по электронной почте. Она позволяет получить исходные данные в неизменном виде после распаковки. При работе с видео наибольшей степени компрессии можно добиться, применяя специальные алгоритмы. Наиболее известными считаются следующие из них.
MOTION JPEG 2000 — коммерческий кодек для видео (около 1200 руб., демоверсия есть на CHIP DVD), построенный на принципах сжатии без потерь статических изображений JPEG2000.
Коммерческий кодек MJPEG2000 позволяет кодировать видео без потерь в качестве, обеспечивая высокую степень сжатия HUFFYUV — достаточно быстрый и эффективный свободный кодек, основанный на методике побитового предсказания следующего пикселя в потоке и архивации данных (есть на CHIP DVD).
Свободно распространяемый кодек Huffyuv также обеспечивает высокую степень сжатия видео без ощутимых потерь в его качестве LAGARITH — «продолжатель» идеи кодирования Huffyuv (есть на CHIP DVD). Авторам удалось добиться большей степени сжатия, в частности, за счет добавления методов работы с почти статическими изображениями. Обращение с роликами, сжатыми с помощью lossless-алгоритмов, осложнено тем, что они занимают много места на диске и поддерживаются ограниченным числом плееров и бытовых устройств. При этом они действительно нужны, только если камера позволяет скопировать несжатые данные (так называемые RAW, по аналогии с фотографией) либо по каким-то причинам важна высокая точность передачи этого изображения. Из специальных областей это могут быть медицина и картография.
Кодек Lagarith можно бесплатно использовать для «домашнего» кодирования — например, с помощью программы VirtualDubMod
Так ли необходимо сжатие без потерь?
Применительно к цифровому видео понятие «сжатие без потерь» подразумевает, что алгоритм позволяет архивировать каждую картинку в том виде, в каком она была получена с записывающего устройства. При этом стоит отметить, что фото и видео, снятые даже полупрофессиональной видеокамерой, не требуют столь бережного отношения к себе. В кадре почти всегда присутствуют шумы, аберрации и искажения, которые в целом не влияют на наше восприятие картинки — иными словами, картинка, как правило, сама по себе не идеальна. Применяя методики сжатия с потерями, вы, конечно, еще немного «испортите» ее, сэкономив на избыточности как в рамках отдельных кадров, так и внутри их последовательности. Но при этом вы добьетесь значительно большей степени компрессии, то есть в десятки раз меньшего размера файла на жестком диске.
А что будет дальше?
Различные видеосервисы, в частности «видео по запросу», уже задумываются о переходе на следующую версию стандарта — H.265, эффективность сжатия которого гораздо выше. Используемый кодек даст возможность гибко управлять качественными потерями. Кроме того, он позволит работать с непостоянной частотой кадров.
3. Монтажные кодеки.
Для производства и обработки видео. Задача кодека - освободить ресурсы компьютера для более эффективной работы.
Вот несколько для примера : DnxHD; Apple ProRes; CineForm.
Кстати, говоря о монтаже. Нужно учитывать кодек видео, которое вы собираетесь монтировать, особенно если оно большое.
Видео будет тормозиться, рендер станет дольше, а эффекты вряд ли вы вообще сможете применить. Но если это маленький проект, то вполне возможно использовать какой-нибудь не монтажный кодек.
В наши дни снимать качественные видео высокого разрешения формата HD Ready и FullHD или даже 4K умеют цифровые зеркальные камеры, новомодные гаджеты GoPro ну и смартфоны. Но каждый отснятый ролик в FullHD занимает неприлично много места на Вашем устройстве, я уже не говорю о 4K, который 16Гб памяти на IPhone 6s съедает за 35 минут. Когда место на карте памяти или внутренней памяти устройства заканчивается каждый из нас испытывает то чувство разочарования от размеров памяти своего девайса, что невольно задумываешь о минимум о карте большего размера или даже новом устройстве, которое сможет хотя бы минимально сжимать отснятые ролики. Хорошо если есть компьютер с большим объемом дисков для создания архива видео. Но даже этот объём рано или поздно закончится.
Предлагаю рассмотреть как сжать видео файл без ущерба для качества. И для этого нужно понимать, что здесь существует строгий баланс между размером и качеством видео:
- правильные настройки видеоконвертера сохранят качество видео и уменьшат его размер;
- неверные настройки уменьшат качество видео, но не уменьшат его размер.
Как уменьшить размер отснятого видео без потери качества читайте далее.
Уменьшаем разрешение Видео
Хорошо, когда Ваш телефон может снимать видео в формате 4K, купленный телевизор или монитор воспроизводит видео в формате 4K монитора. Но у большинства людей техника формата HD Ready или Full HD, что на самом деле не так уж и плохо. Ведь главный секрет качества видео не огромное разрешение, а битрейт видео.
Конечно же разрешение влияет на размер видео существенно, но качество видео (битрейт) влияет в не меньшей степени. Кроме того, на качество видео и предполагаемый размер влияют и расстояние просмотра между зрителем и телевизором, например; технология экрана телевизора.
Вот список наиболее часто используемых разрешений современных устройств воспроизведения:
- 2160p (3840 × 2160)
- 1440p (2560 × 1440)
- 1080p (1920 × 1080)
- 720p (1280 × 720)
- 480р (854 × 480)
- 360p (640 × 360)
- 240p (426 × 240)
Как правило, чтобы гарантированно уменьшить размер файла, проверьте исходное разрешение видео и выберите на один или два уровня ниже. В Handbrake настройки разрешения находятся на вкладке Picture. Здесь вы можете самостоятельно указать требуемое разрешения для выходного файла с видео.
Кроме того, после указания разрешения можете нажать кпопку предварительного просмотра Preview и оценить качество видео перед сжатием.
Если Вы планируете загружать свои видео на YouTube, то разрешение можно ставить до 4K. На Instagram - вплоть до 720p, на Facebook, VK - вплоть до 1080p.
Как кодек связан с видеоформатом?
Формат файла состоит из сжатых кодеком данных. Бывает так, что формат файла и название кодека — одинаковые.
Тут главное не запутаться, поэтому приводим примерчики:
- Есть формат — Windows Media Audio , он содержит данные, сжатые кодеком — Windows Media Audio . Названия могут и отличаться.
- Есть формат — AVI ( Audio Video Interleaved ), он может содержать данные, сжатые любым кодеком ( MPEG-2 , DivX , XviD ). Так же AVI-файлы могут содержать данные, которые вообще не сжаты никаким кодеком.
Следовательно, в зависимости от того, какие кодеки установлены в вашей системе, одни файлы AVI у вас будут нормально воспроизводится, а другие файлы AVI, несмотря на одинаковое расширение файла, воспроизводится не будут.
Также это затрагивает аудио. Часто бывает ситуация, когда при воспроизведении видео, звук воспроизводится, а вот видео нет. Это значит, на вашем устройстве ну установлен соответствующий видеокодек.
Как определить формат видео и используемый видеокодек?
Устанавливаем оптимальный Битрейт
Самый важный фактором в определении качества видео является его битрейт, поэтому убедитесь что он выставлен правильно.
Битрейт видео, говоря простым языком, это количество данных, которые показаны за одну секунду. Чем больше данных будет показано, тем меньше артефактов будет замечено Вами и тем лучше будет качество видео.
Большинство зеркалок записывает видео на очень высоком битрейте, только для того что уменьшить количество артефактов. Иногда значение битрейта уж слишком завышено и имеет смысл его уменьшить.
YouTube, например, рекомендует использовать некоторые значения битрейтов для некоторых разрешений. Поэтому, если битрейт Вашего видео выше рекомендуемого значения, то можете смело его уменьшить до рекомендуемой величины.
В Handbrake настройки качества видео (битрейта) находятся на вкладке Video в разделе Quality. Здесь вы можете самостоятельно указать требуемое качество, выбрав из двух вариантов: задав отношение качества к оригиналу или вручную ввести значение битрейта в Avg Bitrate.
Также советую установить флажок 2-Pass Encoding.
Выбираем лучший кодек и контейнер для Видео
В идеале, когда Вы снимаете видео, всегда нужно выставлять максимальные настройки видеосъёмки того устройства, которым снимаете. Только максимум видеокамеры позволит получить высочайшее качество видео, которое потом можно сжать не потеряв практически в качестве. Основа уменьшения видео - использовать максимально эффективные кодек и контейнер для видео.
Что такое кодек? В принципе, кодек - это спосб закодировать или декодировать видео для хранения или воспроизведения соответственно. Кодек превращает видео файл в понятный видеоплееру поток информации.
Что такое контейнер формат файла? Формат файла, в котором кодек сохраняет потоковые данные видео и аудио. Различные форматы файлов нужны, чтобы различные устройства и плееры могли использовать один и тот же ограниченный список форматов, т.е. один и тот же формат должен воспроизводиться в различных плеерах.
Перейдите на вкладку Video и выберите H.264 в качестве предпочитаемого кодека. Это наиболее эффективный и популярный кодек для видео высокой чёткости и позволяет сжать видео почти в два раза, что по эффективности сопоставимо с MPEG-4 при сжатии видео. Кроме того, на сегодняшний день он поддерживается большинством устройств, начиная от плеера в Windows 10 и до телевизора со SmartTV.
Более новый кодек, который ещё лучше сжимает видео файлы H.265, пока не всеми устройствами поддерживается. Если Вы хотите максимально эффективно сжать видео файл без потери качества, то выбирайте в настройках H.265. Но после завершения процесса сжатия, советую проверить выходной видео файл на устройстве, для которого и предназначалось видео.
Это было предсказуемо: разбираемся, как H.264 сжимает видео
Вернемся к таблице, с которой мы начали. Как видите, помимо таких параметров, как разрешение, фреймрейт и качество картинки решающим фактором, определяющим конечный размер видео, оказывается уровень динамичности снимаемой сцены. Это объясняется особенностями работы современных видеокодеков вообще, и H.264 в частности: используемый в нем механизм предсказания кадров позволяет дополнительно сжимать видео, при этом практически не жертвуя качеством картинки. Давайте посмотрим, как это работает.
Кодек H.264 использует несколько типов кадров:
- I-кадры (от английского Intra-coded frames, их также принято называть опорными или ключевыми) — содержат информацию о статичных объектах, не меняющихся на протяжении длительного времени.
- P-кадры (Predicted frames, предсказанные кадры, также именуемые разностными) — несут в себе данные об участках сцены, претерпевших изменения по сравнению с предыдущим кадром, а также ссылки на соответствующие I-кадры.
- B-кадры (Bi-predicted frames, или двунаправленные предсказанные кадры) — в отличие от P-кадров, могут ссылаться на I-, P- и даже другие B-кадры, причем как на предыдущие, так и на последующие.
[НАЧАЛО СЪЕМКИ] I-P-P-P-P-P-P-P-P-P-P-P-P-P- .
Поскольку в процессе вычитания возможны ошибки, приводящие к появлению графических артефактов, то через какое-то количество кадров схема повторяется: вновь формируется опорный кадр, а вслед за ним — серия кадров с изменениями.
Полное изображение формируется путем «наложения» P-кадров на опорный кадр. При этом появляется возможность независимой обработки фона и движущиеся объектов, что позволяет дополнительно сэкономить дисковое пространство без риска упустить важные детали (черты лиц, автомобильные номера и т. д.). В случае же с объектами, совершающими однообразные движения (например, вращающимися колесами машин) можно многократно использовать одни и те же разностные кадры.
Независимая обработка статических и динамических объектов позволяет сэкономить дисковое пространство
Данный механизм носит название межкадрового сжатия. Предсказанные кадры формируются на основе анализа широкой выборки зафиксированных состояний сцены: алгоритм предвидит, куда будет двигаться тот или иной объект в поле зрения камеры, что позволяет существенно снизить объем записываемых данных при наблюдении за, например, проезжей частью.
Кодек формирует кадры, предсказывая, куда будет двигаться объект
В свою очередь, использование двунаправленных предсказанных кадров позволяет в несколько раз сократить время доступа к каждому кадру в потоке, поскольку для его получения будет достаточно распаковать только три кадра: B, содержащий ссылки, а также I и P, на которые он ссылается. В данном случае цепочку кадров можно изобразить следующим образом.
[НАЧАЛО СЪЕМКИ] I-B-P-B-P-B-P-B-P-B-P-B-P-B-P-B-P-…
Такой подход позволяет существенно повысить скорость быстрой перемотки с показом и упростить работу с видеоархивом.
1. Камерные кодеки.
Для записи видео на самой камере. Характерна высокая скорость кодирования, но низкая скорость декодирования.
Пример : XDCAM; REDCODE; Cinema DNG.
Для потребления контента. В интернете или просто в проигрывателях на компьютере/телефоне.
Эти кодеки медленно записывают видео, но быстро его воспроизводят из-за быстрого декодирования.
Очень малы по объему и ресурсоемкие для монтажа.
Пример : H.264; Mpeg 1,2,4; DivX.
Читайте также: