Видеокодек H.264 давно прижился на Маках и мобильных устройствах Apple. Этот кодек уже несколько лет используется и на YouTube для хранения HD-контента. Поэтому неудивительно, что многие, готовя видео к публикации на YouTube (например, скринкасты), перегоняют готовый видеоряд в QuickTime-формат, используя кодек H.264. Многих же удивит тот факт, что для интернет-видео (особенно на низких битрейтах) H.264 — не лучший вариант.
Японский разработчик Такаши Моцизуки создал свой аналог кодека H.264, у которого при том же размере файла картинка получается куда лучше. В качестве тестового видео я взял FullHD-версию рекламного ролика iPad, опубликованного в официальном канале Apple на YouTube. Уменьшив его средствами QuickTime 7 на 70%, я экспортировал его кодеками H.264 и x264Encoder, воспользовавшись рекомендациями Крэйга Рида, видеоинженера из «Колледжа Беркли музыкальной онлайн-школы».
Настройка кодеков
В опциях H.264 Крэйг рекомендует выставить параметры следующим образом:
Compression Type | H.264 (стандартный кодек Apple) |
Frame Rate | Current |
Key Frames | Every 240 frames* |
Frame Reordering | Включено |
Quality | High |
Encoding | Best Quality (Multi-pass) |
Data Rate | Restrict to 200 kbits/sec |
Optimized for | Download |
Диалог настройки кодека H.264.
Свойства кодека x264Encoder следует настроить так:
Compression Type | x264Encoder |
Frame Rate | Current |
Key Frames | Every 240 frames* |
Frame Reordering | Включено |
Quality | Medium |
Data Rate | Restrict to 200 kbits/sec |
Диалог настройки кодека x264Encoder.
Вдобавок, щелкнув в диалоге настройки x264Encoder на кнопке Options, и перейдя в новом окне в категорию Values, следовало установить новые значения таким параметрам:
Faster FirstPass | Disabled |
b_Frame_strategy | Optimal (Slow) |
refs | 5 |
Max B | 8 |
Тонкая настройка параметров кодека x264Encoder.
* Cуществует правило, согласно которому ключевые кадры следует добавлять в видеоряд каждые 10 секунд — чтобы периодическое снижение качества не носило «мерцающий» характер.
Перегонка и результат
По ходу дела отметил, что кодирование видео кодеком H.264 у QuickTime забирает несколько больше времени, чем в случае с x264Encoder. Впрочем, главная разница таки оказалась в качестве, причем разительном.
Итоговые файлы оказались примерно одного размера — файл, сохраненный при помощи H.264 «весил» 6,5 МБ, а кодек x264Encoder дал выходной файл размером 6,4 МБ. Самое очевидное отличие в качества заметно на динамических кадрах, где объекты движутся сравнительно быстро. Но и статичные области (в том числе размытый задний план) в случае с H.264 оказываются более искаженные, чем в видеоряде, сформированном кодеком x264Encoder. Вместо слов предлагаю просмотреть некоторые кадры ролика и сравнить оригинальное качество с качеством картинки, которую дали H.264 и x264Encoder.
Где? Дайте!
Скачать свежую версию кодека x264Encoder (кодек, кстати, бесплатный) можно в блоге Такаши Моцизуки. Скачав DMG-дистрибутив и подмонтировав его, скопируйте файл x264Encoder.component в каталог /Library/QuickTime — при следующем запуске вашего видеоредактора x264Encoder будет уже доступен в общем наборе кодеков.
По ходу дела отметил, что кодирование видео кодеком H.264 у QuickTime забирает несколько больше времени, чем в случае с x264Encoder. Впрочем, главная разница таки оказалась в качестве, причем разительном.
Неправильное какое-то предложение. Может названия кодеков местами поменять?
Нет, x264Encoder у меня сработал быстрее, чем H.264. Так что со смыслом все правильно 🙂
Очень интересный материал. Отправлю себе в закладки. Но есть вопросы,
— как я понял, основная цель (описаная в статье) сжать видео помаксимуму. И при таком сжатии потери (и серьезне) неизбежны
— мне же важно как раз высококачеситвенное видео, но желательного (по возможности) меньшего размера.
Я режиссер, и храню кучи своих архивных материало. Вото потихоькеу цифрую. Может пригодится потом. По этому, мне очень важно качество.
Подскажите, какие настройки в этом случае использовать?
Если вам крайне важно качество, то стоит запасаться архивными накопителями как можно с большей емкостью — у вас не получится держать архив в очень сжатом виде и одновременно в хорошем качестве. Что до параметров видео, то, пожалуй, при максимальном качестве тому же кодеку x264Encoder можно ограничить битрейт от 1500 до 2000 Кб/с — этого вполне хватит для хорошего качества HD-видео. Впрочем, вам, как режиссеру, планирующему когда-нибудь использовать архивные записи в работе, стоит хранить материалы в каком-нибудь менее деструктивном профессиональном формате, который к тому же поддерживается профессиональным «железом» и ПО. По своему крошечному опыту работы с профессиональной техникой, могу сказать, что было не очень приятно, когда пришлось перегонять видео из любительского формата в «промышленный», чтобы сделать простой монтаж и собрать банальный двухслойный видео-DVD. Но какой именно формат вам подошел бы лучше всего, не могу сказать — спросите у знакомых видеоинженеров, что они могут посоветовать.
До сего дня я успешно жал AVC кодеком H.264 используя определеные параметры.
Что-о вроде этого:
ref=10:mixed-refs=1:bframes=8:weightb=1:direct=auto:b-pyramid=1:me=umh:subq=10:analyse=all:8x8dct=1:trellis=1:no-fast-pskip=1:psy-rd=1,1:deblock=-2,1:merange=32
CABAC Entropy Coding = 1
Пожалуй это настройки ри которых сжатие максимально, потеря минимальна.
30 гиг ункопрессета утаптываем в 4 с минимальными артефактами.
x264Encoder меня очень заинтересовал, как возможность (судя по статье) еще повысить качество при схожем с H.264 обьеме файла.
То что битрейт нужно поставить не 200 а 2100 или около того, это понятно. Но все прочие настройки, и в частности те, что вы упомянули в стате, кк они влияют на качество и на вес?
К примеру в H.264, если отключить CABAC (который так не любят железячные устройства Apple) то мы потеряем выигрышь в весе AVC кодека перед ASP
Думаю что-то подобное в настройках есть и у x264Encoder
Честно сказать, в экспериментах с кодеком настолько не углублялся. Да и не преследовал цель всесторонне охватить вопрос кодирования видео при помощи конкретного кодека. Вот к субботе планирую сделать серию скринкастов. Попробую сжать x264-м оригинальное несжатое видео — смогу дать более объективную оценку этому кодеку.
Пока мне ничего не остается, как предложить вам самому провести изыскания, помучав какой-нибудь n-секундный ролик. В том же диалоговом окне тонкой настройки кодека есть последняя категория (x264 preset) — там можно выбрать как степень качества (вплоть до Placebo — максимальное качество), как и тип видеоизображения. В текстовых полях для каждого пресета дается перечень параметров, которые каждый из них затрагивает — это может стать для вас отправной точкой в экспериментировании с опциями x264.
Когда же будут обещанные скрикасты?