За весь прошедший год многие люди с форума АсоФ'а (а также его же чата) неоднократно задавали мне вопросы по поводу сжатия (компрессии, перекодировки) видео (на 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. Спасибо Хейту за полезную информацию, кое-чем из неё я дополнил этот мини-ФАК.
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
Challenge the Legend
Let us rain some DOOM down upon the filthy heads of our DOOMED enemies !
Let us rain some DOOM down upon the filthy heads of our DOOMED enemies !
-
- The Legend
- Сообщения: 3113
- Зарегистрирован: 05 июл 2005, 13:00
- Карточка игрока: Slayer Moon
Update - последние билды х264 теперь нужно брать тут - http://x264.nl Апдэйты каждый день.
FFDShow, с оптимизациями под различные sse =) Брать тут - http://www.free-codecs.com/FFDShow_download.htm
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 !
Let us rain some DOOM down upon the filthy heads of our DOOMED enemies !
-
- Новичок
- Сообщения: 1099
- Зарегистрирован: 06 июл 2005, 12:00
- Карточка игрока: hate
- Поблагодарили: 2 раза
Ой, бедняги.
Последняя закладка настройки конфига, опция 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.
СМ, респект, обнови картинки до последней версии.
Для людей, не боящихся командной строки:
Желающие разобраться в настройках да скачают классный мануал: ttp://forum.doom9.org/showthread.php?t=98247
Под конец нашего представления злостно нарушу правила форума. Декодер, которым можно смотреть h264, лежит у корейцев на форуме (ttp://www.kmplayer.com/kbbs/attachment.php?at ... 1144985413). Зарегистрируйтесь ))) и устанавливайте голый .ax на здоровье (подсказка: regsvr32 CoreAVCDecoder.ax - только начало))))). Отмечу, что он действительно хорош.
Последняя закладка настройки конфига, опция 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
Под конец нашего представления злостно нарушу правила форума. Декодер, которым можно смотреть h264, лежит у корейцев на форуме (ttp://www.kmplayer.com/kbbs/attachment.php?at ... 1144985413). Зарегистрируйтесь ))) и устанавливайте голый .ax на здоровье (подсказка: regsvr32 CoreAVCDecoder.ax - только начало))))). Отмечу, что он действительно хорош.
-
- The Legend
- Сообщения: 3113
- Зарегистрирован: 05 июл 2005, 13:00
- Карточка игрока: Slayer Moon
- OverKilL.
- Капитан
- Сообщения: 4194
- Зарегистрирован: 05 июл 2005, 12:00
- Карточка игрока: OverKilL.
- Канал пользователя: OverKilL.
- Откуда: Санкт-Петербург
- Благодарил (а): 1407 раз
- Поблагодарили: 619 раз
- Gender:
- Контактная информация:
гуд
"классическая-квази-монохроматическая-гармоническая подпись"
Пещера задрота - мой сайтец-бложец OverKilL.
Мои Cтримы: GoodGame.ru/OverKilL013, Twitch.tv/OverKilL013, gaming.youtube.OverKilL013, sc2tv.ru/OverKilL013
Мои Каналы: youtube.com/OverKilL013, youtube.com/GGXrd
Tender Damage
p.s. - "дам потрогать свой ДП"
Пещера задрота - мой сайтец-бложец OverKilL.
Мои Cтримы: GoodGame.ru/OverKilL013, Twitch.tv/OverKilL013, gaming.youtube.OverKilL013, sc2tv.ru/OverKilL013
Мои Каналы: youtube.com/OverKilL013, youtube.com/GGXrd
Tender Damage
p.s. - "дам потрогать свой ДП"
-
- Запускаю супер
- Сообщения: 21061
- Зарегистрирован: 05 июл 2005, 13:00
- Карточка игрока: BioLogIn
- Канал пользователя: BioLogIn
- Благодарил (а): 1356 раз
- Поблагодарили: 2713 раз
- Контактная информация:
Re: x264 coding FAQ by SM, version 1.1a
по просьбам трудящихся вернул из небытия картинки из первого поста темы.
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
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