Кодек x264

Часто задаваемые вопросы

MSU Graphics & Media Lab (Video Group)

Содержание



Часто задаваемые вопросы


  • Вопрос: В чём отличие нового стандарта H.264 от предыдущего стандарта MPEG-4?

    Ответ: Стандарт сжатия видео H.264 (полное название MPEG-4 Part 10 AVC/H.264) является логическим продолжением стандарта MPEG-4 Part 2 ASP (именно его часто называют просто MPEG-4). Сам стандарт был принят ещё в середине 2003 года, но по-настоящему эффективные кодеки этого стандарта начали появляться только совсем недавно.

    Для пользователей переход к новому стандарту означает улучшение эффективности кодирования их видеопоследовательностей. То есть, при одинаковом качестве сжатой последовательности фильм нового стандарта будет занимать меньше места на диске или меньшую ширину канала (разработчики стандарта ставили перед собой задачу уменьшить размер на 50%).

    Более подробную информацию о стандарте можно узнать из следующих источников:

  • Вопрос: Где взять кодек x264?

    Ответ: Кодек x264 – это кодек с открытыми исходными текстами стандарта H.264. Ряд независимых сравнений (смотрите, например сравнение на сайте Doom9 или сравнение нашей лаборатории) показывают, что кодек x264 является одним из лучших кодеков нового стандарта H.264.

    Официальной страницей разработчиков кодека является http://developers.videolan.org/x264.html. На ней вы можете подписаться на рассылку разработчиков кодека, скачать последние исходные тексты или различные варианты сборки кодека (уже скомпилированные и готовые к использованию исполняемые программы).

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

    Дополнительную информацию и обсуждения кодека можно найти на форумах Doom9.

  • Вопрос: Как я могу воспользоваться консольным вариантом кодека?

    Ответ: Для сжатия видео кодеком x264 обычно используется командная строка. Кодек также может быть собран в виде фильтра Video For Windows, но в этом случае пользователю доступен ограниченный набор параметров кодирования.

    Также для удобства работы могут быть использованы различные версии графического интерфейса.

    Базовые параметры

    • --help вывод списка всех возможных параметров
    • --output <filename>, -o <filename> задает имя выходного файла
    • --frames <integer> максимальное число кадров для кодирования
    • --seek <integer> первый кадр для кодирования
    • --fps <float|rational> количество кадров в секунду в выходном потоке

    Режимы алгоритмов управления битрейтом
    Кодек имеет три различных алгоритма управления битрейтом:

    • CRF (constant ratefactor) - постоянный квантователь для каждого типа кадра, заданный пользователем. Инициализируется в командной строке как --crf <integer>
    • ABR (average bitrate) - варьирование качества на различных кадрах для достижения наилучшего качества последовательности при заданном битрейте.
      Инициализируется --bitrate <integer>
      Могут быть дополнительно заданы параметры, управляющие алгоритмом:
      • --ratetol <float> Допустимое отклонение битрейта (в процентах)
      • --vbv-maxrate <integer> Максимальный битрейт кадра
      • --vbv-bufsize <integer> Размер буфера
      • --vbv-init <float> Начальное заполнение буфера (в процентах)
      Также могут быть заданы дополнительные параметры, управляющие изменением коэффициента квантования, такие как --qpmin <integer>, --qpmax <integer>, --qpstep <integer>, которые задают минимальный, максимальный коэффициенты квантования и максимальное изменение коэффициента квантования между кадрами соответственно.
    • Многопроходный режим. Аналогичен ABR, но позволяет достигать лучшего качества за счет выполнения нескольких проходов по фильму. Первый проход заполняет файл статистики. Для этого кодек запускается с параметром --pass 1. Последний проход производит кодирование фильма, используя файл статистики, созданный при первом проходе. Кодек запускается с параметром --pass 2. Между первым и последним проходом может быть добавлено несколько дополнительных проходов, каждый из которых уточняет статистику. В таких случаях кодек запускается с параметром --pass 3.

    Анализ видеопоследовательности

    • --analyse <string> Рассматриваемые подразбиения блоков. Множество значений через запятую из списка p8x8, p4x4, b8x8, i8x8, i4x4, или значения none, либо all. Увеличение количества рассматриваемых разбиений увеличивает качество закодированной последовательности, но уменьшает скорость работы.
    • --subme <integer> Качество me, в пределах от 1 до 7. 1 – наиболее быстрое, 7 – наиболее высокое качество.
    • --merange <integer> Максимальный радиус поиска векторов движения
    • --me <string> Используемый метод определения движения.
      Варианты:
      • dia - diamond search (самый быстрый)
      • hex - hexagonal search
      • umh - uneven multi-hexagon
      • esa - exhaustive search (самый медленный)
    Примеры использования командной строки для сжатия

    x264 --bitrate=700 --fps=30 --me=umh --merange=32 --subme=7 --analyse=all -o foreman.264 foreman.avi

    В этом примере мы кодируем стандартную последовательность Foreman с битрейтом 700 Кбит/сек. Частота кадров – 30 кадров в секунду, алгоритм компенсации движения «Uneven multi-hexagon» с областью поиска 32x32 пикселя и наилучшим качеством компенсации. Анализируются все варианты разбиения.

    Запустить кодек из командной строки для многопроходного сжатия можно следующим образом:

    • Запускаем первый раз для создания файла со статистикой:

      x264 --bitrate=<target_bitrate> --pass 1 -o <output_file> <input_file>

      После окончания работы кодека будет создан файл x264_2pass.log с собранной на первом проходе информацией.

    • Запускаем второй раз для создания файла со статистикой (этот этап может отсутствовать или повторяться несколько раз):

      x264 --bitrate=<target_bitrate> --pass 3 -o <output_file> <input_file>

      На этом этапе в файле «x264_2pass.log» будет обновляться собранная статистика.

    • Запускаем последний раз для записи закодированной последовательности (создаётся файл ):

      x264 --bitrate=<target_bitrate> --pass 2 -o <output_file> <input_file>

  • Вопрос: Как потом просмотреть закодированный файл?

    Ответ: После кодирования фильма результат можно получить в одном из двух форматов:

    • Поток mkv.
      Он получается, если в параметрах кодека указать имя выходного файла <имя_файла>.mkv. Наиболее удобным способом его проигрывания является использование вашего любимого плеера с поддержкой DirectShow (например, Microsoft Media Player) и программы MatroskaSplitter (в правом верхнем углу есть пункт Download). Её достаточно установить, никакая дополнительная настройка не требуется.

    • Поток h264.
      Он получается, если в параметрах кодека указать выходной файл с любым другим расширением, вместо mkv, или без расширения. Не существует проигрывателя, способного воспроизводить этот формат напрямую, однако из него можно сделать avi файл. Для этого удобно использовать программу avc2avi. Формат параметров следующий:

      avc2avi –i <входной_файл> -o <выходной файл>.avi

      Для того, чтобы воспроизвести получившийся avi файл в проигрывателе, достаточно включить поддержку fourcc в декодере ffdshow. В настройках программы в пункте codecs в строке для формата H.264 надо поменять второе поле с disabled на libavcodec.

  • Вопрос: Что такое ffdshow и как его использовать?

    Ответ: ffdshow - это программа с открытым кодом для кодирования и декодирования различных видеоформатов. Включает большое количество фильтров для постобработки видео, позволяет управлять аудиопотоком, путем добавления различных эффектов. Оптимизирован для инструкций MMX, SSE и 3DNow!, что позволяет во многих случаях при просмотре видео меньше загружать процессор.

    Обладает огромным количеством настроек и может использоваться в качестве отдельного фильтра для других кодеков. Вполне может быть использован для декодирования x264.

    Для включения декодирования потока H.264 при помощи ffdshow необходимо запустить ffdshow->Video Decoder Configuration и во вкладке Codecs напротив H.264 выбрать декодер libavcodec, вместо disabled. После этого можно будет при помощи любого видеоплеера просматривать AVI, созданные кодеками стандарта H.264.

    Полезные ссылки:

  • Является ли MSU Graphics & Media Lab разработчиком кодека x264?

    Ответ: Нет, не является. Этот open source кодек разрабатывается распределенной группой программистов (см http://en.wikipedia.org/wiki/X264). Мы используем кодек x264 для проведения собственных исследований в области алгоритмов управления битрейтом.

Связаться с нами можно по адресу: 


Другие материалы


Материалы по видео


Смотрите также материалы:
- По цветовым пространствам
- По JPEG
- По JPEG-2000