Gregory Shimansky (zoltan0) wrote,
Gregory Shimansky
zoltan0

Кодирование видео в H264 (часть 1)

Вообще конечно в одном таком посте невозможно написать всё про этот кодек. Он слишком большой, стандарт один страниц на 1000 плюс добавки, которые непрерывно появляются. Но для большинства обычных людей надо закодировать ролик или фильм, это наиболее распространённый способ использования в личных целях.

Писать буду про x264, это как показывают разные сравнения наиболее сейчас выигрышная реализация (вообще то их очень много уже, но многие специализированные), код под GPL, поэтому бесплатная, и выдаёт наиболее качественный результат. В этом году будет очередное сравнение лабораторией МГУ (compression.ru это их сайт), посмотрим какие результаты будут на этот раз.

Ну так вот про x264. По слухам его пишут бывшие авторы Xvid, которые, написав отличный, ставший де-факто стандартом пиратства, кодек MPEG4 смогли очень быстро создать лидирующую версию для H264. Вполне верю, очень похоже что опыт там был накоплен очень серьёзный. Поскольку я сам занимаюсь разработкой H264 кодека на работе, то код GPL x264 я смотреть не имею права, так что все остальные сведения о внутреннем устройстве, которые я тут может буду про него писать, являются только домыслами, правда неплохо подтверждаемыми данными реального анализа (в видео много можно сказать если есть хорошие программы, a la дизассемблер закодированного видео стрима).

Сам кодек может работать отдельно, и доступен со своего домашнего сайта. Но, выдаёт он чистый битовый стрим видео, что не вполне удобно для нормальных людей (не знаю, может он и умеет заворачивать в какой-то контейнер, не пробовал), да и звук надо тоже добавлять обычно. Плюс врядли умеет читать многие разнообразные варианты входного потока, которые могут повстречаться если что-то там надо куда-то перекодировать. Но зато x264 присутствует как одна из компонент mplayer/mencoder в виде библиотеки, плюс все его опции там есть, так что можно сочетать удобство mplayer/mencoder, который читает что угодно, ну и закодировать может тоже как угодно, в том числе и используя x264 для видео.

Про mplayer стоит сказать пару слов для пользователей windows. У тех у кого линукс, он наверняка есть. А вот бинарники для windows весьма устарели, последняя версия была 2007 года... только я это написал, заглянул на сайт, и блин уже есть наконец официальные билды для windows созданные совсем недавно. Так что этот абзац можно бы было удалить если бы не ещё одно. Mplayer, как и mencoder в оригинале чисто command line утилиты, что для многих очень сложно и не привычно. Ну ничем в этом не могу помочь кроме как дать линк на различные неофициальные фронтенды для mencoder. Ни одного ни разу не пробовал, и вероятно не буду. Я использую командную строку, привык уже. Так что дальше я буду писать про именно параметры командной строки, а есть они или нет в фронтендах я не знаю.

Так вот про создание роликов или перекодирования фильмов. Этот вариант использования требует как правило максимального качества при том что время кодирования в принципе не важно. Это не видео-конференция где надо всё кодировать на лету, можно подождать, может даже на ночь оставить. Главное чтобы результат был качественным. Для достижения максимального качества обычно используют многопроходное кодирование, обычно 2-х проходное, но 3-4 тоже можно попробовать если никак не получается вместить то что требуется в нужный размер.

Многопроходное кодирование обеспечивает необходимое перераспределение количества битов на каждый кадр для достижения максимального качества (оценка качества программными средствами это отдельная очень большая проблема) как правило используя метрику PSNR. Во всяком случае многопроходное кодирования должно давать результат лучше чем однопроходное, так как кодек на проходе после первого будет заранее иметь информацию о всех типах фреймов на всём протижении ролика, и их сложности для кодирования.

Что-то я уже устал сегодня. Зато как-бы введение написал. Продолжение будет позже.

Tags: h264, video
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 20 comments