Сравнение x265 и x264 для кодирования по заданному битрейту (01.2014)

Сравнивалось качество и скорость кодирования двух кодеков:
* x264 версия core 140 (64-бита, gcc)
* x265 версия 0.6+258 (64-бита, gcc)

Для сравнения использовался входной файл «1_CrowdRun_1080p25.yuv» из набора
ftp://vqeg.its.bldrdoc.gov/HDTV/SVT_MultiFormat/
Разрешение файла 1920х1080 (FullHD) 25 кадров в секунду. В файле много движущихся объектов и деревьев с листьями. Не простая задача для кодеков.

Файл кодировался на разных битрейтах от 2000 до 14000 kbps каждым из энкодеров на preset=veryslow. Затем измерялся PSNR с помощью функции Compare в AviSynth. Для x264 использовалось два варианта однопроходное и двупроходное кодирование, для x265, к сожалению пока нет поддержки многопроходного кодирования и использовался один проход.

График PSNR (больше лучше)
PSNR-Compare-x264-x265-bitrate-01.2014-v2

График времени кодирования (в секундах)
Time-Compare-x264-x265-bitrate-01.2014-v2

Подробная таблица с данными

CrowdRun 1920×[email protected] x264 1 Pass PSNR x264 2 Pass PSNR x265 1 Pass PSNR x264 1 Pass (sec) x264 Time (1+2 Pass) x265 (sec)
2000 kbps 23,1951 23,982 23,9496 29 48 530
4000 kbps 24,306 25,3016 25,1841 33 61 742
6000 kbps 24,8762 26,0062 25,8493 37 72 896
8000 kbps 25,3112 26,4284 26,2713 42 82 991
10000 kbps 25,6721 26,6977 26,6684 45 87 1074
12000 kbps 25,973 26,8855 26,895 48 93 1143
14000 kbps 26,2227 27,0194 27,0393 51 99 1234

Как видно из графиков качество однопроходного кодирования x265 очень близко к двупроходному кодированию x264, но пока чуть хуже на маленьких битрейтах и чуть лучше на больших. При этом время кодирования пока различается во много раз. Очевидно что код x265 ещё требует значительных оптимизаций.

Мы планируем регулярно выкладывать тесты новых билдов x265, так что следите за обновлениями.

Скриншоты

x264 (два прохода): 110 кадр на 2000 kbps
x264-2000kbps-Run-Test1

x265 (один проход): 110 кадр на 2000 kbps
x265-2000kbps-Run-Test1
Набор из 3 закодированных файлов для 2000kbps (~7MB)

15 комментариев на “Сравнение x265 и x264 для кодирования по заданному битрейту (01.2014)

  1. Привет. У меня получился несколько другой результат при кодировании x264 (core 140.2377) через MeGUI, в том же режиме: 2000kbps, 2pass, Preset=VerySlow, x64 mode. Мой скриншот отличается от твоего на том же кадре. Выложи плиз свой видео файл x264, чтобы я посмотрел через MediaInfo твои точные установки кодирования x264 и сделал сам скриншот из него. Могу выложить свой скриншот но не знаю как его загрузить на этот сайт.

  2. Zorro, я сейчас на отдыхе далеко от компа на котором делалось сравнение. До файликов доберусь только 22 января. Как только дойду сразу выложу. Если что вот скрипт, которым кодировалось:

    set x264binary=x264_64.exe
    set filename=1_CrowdRun_1080p25

    for /l %%i in (2000,2000,14001) do (
    «./Soft/%x264binary%» —input-res 1920×1080 —fps 25 —level 4.1 —preset veryslow —slow-firstpass —bitrate %%i —stats «x264/stats.log» —pass 1 -o «x264/%filename%.264» «Uncompressed/%filename%.yuv» 2> «logs/%filename%_x264_%%ikbps_pass1.log
    «./Soft/%x264binary%» —input-res 1920×1080 —fps 25 —level 4.1 —preset veryslow —slow-firstpass —bitrate %%i —stats «x264/stats.log» —pass 2 -o «x264/%filename%.264» «Uncompressed/%filename%.yuv» 2> «logs/%filename%_x264_%%ikbps_pass2.log
    «./Soft/MP4Box.exe» -add «x264/%filename%.264» -new «x264/%filename%_%%ikbps.mp4»
    del «x264\%filename%.264»
    )

    Файлик x264_64.exe использовался из AMVSimpleGUI 4.0: http://amvnews.ru/index.php?go=Pages&in=view&id=34

  3. У меня не стояла опция «slow-firstpass», но даже без нее картинка получилась получше чем тут выложена. А после того как я поставил «slow-firstpass» то картинка стала еще лучше.
    Но я считаю что некорректно сравнивать x265 однопроходный режим с двухпроходным режимом x264. Надо сравнивать с однопроходным режимом x264. Дело в том что никакие профессиональные приложения и оборудование не используют двухпроходный режим кодирования H264. Телевещание, интернет-трансляции, видеорегистраторы, системы видеонаблюдения, платы аппаратного кодирования, мастеринг Blu-Ray дисков — везде используется однопроходный режим H264.
    И я лично тоже для практических целей уже много лет не использую двухпроходный режим кодирования — это лишняя трата времени. При правильно подобранном битрейте и настройках, однопроходный режим (при заданном битрейте или постоянном заданном режиме качества) в x264 через MeGUI или через x264 VFW дает прекрасный результат, нет смысла применять двухпроходный режим. Кроме того, с недавних пор у меня есть профессиональная карта аппаратного кодирования в H264 — Matrox CompressHD (стоит 540 USD) так что есть с чем сравнивать.

    • Отредактировал запись:
      1) Добавил однопроходное кодирование x264 на график
      2) Добавил набор файликов закодированных на 2000kbps

      Будет интересно если посмотришь не накосячил ли я где. )

      • А что с кодированием не для PSNR, а для SSIM с адаптивным квантованием? Ведь именно SSIM лучше показывает визуальное качество картинки.

        Я без AQ никогда ничего не кодирую. C aq-mode 1 и aq-strength 2 x265 мылить начинает в разы меньше

  4. Двухпроходное кодирование все ещё используется там, где нет критичности к real-time. Например когда кодируют фильмы или клипы. Но я согласен, что на графике стоило добавить и результат однопроходного кодирования для наглядности. И если существенной разницы с двумя проходами реально не будет, то убрать два прохода в следующих тестах.

  5. презентация от разрабов

    x265 veryslow 4 Mbps vs x264 veryslow 16 Mbps

    http://forum.doom9.org/showpost.php?p=1677487&postcount=635

    конечно там не описано всех деталей тестов, но вполне достаточно информации для желающих повторить этот тест у себя.

    исходник:
    http://media.xiph.org/video/derf/y4m/crowd_run_2160p50.y4m

    полноценные скрины теста от разрабов
    http://x265.org/CrowdRun4K_4Mbps.7z

    • На самом деле, там вообще никаких подробностей нет. Даже пояснения, что именно изображено на картинке. Придется самому проверять. )

      • я так понял, на выставке крутили демо ролик с разрешением 4к на телике 4к, но экран телика разделили на пополам.
        на первой половине экрана был 265рипчик, на второй половине — синхронно крутился 264рипчик .

        ну и в конце концов один из разрабов щёлкнул этот процес на фотик…

  6. провёл у себя такой же блиц-тестик.

    x265 —input «crowd_run_2160p50.y4m» —bitrate 4000 —preset veryslow —output «video.hevc»
    265лог — http://paste.org.ru/?5n7ey0

    x264 «crowd_run_2160p50.y4m» —bitrate 16000 —preset veryslow —output «video264.mkv»
    264лог — http://paste.org.ru/?grrpjq

    сделал скрины того же кадра, что и у разраба в архиве:
    х265
    http://lostpic.net/orig_images/e/d/6/ed672e8d3a5ec8e1b437b1e5f140c2ba.png

    х264
    http://lostpic.net/orig_images/9/4/e/94ec9570a528a13f5251c7d6ae3e0aea.png

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

    а вот добиться такого плохого качества как у разраба от х264 энкодера — мне не удалось, он выглядит несколько лучше, нежели аналогичный кадр от х265.

    не ожидал я такого обмана со стороны разраба…
    ———————————————————————-
    учитывая четырёхкратную разницу в битрейте, можно сказать, что х265 показал себя вполне достойно, а увеличив битрейт до 8000 вполне способен обойти х264.

    • Вот мне тоже показалось, что x264 не может давать такого качества на 16 Мбпс. Мб на 4 Мбпс и то сомневаюсь.

      По твоим скринам x264 на порядок лучше чем x265.

  7. У разраба показан кадр закодированный x264 c bitrate 4000.
    Я когда проверял, почему-то сразу понял какой битрейт сравнивается у обоих кодеков.

Добавить комментарий

Войти (Login): 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*