x264 coding FAQ by SM, version 1.1a

Ответить
Слэйер Мун
The Legend
Сообщения: 3113
Зарегистрирован: 05 июл 2005, 13:00
Карточка игрока: Slayer Moon

x264 coding FAQ by SM, version 1.1a

Сообщение Слэйер Мун » 10 фев 2006, 18:36

За весь прошедший год многие люди с форума АсоФ'а (а также его же чата) неоднократно задавали мне вопросы по поводу сжатия (компрессии, перекодировки) видео (на 99% это были вопросы касательно уменьшения размера видео-записей боёв). Т.к. мне надоело всем объяснять одно и тоже - спешу (спешил я долго =) написать этот мини (очень мини)-ФАК по вопросам кодирования видео в чрезвычайно перспективный и идеальный для наших целей (наилучшее соотношение размер/качество выходного видео) формат H264/AVC (как многие уже знают этот формат будет использоваться для сжатия видео-контента в будущих носителях видео-информации - Blue Ray, HD-DVD, как сейчас MPEG 2 используется для хранения видео в DVD). H264 формат платный, существует определённое количество фирменных кодеров (наиболее известен Nero Digital, использующий Н264/AVC) и каждый стоит денег, поэтому мы как любители open source будем использовать бесплатную альтернативу - x264.

Итак, что нам нужно чтобы перекодировать эээммм... допустим боевое видео, закоденное в xvid ( или divx) в х264 ? Для начала сам кодер, последние билды этой штуки (нужно отметить что существует CLI-версия х264 (CLI - command line interface), мы её в данный момент не рассматриваем, мы будем использовать VFW-версию (VFW - video for windows), она наиболее user-friendly) всегда можно взять на http://forum.doom9.org/showthread.php?s=&threadid=89979 . Хочу сразу заострить внимание читателей на том, что х264 не кодек (codec - COder/DECoder) ! Это кодер/энкодер (encoder), т.е. им можно только кодировать видео, но просматривать его никак не получится, для просмотра же абсолютно все рекомендуют использовать универсальный декодер FFDShow,взять его можно на http://ffdshow.sourceforge.net/tikiwiki ... ng+ffdshow или ссылки на него можно найти на той же странице, на которой лежит постоянно обновляемая версия х264 (см. начало ФАКа). С помощью FFDShow можно просматривать любое MPEG4 видео а также H264/AVC и прослушивать большое количество сжатого audio (что находится внутри видео имеется в виду), вещь очень полезная и нужная, работает быстро, выдаёт качественную картинку, имеет "миллион" настроек, хотя и без тонкой настройки работает "как надо".
Итак - кодер и декодер есть (cамо-собой разумеется, что нам также нужны установленные XVID или же DIVX, вобщем тот кодек, с помощью которого закодено видео которые мы хотим перевести в х264), теперь нам нужна прога, которая собственно и будет выполнять кодирование. Не буду оригинальным и возьму VirtualDub, как наиболее подходящую для наших целей софтварину. Лично я использую простую русскую версию этой программы, которая всегда доступна для скачки на том же http://samlab.ws
Установив х264 VFW, FFDShow и VirtualDub приступим к самому действу и начнём мы его с запуска Vdub'а =) Далее идём в меню настройки кодера х264 (тут и ниже по тексту всё делаем, как на картинках) :
Изображение
Далее жмём "Изменить" и настраиваем х264 следующим образом :
Изображение
На вкладке х264 Configuration :
Изображение
Сразу хочу отметить что полоска Target Bitrate у меня установлена на значение 100 не с проста, по ходу дела объясню почему.
На закладке Rate Control всё должно выглядеть вот так :
Изображение
Можно сказать ничего не меняем по сравнению с настройками по умолчанию.
На третьей закладке всё выставляем как показано тут :
Изображение
И на последней всё делаем так :
Изображение
Особо не вдаваясь в подробности можно отметить что всё что нам надо поставили на "максимум" (видео будет кодироваться очень долго и результат будет лучшим с визуальной точки зрения), конечно это не идеальный вариант (в идеале под каждый тип видео нужно иметь свои настройки) но по мне так очень хороший (жажду критики от мега-отцов кодинга).
Помните на первой закладке у нас стоял ползунок Target Bitrate на значении 100 ? Так вот после долгого юзанья (кодирования различного видео) х264 я пришёл к выводу, что для успешного (по нашим излюбленным показателям размер/качество) кодирования видео боёв в 2D файтингах так называемого олд-скульного вида (SF, КоФ, ЛБ и т.п.) нам подойдёт битрэйт 100, для 3Д и 2Д файтингов не олд-скульных (ГГ, VS-серия вообще) нам подойдёт битрэйт 200. Почему так ? В 3Д и "VS-серии-подобных-играх" очень часто обновляется (изменяется) бОльшая часть того, что мы видим перед глазами - в 3Д это сами персонажи, которые больше чем в 2Д плюс к этому 3Д задники, которые постоянно меняются в зависимости от перемещения бойцов, тоже с ГГ например - всё мелькает, бэкграунд часто меняется (все летают и из-за этого идёт постоянное смещение - вверх, вниз + сам бэк полностью меняется по время выполнения даст-комбы). При использовании битрэйта 100, так хорошо подходящего для олд-скульных 2Д файтов, в 3Д мы получаем вместо удобоваримой картинки страшную кашу. А вот если мы поставим битрэйт 200 то всё будет чики-пуки =) Полезным также является выбор Direct mode "Spatial" для 2D и "Temporal" для 3D.
В итоге мы поняли (да ? =) что все настройки для кодирования видео должны быть такие как у меня на картинках (впрочем и это обсуждаемо, жду критики х2) но в зависимости от типа (олд 2D или же 3D/new 2D) видео мы меняем битрэйт с 100 на 200. Для комбо видео можно даже поставить 300 или 400, качество будет очень недурным и при этом размер не будет огромным как у большинства комбо-видео наших зарубежных коллег (будь они прокляты со своим МПЕГом 1 =).
Вобщем настроили мы х264 как надо, теперь зарядим кодирование им в 2 прохода (так и никак иначе, даже не обсуждается, хотя я читал что можно больше но там что то хитро надо настраивать) =). Для этого в диалоговом окне с настройками х264 опять переходим к первой закладке и там ставим Multipass - FirstPass (т.е. мы выбираем режим кодирования в первом проходе), жмём ОК. Кстати если кто ещё не догадался перетащить нужное видео путём drag'n'drop'а (или же банальным Файл/Открыть видео файл) в рабочее окно VirtualDub - самое время это сделать =)
Между делом, если наc по какой то причине не устраивает звук в видео (например он в MP3 44100 hz, 128 kbit/s а для интернет-версии записи боя это слишком много, надо менять на 22050 Гц, Моно, 24 Кбит/сек или что-то такое) то мы будем его даунсэмплить, для этого идём в пункт меню VDub'а - Аудио, там выбираем Режим полной обработки, далее нам откроется недоступное до этого момента меню Компрессия (всё там же - в Аудио) и в ней уже мы сможем выбрать формат в который перейдёт наш звук после конвертации, см. картинку :
Изображение
Далее уже в VirtualDub'е идём в меню Файл/Cохранить как AVI, там пишем имя файла (какое угодно собственно) а внизу НЕ забываем ставить галочку Don't run this job now; add it to job control so i can run it in batch mode, вобщем как на картинке :
Изображение
Поставив галочку мы автоматически ставим наш видео файл в очередь на кодирование (в данном случае файл будет кодироваться первым, в один проход). Очередь всегда можно посмотреть в меню Файл/Управление заданиями.
После этого "заряжаем" второй проход - идём опять в настройки х264, меню Видео/Компрессия и там в списке слева - х264 - H264/AVC encoder и жмём "Изменить". В меню настройки кодека меняем наш Multipass - FirstPass на Multipass - Nth Pass, жмём ОК. Далее полностью повторяем операцию идентичную той что мы проделали с кодированием в первый проход - идём в меню Файл/Cохранить как AVI там пишем имя файла (какое угодно собственно) а внизу НЕ забываем ставить галочку Don't run this job now.
Как всё это сделали мы получили видео полностью готовое к кодингу, нам осталось лишь зайти в Файл/Управление заданиями и там нажать кнопку "Начать". Видео (одно и тоже видео под одним и тем же именем) прокодится два раза и мы получим что хотели. Всё =)

p.s. Да - настраивать чуть гемморойно, но к нашей радости нам не придётся делать это каждый раз для каждого нового видео что мы хотим пережать. Нам всего лишь нужно настроить всё как надо для первого прохода, затем в меню Файл нажать "Сохранить параметры обработки". Тоже самое проделать со настройками для кодирования во второй проход, т.е. тоже их сохранить. Далее юзать, меняя только битрэйт, если нужно =)

p.p.s. Битрэйты 100 и 200 для 2D и 3D/new school 2D видео применимы только к видео в разрешениях 320х240 (стандартный размер для инет-видео записей боёв), соответственно если разрешение больше - увеличиваем битрэйт, но это уже поле для экпериментаторства =)

p.p.p.s. Этот ФАК версии 1.1а явно нуждается в дополнениях и изменениях, так что если вдруг у кого-то возникли вопросы (омг только не это!) предложения или пожелания - постите в этой теме.

p.p.p.p.s. Спасибо Хейту за полезную информацию, кое-чем из неё я дополнил этот мини-ФАК.
Challenge the Legend

Let us rain some DOOM down upon the filthy heads of our DOOMED enemies !

Слэйер Мун
The Legend
Сообщения: 3113
Зарегистрирован: 05 июл 2005, 13:00
Карточка игрока: Slayer Moon

Сообщение Слэйер Мун » 03 мар 2006, 16:06

Update - последние билды х264 теперь нужно брать тут - http://x264.nl Апдэйты каждый день.
FFDShow, с оптимизациями под различные sse =) Брать тут - http://www.free-codecs.com/FFDShow_download.htm
Challenge the Legend

Let us rain some DOOM down upon the filthy heads of our DOOMED enemies !

hate264
Новичок
Сообщения: 1099
Зарегистрирован: 06 июл 2005, 12:00
Карточка игрока: hate
Поблагодарили: 2 раза

Сообщение hate264 » 24 апр 2006, 05:21

Ой, бедняги.

Последняя закладка настройки конфига, опция Method = uneven multi-hexagon или hexagonal (по умолчанию). Exhaustive роняет скорость сжатия процентов на 30, поднимая PSNR на десятые.

И если уж я здесь. Предпоследняя (MBs&Frames). Max. Ref Frames и Consecutive - в максимум. Галку к Mixed Refs.

>(так и никак иначе, даже не обсуждается, хотя я читал что можно больше но там что то хитро надо настраивать)
Внимание-внимание! Суперхитрая настройка, позволяет ускорить сжатие в два раза! В главном окошке включить один проход, в продвинутых настройках на закладке Rate Control поставить Bitrate Variability (%) в 0. Там же: Direct Mode = Spatial для 2D и Temporal для 3D.

СМ, респект, обнови картинки до последней версии.

Для людей, не боящихся командной строки:

Код: Выделить всё

x264 --ratetol 1000 -I 300 -i 30 -r 16 -b 7 --b-pyramid -B 112 -A all -w -8 -m 7 --direct spatial --me umh --merange 16 --b-rdo --bime --mixed-refs --progress -o сжатый_файл.mkv исходный_файл.avs
Желающие разобраться в настройках да скачают классный мануал: ttp://forum.doom9.org/showthread.php?t=98247

Под конец нашего представления злостно нарушу правила форума. Декодер, которым можно смотреть h264, лежит у корейцев на форуме (ttp://www.kmplayer.com/kbbs/attachment.php?at ... 1144985413). Зарегистрируйтесь ))) и устанавливайте голый .ax на здоровье (подсказка: regsvr32 CoreAVCDecoder.ax - только начало))))). Отмечу, что он действительно хорош.

Слэйер Мун
The Legend
Сообщения: 3113
Зарегистрирован: 05 июл 2005, 13:00
Карточка игрока: Slayer Moon

Сообщение Слэйер Мун » 24 апр 2006, 16:35

Очень интересно, вечером попробую предложенные тобой варианты.

Картинки обновлю конечно.
Challenge the Legend

Let us rain some DOOM down upon the filthy heads of our DOOMED enemies !

hate264
Новичок
Сообщения: 1099
Зарегистрирован: 06 июл 2005, 12:00
Карточка игрока: hate
Поблагодарили: 2 раза

Сообщение hate264 » 15 май 2007, 11:56

Снять sticky: vfw-версия кодека (сорры, подавился своими словами, правильно будет так) год как не выпускалась, а сейчас полностью сменила оболочку.

Аватара пользователя
OverKilL.
Капитан
Сообщения: 4194
Зарегистрирован: 05 июл 2005, 12:00
Карточка игрока: OverKilL.
Канал пользователя: OverKilL.
Откуда: Санкт-Петербург
Благодарил (а): 1407 раз
Поблагодарили: 619 раз
Gender:
Контактная информация:

Сообщение OverKilL. » 15 май 2007, 20:34

гуд
"классическая-квази-монохроматическая-гармоническая подпись"
Пещера задрота - мой сайтец-бложец OverKilL.
Мои Cтримы: GoodGame.ru/OverKilL013, Twitch.tv/OverKilL013, gaming.youtube.OverKilL013, sc2tv.ru/OverKilL013
Мои Каналы: youtube.com/OverKilL013, youtube.com/GGXrd

Tender Damage
p.s. - "дам потрогать свой ДП"

BioLogIn
Запускаю супер
Сообщения: 21061
Зарегистрирован: 05 июл 2005, 13:00
Карточка игрока: BioLogIn
Канал пользователя: BioLogIn
Благодарил (а): 1356 раз
Поблагодарили: 2713 раз
Контактная информация:

Re: x264 coding FAQ by SM, version 1.1a

Сообщение BioLogIn » 19 окт 2010, 23:30

по просьбам трудящихся вернул из небытия картинки из первого поста темы.
Death doesn’t discriminate
Between the sinners and the saints
It takes and it takes and it takes
And history obliterates
In every picture it paints
It paints me and all my mistakes
===========================
Fighting.ru | GuiltyGear.ru

Ответить