Megui настройка кодека x264
Так уж повелось, что с приходом более ёмких носителей информации пришла и эра высокого разрешения, новомодного HD. Популярность торрентов открыла новый виток в погоне за сэкономленными компрессионными мегабайтами видео. Судя по статистике скачиваний, именно раздачи приставкой Rip, AVC - получают все большее народное признание, это и не мудрено, ведь возможность скачивать и сохранять десятки гигабайт в пересчете на один полуторачасовой фильм стала реальностью, но чрезвычайно расточительного свойства. На личном опыте, не перестаю удивляться как быстро возможно, в буквальном смысле проглотить, полутерабайтную связку RAID0 массива. Всему виной медиаконтент, пухнуший после перевода на рельсы "высокой четкости". В этом смысле, переход на новые алгоритмы сжатия видеопотока стал действительно назревающей проблемой. Не вдаваясь в исторический экскурс, отмечу, что в свое время с весомой долей скептицизма отнесся к появлению видеокодека h264, обусловленная очевидно сильной DivX привязанностью. Время как известно, не стоит на месте и вот уже просторы торрентов стали местами проглядывать полуторагигабайтными рипами весьма сносного качества. Как и полагается закоренелому консерватору, мне было чудовищно сложно отказаться от бытующих в моем сознании представлений компрессии видео, и сделать шаг по направлению к набирающему обороты h264. Свой негативный оттенок вносил контейнер mkv, в который, как правило, "запечатывался" видеоряд сжатый h264 и звуковая дорожка соответствующего качества. Популяризация матрешки, со скрипом, но все же подтолкнула меня к освоению последующей ревизии h264, а именно видеокодека x264. Многочисленные обзоры на просторах рунета, доносят довольно многообещающую информацию, характеризующую кодек x264/h264 как наиболее прогрессивное решение в области компрессии видеоинформации. Сравнительные тесты в режиме "покадровой развертки" демострируют впечатляющие результаты, игнорировать которые в настоящее время более не представляется возможным. Посему, забегая вперед отмечу, что знакомство оправдало мои ожидания и скорее всего будет иметь довольно длительную историю, при сопутствующем неизменном росте вычислительной мощности соврменных компьютеров. Итак приступим. Для работы нам потребуется следующее программное обеспечение:
AviSynth — средство для обработки, в частности линейного и нелинейного монтажа видеоматериалов. Работает как фрэймсервер, имеющий систему сценариев, редактирование которых позволяет осуществлять нелинейное редактирование любого уровня сложности с высоким уровнем воспроизводимости результатов.
Сперва инсталлируем AviSynth, затем распаковываем MEGui, который не требует привычной установки. При первом запуске megui предложит обновить компоненты самой себя с чем незамедлительно соглашаемся.
После поочередного обновления всех предложенных и доступных в настоящий момент частей программы, переходим к созданию скрипта процесса кодирования. В качестве источника я выбрал видеофайл "Битва титанов" объемом 9,6 гигабайта. Ставилась задача: получить существенно меньший по размеру видеоконтент с хорошим соотношением разрешение/объем. Первым этапом процедуры пережатия является процесс создания скрипта/алгоритма последовательных действий.
Выбираем вкладку AVS Script Creator.
Подгружаем исходный видеоматериал
Как видно исходное видео высокого разрешения 1920 на 800 пикселей, aspect ratio или отношение сторон составляет 2,4, битрейт составляет 10772 Kbps; 23,976 fps; 0,293 bpp. Последняя величина есть ничто иное как плотность бит на пиксель, т.е (10772 Kbps)/(1920x800x23,976 fps)=0,293 bpp. Плотность информации на пиксель величина наиболее полно отражающая качество, исходя из понятий битрейта, разрешения картинки и плотности понимаем, что для получения меньшего размера при сохранении хорошего качества видеоматериала нам необходимо соразмерно уменьшить разрешение и битрейт при близкой к 0,2-0,3 плотности бит на пиксель. Приведу цитату википедии..
"Самый оптимальный вариант - вычислить значение по формуле: ширина_кадра*высота_кадра*кадров_в_секунду*0,15/1024. Где 0,15 - количество бит на пиксель (можете варьировать это число в пределах от 0,05 до 0,2 по своему усмотрению). Если же вам надо получить определенный размер конечного файла, то воспользуйтесь встроенным калькулятором (Tools\Bitrate calculator)"
Опустившись, до стандартного по горизонтали разрешения (DVD-Video, 720p) и сохраняя коэффициент плотности информации на пиксель 0,3, получим битрейт по видео равный - 1539Kb/s, а с учетом длительности фильма приблизительный размер видеодорожки составит 1,1-1,2Gb. Жмем SAVE.
В разделе настроек кодера устанавливаем x264 *scratchpad*, жмем config, для установки параметров. Для достижения максимального качества выбираем трёх!проходное кодирование, и пресет PLACEBO - который является наиболее ресурсоёмким, битрейт задаем 1500Kb/s.
Остается добавить задания в очередь нажав Enqueue.
Перейдя на вкладку Queue видим поставленные в очередь 3 прохода сжатия видеоконтента. Статус каждого из проходов можем перевести в отложенный (postponed) выбирая таким образом подходящий момент для продолжения процедуры либо приостанавливая её. Остается нажать Start.
Сразу после старта процесса кодинга наблюдаем довольно красноречивые промежуточные результаты, а именно: скорость пережатия на.
составляет немногим более 2,5 кадров в секунду, время требуемое на один проход предварительно оценивается в 15 часов 45 минут, загрузка обоих ядер процессора стабильно очень близка к максимальной. А вот собственно говоря и результат.
В заключение, для более наглядной убедительности вышеизложенного, я хотел бы привести сравнительную раскадровку видеоряда сжатого x264 и DivX.
Артефакты кодирования наиболее явно проявляют себя в динамичных сценах при сжатии с малым битрейтом. Таким образом, новый алгоритм сжатия, заложенный в прогрессивном детище x264, уверенно опережает конкурентов, позволяя визуально оценить разницу в качестве полученного видеоматериала. Единственным минусом видеокодека x264, является его чрезвычайная ресурсоемкость на этапе сжатия видеоконтента.
Первоначальные настройки
Создание d2v-проекта, вырезание звука
Создание AviSynth-скрипта
Обработка звуковых дорожек
Определение битрейта видеопотока
Настройка кодера x264
В соответствии со стандартом Mpeg4, видео должно быть закодировано AVC-кодеком, звук - AAC. Все это должно находится в контейнере mp4. Однако все Windows-программы, широко применяемые для кодирования видео, в частности, Virtual Dub и Gordian Knot, не поддерживают работу с этим контейнером. Поэтому, чтобы получить видеофайл, полностью соответствующий стандарту, придется немного поизвращаться.
Также, т.к. программа MeGUI существует пока в бета версии, рекомендуется на некоторых этапах пользоваться пакетом Gordian Knot. Установка Gordian Knot избавит Вас от необходимости скачивать и устанавливать DVD Decrypter, DGMPGDec (DGIndex), AviSynth и BeSweet, т.к. эти программы уже входят в Gordian Knot Rip Pack.
-
Копируем DVD на жесткий диск при помощи DVD Decrypter. Как это сделать, смотри на соответствующей странице сайта.
- При первом запуске программы заходим в меню Tools -> Settings:
- В разделе DGIndex указываем аудиотреки, которые мы собираемся кодировать. Эти установки будут использоваться по умолчанию для всех фильмов, если указанные треки будут в них обнаружены. Включение галочки Auto Force Film at 95 Percent настраивает параметр алгоритма DGIndex для определения необходимости IVTC. Актуально для DVD в формате NTSC.
- В разделе Other устанавливаем приоритет по умолчанию в Normal, а в качестве кодера x264 выбираем x264.exe.
- Включение опции Open Preview after AviSynth script selection приводит к появлению окна предпросмотра при открытии в программе avs-скрипта. Предпросмотр позволяет, во-первых, удостовериться в работоспособности скрипта, а во-вторых, указать начало финальных титров (для кодирования их с меньшим битрейтом).
- Включение опции Delete Output of aborted jobs приводит к автоматическому удалению выходных файлов при отмене процесса кодирования.
- Опция Automatically set number of Threads автоматически устанавливает количество потоков кодирования в зависимости от количества процессоров. Актуально для многопроцессорных систем.
- Опция Use Advanced ToolTips включает контекстные подсказки.
- Включение опции Shutdown after encoding приведет к автоматическому выключению компьютера по завершении кодирования всех задач из job-листа.
- Включение опции Autostart Queue приведет к автоматическому запуску процесса кодирования при помещении задания в job-лист.
- Включение опции Delete completed Jobs будет приводить к автоматическому удалению выполненных заданий из job-листа.
- Опция Delete intermediate files автоматически удаляет промежуточные (временные) файлы.
- Включение опции Open Progress Window будет приводить к появлению при запуске задания окна подробной статистики о ходе кодирования.
- В разделе Automated Encoding устанавливаем Number of passes = 2, т.к. для качественного кодирования видео двух проходов вполне достаточно. Две другие опции в этом разделе имеют отношение к 3-х проходнему кодированию, поэтому они нас абсолютно не интересуют.
- На закладке Program Paths указываем, где располагаются требуемые программы: BeSweet, mp4Box, x264.exe, DGIndex, neroraw.exe (для кодирования аудио кодеком Nero AAC), и папка с плагинами AviSynth. Программa mencoder нужна лишь тогда, если Вы собираетесь использовать другие кодеки, отличные от x264. Программа mkvmerge нужна для микширования аудио и видео в контейнер mkv. Xvid_encraw.exe, faac.exe, lame.exe нужны соответственно для кодирования видео кодеком XviD, и аудио кодеками FAAC и Lame Mp3. Поэтому без них можно и обойтись.
- Примечание. Для того, чтобы MeGUI мог открывать d2v-файлы, необходимо скопировать библиотеку DGDecode.dll из папки DGIndex в папку плагинов AviSynth. Иначе он будет выдавать ошибку типа "Нет такой функции Mpeg2Source".
- В разделе Video Input указываем первый VOB файл из скопированных с DVD при помощи DVD Decrypter.
- В разделе Audio выбираем опцию Select Audio Streams to demux, и указываем те треки (или один трек), которые нас интересуют. Если Вы все правильно сделали при настройке программы во время первого запуска, нужные треки будут выбраны автоматически.
- Нажимаем кнопку Queue, занося задание в job-лист. При включенной опции On completion load files полученный в результате работы программы DGIndex d2v-файл автоматически откроется в AviSynth Script Creator-е. Включение опции "and close" будет приводить к автоматическому закрытию окна DGIndex Project Creator-а после нажатия кнопки Queue. В противном случае после помещения задания в job-лист Вам придется вручную закрыть это окно.
- Для запуска процесса обработки перейдите на закладку Queue в основном окне MeGUI и нажмите кнопку Start. В результате будет создан файл с расширением .d2v, а также аудио файлы в формате ac3, содержащие выбранные нами звуковые дорожки.
- По желанию, для создания d2v-проекта Вы можете воспользоваться непосредственно DGIndex, запустив его вручную, без использования MeGUI. Как пользоваться программой DGIndex см. здесь.
Тут же, определившись с обрезкой, выставляем желаемое разрешение выходного видео.
Общее правило: разрешение выходного видео не должно быть больше, чем у исходного. Если Ваш исходный DVD не имел черных полос по бокам, можно оставить размер картинки по ширине равной 720. В большинстве же случаев оптимальным значением будет 704.
Теперь о размере по вертикали.
Рекомендуемое значение размера кадра по вертикали посчитается автоматически при включении опции Suggest Resolution. Подсчитываться оно будет, исходя из значения Input DAR (соотношение сторон исходного видео). Для DVD стандартными являются соотношения 4:3 и 16:9.
-
Открываем созданный при помощи DGIndex ac3-файл, для чего в основном окне MeGUI в разделе Audio в строке Audio Input нажимаем кнопку ". "
- Т.к. мы собираемся кодировать с использованием B-frames, включаем соответствующую галочку.
- В разделе Codec выбираем x264.
- В разделе Container выбираем MP4.
- В разделе Audio Track 1 нажимаем кнопку Select и указываем mp4-файл, содержащий ранее закодированную звуковую дорожку, которую Вы хотите использовать по умолчанию (как правило, русскую).
- Если Вы создаете фильм с двумя звуковыми дорожками, то ту же операцию повторяете и для второй дорожки, но уже в разделе Audio Track 2.
- В разделе Total Size выбираете Storage Medium = 1 CD.
- В разделе General соответственно устанавливаем Mode: 2pass - 1st pass.
- Галка Turbo позволяет запустить первый проход с упрощенными настройками кодека, что сократит время кодирования при первом проходе примерно раза в три.
- Bitrate у Вас уже подсчитан при помощи калькулятора, и стоит правильный, поэтому его не меняем.
- В разделе Deblocking включаем Enable Deblocking. Для кодирования на 1 CD значения Deblocking Strength и Deblocking Threshold рекомендуется выбирать из диапазона (-2..0, -2..0), для анимации (0..+2, 0..+2). Для высокобитрейтного кодирования можно попробовать (-3, -3).
- Number of Threads - количество слайсов при кодировании. Имеет смысл ставить равным количеству физических/виртуальных процессоров. Качество при этом немного упадет, но повысится скорость кодирования.
- В разделе AVC Profiles выбираем High Profile. AVC Level - Unrestricted.
- Minimum Quantizer - минимально возможный квантизер. Чем ниже это значение, тем более чёткая картинка будет получаться (при условии, что битрейт будет достаточно высоким для достижения этого квантизера). Не стоит ставить значения меньше 10, т.к. Вы получите огромный размер выходного файла. Уже при значении квантизера порядка 15-20 картинка получается почти не отличимой от оригинала. Поэтому оставляем значение по умолчанию: 10.
- Maximum Quantizer - максимально возможный квантизер. Высокое значение этого параметра снижает детализацию картинки. Низкое - уменьшает степень сжатия. Лучше не трогать значения по-умолчанию.
- Credits Quatizer - значение квантизера, используемое для кодирования титров в конце фильма. Для увеличения битрейта, приходящегося на основное видео, можно кодировать титры с низким качеством. Это качество и задается параметром Credits Quatizer.
- Factor between I and P frame Quants - параметр, определяющий, во сколько раз квантизер выделяемый для I-кадров, будет меньше квантизера P-кадров.
- Factor between P and B frame Quants - параметр, определяющий, во сколько раз квантизер выделяемый для B-кадров, будет больше квантизера P-кадров. В большинстве случаев значение 1,3 вполне удовлетворительно. Но при кодировании анимации это значение можно увеличить до 1,4..1,5.
- Обязательно включаем CABAC, что существенно скажется на улучшении качества.
- Number of B-frames выставляете 2-3. Для низкобитрейтного кодирования (менее 1 CD) и кодирования анимации лучше выставлять 1 B-frame. Использовать больше 3-х смыла не имеет.
- Обязательно включаем Adaptive B-Frames. Галка B-Pyramid позволяет использовать B-frames как Reference Frames, что может немного увеличить качество. Рекомендуется включать только при использовании 3-х B-frames. Без этой опции, как правило, от 3-го B-фрейма не будет толку.
- По желанию включаете Chroma M.E. (особенно полезно для анимированного видео).
- M.E. Range - количество итераций поиска при анализе движения. Значение по умолчанию (16) вполне удовлетворительно. Но для достижения максимального качества можете попробовать 32 (что значительно снизит скорость кодирования). Значения выше 32 использовать не рекомендуется, т.к. это может привести к ухудшению качества. Вообще, значение M.E. Range зависит от частоты кадров исходного видео. Для меньшего Framerate требуются бОльшие значения M.E. Range.
- Keyframe Interval оставляем 250. Это вполне приемлемое значение.
Закладка Zones позволяет задать в видеопотоке временные отрезки (зоны), которые будут кодироваться с каким-то постоянным значением квантизера.
После выполнения всех настроек нажимаем кнопку Ok и возвращаемся в основное окно MeGUI.
Там в разделе Video нажимаем кнопку Enqueue. Этим мы занесем первый проход в список заданий. Убедиться в этом можно, перейдя на закладку Queue в основном окне MeGUI.
- Number of Reference Frames для достижения максимально возможного качества можете выставить в 16 (максимально возможное значение). Для более быстрого кодирования можно ограничиться 4-5.
- Включаем все возможные галочки. Это же можно сделать, выбрав в выпадающем меню "All".
- По желанию включаете Weighted Prediction. В х264 Weighted Prediction сделан самый простой, да еще и на B-фреймах, от которых толку практически нет, в отличие от Ateme/Nero, где WP сделан P-фреймах.
- M.E. Algorithm - алгоритм анализа движения. Для сохранения приемлемой скорости кодирования рекомендуется использовать Hexagonal motion estimation. Однако, если у Вас достаточно сложное исходное видео, или Вы хотите достичь абсолютного максимума качаства, можете попробовать Exhausive motion estimation (что значительно снизит скорость кодирования).
- Subpixel Refinement выставляете в 6 - RDO.
Для настройки второго прохода снова нажимаем в разделе Video кнопку Config. Там все оставляем так же, как и для первого прохода, изменив лишь Mode: 2pass - 2nd pass. Нажатием кнопки Ok подтверждаем наши настройки, возвращаемся в основное окно MeGUI, и в разделе Video нажимаем кнопку Queue для занесения второго прохода в список заданий.
- Переходим на закладку Queue:
- Нажимаем кнопку Start.
- По окончании кодирования первого задания (первый проход), автоматически запустится следующее (второй проход).
- По завершении второго прохода Вы получите видеофайл, зажатый кодеком AVC, и находящийся в контейнере mp4, т.е. полностью совместимый со стандартом MPEG4.
Т.к. на сегодняшний день MeGUI хреново реализует эту функцию, рекомендуется для микширования воспользоваться программой MP4Box с GUI Yamb.
После микширования, Вы получите готовый mp4 файл, содержащий видео, аудио, возможно, субтитры, имеющий разбиение на главы как на исходном DVD.
Для просмотра наиболее подойдет плеер Nero Show Time 2.
Хотя можно воспользоваться и наиболее быстрым на сегодняшний день плеером с поддержкой H.264 видео: The Core Pocket Media Player. Хотя он имеет непритязательный интерфейс, но в нем есть встроенные декодеры. Поэтому фильм будет проигрываться даже при отсутствии установленных в системе необходимых кодеков.
Если же Вы привыкли к какому-то своему любимому плееру, то для просмотра Вам необходимо установить Media Splitter с поддержкой контейнера MP4, а также Core AVC Decoder.
meGUI — графический интерфейс для мощных аудио-/видео-кодировщиков. Пакет полностью бесплатный, с открытым исходным кодом, поэтому довольно часто и оперативно обновляется. Благодаря встроенному апдейтеру следить за обновлениями довольно удобно.
Почему использовать именно meGUI?
Используемые пакетом видео-энкодеры — x264 для контейнера MKV или Intel H.264 для контейнера MP4 — производные от AVC, видео-кодека последнего поколения, и при одинаковом размере с видео, закодированным с помощью DivX/XviD, имеют лучшее качество. Также возможно кодирование звука в AAC.
Для убыстрения процесса кодирования желательно переписать содержимое DVD-диска в какую-нибудь папку на винчестере.
Перед тем, как начать собственно кодирование, необходимо подготовить данные. Во-первых, надо проиндексировать источник — а именно, VOB-файлы. Это можно сделать и через интерфейс meGUI, но я предпочитаю использовать входящий в пакет DGIndex независимо от meGUI — через него можно узнать кое-какую необходимую информацию. Поэтому, идём в megui\tools\dgindex\ и запускаем DGIndex.exe.
Нажимаем F2 и добавляем все VOB-файлы из каталога Video_TS DVD-диска, кроме VTS_01_00.VOB — это меню диска. Нажимаем OK.
Нажимаем F5 и даём программе поработать секунд 10-15, после чего нажимаем Esc.
При запуске предпросмотра появится окно Information, из которого нам нужна следующая информация:
Frame Size — разрешение;
Aspect Ratio — соотношение сторон: 4:3 или 16:9;
Video Type — тип видеоформата: либо PAL, либо NTSC;
Frame Type — развёртка: interlaced (черезстрочная) или progressive (прогрессивная);
Field Order — порядок полей черезстрочной развёртки: top или bottom.
После чего нажимаем F4 и сохраняем d2v-проект. При этом из контейнера также будут извлечены аудио-дорожки в формате AC3 (хотя можно настроить как извлечение какой-то конкретной дорожки, так и декодирование аудио из AC3 в WAV).
После чего запускаем meGUI и попадаем в её главное окно.
Запускаем Tools --> AVS Script Creator, где на вкладке Options в Video Input выбираем наш d2v-проект (открывшийся при этом плеер можно закрыть), в Input DAR ввыставляем значение, исходя из данных DGIndex'а Aspect Ratio и Video Type.
При желании можно выставить ресайз кадра — рекомендуется выбирать размер кадра, исходя из Aspect Ratio:
т.к. 16:9 может быть только 720x576 PAL или 720x480 NTSC, то для него лучше всего брать 720x400 (если очень точно — 720x405, но значения должны быть чётными) или 704x396 (хотя для произвольного разрешения можно использовать формулу ширина/1.78);
для 4:3 вариантов немного больше: для PAL максмально возможное — 720x540 (если источник — 720x576), для NTSC — 640x480 без растягивания кадра по ширине (хотя для произвольного разрешения можно использовать формулу ширина/1.33).
На вкладке Filters/MPEG2 Source (Мы ведь рипаем DVD-диск, не забыли?) можно установить обработку видео в процессе кодирования. Во-первых, определить тип источника (Source Type) — он должен соответствовать в той или иной мере Frame Type из DGIndex. Для этого можно нажать Analyze либо выставить вручную Source Type, Field Order и в Deinterlace — фильтр преобразования. Если вы кодируете анимацию — необходимо выставить галочку Source is Anime.
После анализа видео выставляете фильтр масштабирования (рекомендуется Lanczos4), галочки Colour Correction и Mpeg2 Deblocking. Если источник имеет шум — можно включить фильтрацию шума — Noise Filter. После чего сохраняем скрипт кнопкой Save.
Возвращаемся в главный интерфейс. Здесь выбираем контейнер (File format), пресет кодека (Encoder settings). Если вы кодируете в MP4 — вам нужно также будет перекодировать аудио, т.к. по стандарту MP4 не поддерживает звук в AC3. Для этого вам нужно выбрать дорожку в Audio Input, параметры кодирования в Encoder settings и расширение файла в Extension. Я предпочитаю контейнер MKV и оставляю оригинальную AC3-дорожку.
После этого выбираете Tools --> Bitrate Calculator.
Здесь в Audio 1 выбираете свою дорожку (если дорожек несколько — правой кнопкой мыши их можно добавить). Дальше вы можете рассчитать либо битрейт по размеру файла (выбираете File Size и из списка примерный размер), либо размер файла по битрейту (Average Bitrate). На мой взгляд, удобнее использовать битрейт, тогда в Video File Size будет размер видео, а в окне под File Size — общий размер файла со всеми дорожками. Нажимаете Apply и соглашаетесь с занесением выбранного битрейта в настройки энкодера.
Нажимаете Enqueue и переходите на вкладку Queue, где нажимаете Start.
После завершения кодирования надо объединить аудио- и видео-дорожки. Это можно сделать через meGUI, но я опять-таки предпочитаю использовать программу пакета AVIMux независимо от интерфейса meGUI. Поэтому идём в megui\tools\avimux_gui\ и запускаем AVIMux_GUI.exe.
Из каталога DVD-диска перетаскиваем сначала полученную видео-дорожку, выбираем её и нажимаем Generate data source from files. В File title и Resolution можно ввести информацию о названии и разрешении, а в language code — информацию о языке дорожки, выбрав его из Language ID. Таким же образом добавляем аудио-дорожку и, если необходимо, субтитры. После чего нажимаем start и сохраняем финальный файл.
Видео высокой четкости радует красивой и детализированной картинкой, однако оно занимает много места на диске. 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, эффективность сжатия которого гораздо выше. Используемый кодек даст возможность гибко управлять качественными потерями. Кроме того, он позволит работать с непостоянной частотой кадров.
Читайте также: