Кодирование WoE-видео при помощи MeGUI в AVC a.k.a. H264

Тема в разделе 'Смотреть', создана пользователем Dancing with Aute, 18 ноя 2010.

  1. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Данный гайд не затрагивает практически ничего из мира Ragnarok Online вообще и нашего любимого сервера в частности и ориентирован всего лишь на надежду на выпрямление рук некоторым товарищам и заодно в качестве руководства тем, кто только пробует снимать WoE-видео (и не только).

    Сначала я хотела написать много нудной теории, но потом решила, что вряд ли её кто-то читать будет, а если и будет, на википедии всё равно расписано понятнее.

    Итак, всё, что могло бы быть после слов "во-первых":
    1. Никогда не кодируйте видео напрямую из программы видеообработки (Premiere, Vegas, Pinnacle Studio etc). Банальная экономия машинного времени, к тому же разные программы работают с внешними кодеками с разной степенью кривости и почти никогда - так, как нужно. Экспортируйте в Uncompressed Video + PCM Audio. Шаманства будут после. Да, места дохрена занимает, зато нагрузка на CPU в процессе существенно ниже. К тому же всё равно потом убивать.
    2. Не суйте H264-поток в AVI-контейнер. У AVI весьма ограниченная поддержка b-фреймов, в использовании которых и есть вся крутость H264. А так ещё и рискуете проблемами с возможными артефактами и производительностью (у H264 более навороченные алгоритмы сжатия по сравнению с XviD, как следствие, выше нагрузка на процессор при кодировнии/декодировании).
    3. Если хочется именно AVI (да, у него тоже есть плюсы - этот контейнер жуётся абсолютно всеми аппаратными видеоплеерами, например), жмите видео в XviD. Я даже расскажу как. Потом.

    По изложенным выше причинам и ещё по некоторым соображениям остановимся на кодировании в следующие контейнеры со следующим содержимым: MP4 (видео - H264, аудио - AAC) и AVI (видео - XviD, аудио - MP3).

    1. MP4.
    1.1. Как жать?
    Путь истинного красноглазого падавана - консоль. Да будет известно тем, кому неизвестно, что абсолютно все кавайные программки для сжатия видео - всего лишь надстройки над мрачными чёрными терминальными ужасами и предназначены всего лишь для передачи необходимых параметров этим самым программам. Лично я предпочитаю MeGUI, который небезосновательно считается одним из лучших многофункциональных гуёв для кодирования мультимедиа.
    [IMG]

    Поскольку MeGUI работает через фреймсервер Avisynth, нам, собственно, понадобится этот самый фреймсервер. Идём на www.avisynth.org в секцию Download и утаскиваем инсталляшку актуальной версии. Установка производится привычным тупым жмаканьем в Next до победного конца, даже документацию почитать не успеете (хотя было бы круто - Avisynth на самом деле охренительная вещь для постобработки видео. Отдельные гуру в нём полностью ролики монтируют. С эффектами даже. Уточняю, Avisynth работает через скрипты на собственном языке). После чего можно идти уже на cтраницу MeGUI на Sourceforge и качать главного подозреваемого. Ставится также. Но это пока.
    Внимание: MeGUI для работы требует .NET Framework не ниже версии 2.0. Пользователи Windows Vista и Windows 7 не заморачиваются, пользователи Windows XP качают и ставят (впрочем, если у вас какой-нибудь ZverCD, фреймворк уже наверняка установлен).
    При первом запуске MeGUI выплюнет окошко с предложением обновиться до актуальной версии. В случае с первой установкой обновление будет значить ещё и то, что подтянется весь необходимый для кодирования софт. Довольно удобно для многих, ручками подтыкать ничего не надо, проблем с совместимостью одного с другим тоже не замечено. Запускаем апдейт, идём пить чай. Когда начнут вылазить странные окошки с кучей чекбоксов, терпеливо проставляем птички на всех, если лень разбираться. Это пресеты кодирования, некоторыми из них даже можно и нужно пользоваться.
    [IMG]

    Обновились, перезапустили? Ура. Будем считать, что у нас уже есть готовое непожатое или лосслесс-видео, которое надо привести в божеский вид.
    Лезем в Tools > AVS Script Creator и получаем такое симпатичное окошко:
    [IMG]

    Собственно, тут других вариантов действия, как ткнуть сразу в многоточие возле Video Input и выбрать исходное видео, над которым будем дальше издеваться. Пред наши ясные очи тут же вылазит превью - текущий вывод фреймсервера. Поскольку модификаций в скрипте мы пока не производили, оно и будет выглядеть так, как в оригинале. Поэтому окошко без угрызений совести закрываем и изучаем интерфейс дальше.
    Передаю привет любителям чёрных полос по краям видео и обращаю их внимание на птичку Crop. Четыре поля ввода справа - соответственно, количество пикселей, которые нужно обрезать с каждой из сторон. Цифры легко подбираются при помощи любого графического редактора и встроенного в Windows калькулятора. Заодно можно откусить всякое оставленное при монтаже палево типа бейзинфы, БМа, чата.
    Resize. Как вы, надеюсь, догадались, изменение разрешения видео. Настоятельно рекомендую пользоваться следующими правилами при использовании этой опции:
    1. Не апскейлите при кодировании. Увеличивайте отдельные моменты при монтаже, на которые хотите обратить внимание, не более. Иначе начнут вылазить дивные интерлейсы и блоки. Если уж очень хочется/нужно скейлить - курить фильтры Avisynth, иначе см. выше.
    2. Да, это значит, что если у вас получился исходник в 1200х900, лучше его даунскейлить до 1024х768, чем апскейлить до 1280х960.
    3. Используйте значения, кратные 16, во избежание возможных артефактов.
    4. Используйте традиционные соотношения сторон: 4:3 или 16:9. Любимый многими 1280х1024 - это 5:4 и выглядит нетрадиционно везде, кроме мониторов с таким же разрешением.
    Запомните или измените путь к результирующему скрипту в Output. Он будет кормиться в качестве входящего файла энкодеру.
    Идём на вкладку Filters:
    [IMG]

    Source type трогаем в том случае, если напортачили с экспортом видео, и оно вышло интерлейснутое. Из фильтров деинтерлейсинга рекомендую TDeint. Птица Source is Anime по результатам визуальных наблюдений признана годной и рекомендуемой к применению. Field order не трогаем вообще. Если отважились на ресайзы, используем фильтр Lanczos/Lanczos4. Остальное, включая FPS, не трогаем, конверция FPS несколько больше телодвижений требует.
    На вкладке Script гордо озираем получившееся творение и тыкаем Preview AVS script. Если результат удовлетворительный, закрываем превью и жмём Save, ругаемся, закрываем опять. С Avisynth покончено (по крайней мере, для этого видеофайла).
    Небольшая заметка: если при попытке превью Avisynth ругается страшными словами, среди которых есть что-то про YV12, нажмите Ok под этими словами, перейдите на вкладку Script и в текстовом поле с новой строки впишите:
    Код:
    ConvertToYV12()
    В основном окне в Encoder settings выбираем пресет x264: *scratchpad* и жмём Config. Внимание, сейчас будет секс. Ну, пусть немного, но будет.
    [IMG]

    1. Включаем Show Advanced Settings.
    2. Modes: Automated 2pass (не будем пока задротить на тему).
    3. Bitrate. Тут можно расписывать много и весело, но я этого делать не буду, потому что мне лень. Главное, что нужно знать, так это то, что от битрейта в первую очередь будет зависеть конечный размер видео. Даю приблизительные значения, на которых минимум заметных глазу артефактов на различных разрешениях (из расчёта на 30 FPS в результирующем видео):
    1024x576: 1400~1700 kbps
    1024x768: 1700~2100 kbps
    1280x720: 1900~2400 kbps
    1280x960: 2100~2800 kbps
    Значения подбирались экспериментальным путём и не претендуют на звание единой и нерушимой истины. Значения могут отклоняться в большую сторону процентов на 30-40 в случае появления артефактов на проблемных для кодирования участках (много движения и мелких элементов, если кто не в курсе).
    4. Tunings: Touhou. Выведено экспериментальным путём.
    5. На вкладке Frame-Type выключаем Deblocking (блоков во фрапсовском видео всё равно нет, а процессор разгрузит немного).
    6. Больше ничего не трогаем и молча нажимаем OK.

    File Format: либо MP4, либо RAWAVC, нам не критично, всё равно потом в контейнер собирать. Если нет желания, чтобы энкод укладывался рядом с оригиналом, меняем значение Video Output. И Enqueue, которая в рамке Video encoding, не путаем. Всё, задача запланирована, переходим к аудиодорожке.

    Почему не MP3: потому что MPEG Layer 3 - далеко не самый оптимизированный аудиокодек из существующих. Да, старый и популярный (найти девайс без его поддержки, пожалуй, нелегко), но это ещё ничего не значит. А мы будем жать в AAC.
    В рамке Audio в поле Audio Input просто и незатейливо выбираем наше оригинальное видео (вы ведь наложили в редакторе звуковую дорожку? Если нет, то, впрочем, без разницы, всегда можно собрать нужную в Audacity/Sound Forge и скормить в качестве источника нужный WAV/MP3/OGG/AAC-файл). Из длинного списка Encoder Settings выуживаем FAAC: *scratchpad* и жмём рядом на Config.
    [IMG]

    Тут можно не заморачиваться, выбирать в AAC Options радиобатон VBR и выставлять значение в 192. По качеству эквивалентно MP3 V0, а весит вдвое меньше. И хуже звучать не будет, уверяю. Аудиофилы пришивают FLAC и не дёргаются. А мы - Ok, Extension: Raw-AAC, Enqueue.
    Выдыхаем, переходим на вкладку Queue в основном окне.
    [IMG]

    Должно быть два джоба с Mode: video (по одному для каждого прохода кодирования) и один с audio. Если это не так, перечитывайте текст выше и вспоминайте, что вы натворили. В случае совпадения ожиданий с реальностью жмём Start и идём пить чай - процесс пошёл. Кстати, по-умолчанию все процессы кодирования запускаются с приоритетом Low, так что можно даже продолжать чем-то (бес)полезным заниматься на компьютере (мне по Пронтере бегается вполне нормально, железо не хайэнд).
    Если по возвращении с чаепития в колонке Status напротив какого-то джоба грустно стоит error, переходим на вкладку Log и изучаем весь тот бред, что там написан. Обычно бред довольно ясно даёт понять, почем он возник. Устраняем косяки, кодим дальше.

    Скодилось? Ура. Осталось всё собрать в один контейнер. Tools] > Muxer > MP4 Muxer.
    [IMG]

    Video Input - выбираем сжатый видеопоток. Audio 1 > Input - выбираем сжатый аудиопоток (если есть желание, можно поизвращаться с вложением двух дорожек, например, на одной только музыка, на второй ещё и мат из вентрилы; впрочем, я не знаю, кому такое может понадобиться). Если не нравится результирующее имя файла в Muxed Output, меняем. Кнопка Queue, вкладка Queue, кнопка Start. Муксинг - не кодирование, а всего лишь сборка потоков в контейнер, поэтому длится считанные секунды.

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

    2. XviD.
    Coming soon.


    Пока что можете спрашивать ваши вопросы по первой части.
    Извиняюсь за возможные ошибки и неточности, will be fixed later.
  2. Logitech Форумный боец

    На форуме с:
    21 июн 2009
    Сообщения:
    3.652
    Адрес:
    Memories (*_*)
    Неужели брайтик научиться сжимать!
  3. Linkin

    На форуме с:
    20 июн 2010
    Сообщения:
    183
    забудь , сжимать это не по брайтовски
  4. Бригхт

    На форуме с:
    6 ноя 2010
    Сообщения:
    448
    после кодировки звука нету =\ переделал раза 4 по инструкции, нихера =\
  5. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    В смуксенном видео? Как вы могли заметить, там отдельно в два прохода кодится видео, отдельно звук, а потом всё это муксится в готовый файл.

    З.Ы. Ночью (как до дома дойду) перепишу часть гайда на тему параметров видео, проигрыш в размере процентов 15-20, выигрыш в качестве офигительный. Заодно, возможно, часть по XviD допишу.
  6. NudeHamster После конца света - направо.

    На форуме с:
    22 авг 2008
    Сообщения:
    4.328
    Адрес:
    Дефолт Сити
    не смотрел еще прогу, у меня ток 1 вопрос - можно в него список файлов запихнуть и на ночь оставить кодировать? или каждый отдельно? ( судя по одному из скринов вроде можно, но я переспрошу)
  7. Бригхт

    На форуме с:
    6 ноя 2010
    Сообщения:
    448
    я дупло все ок =) попытка вытащить из видео музыку, которой там нет это была победа.
    6 минутное видео =1**mb
    Мне нравится. Завтра выложу первый труд.
    Спасибо ^_^
  8. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Можно, там ведь всё на очередях построено. Правда, утром придётся проснуться и всё смуксить. И вообще батники рулят...
  9. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Чуть-чуть поправила параметры кодирования под более оптимальные. Последний раз пользовалась такими (с незначительным тюнингом мелочей), ролик в 4 с половиной минуты со звуком (1280х720) влез в 86 мегабайт без заметных при просмотре потерь. Писать гайд по части, связанной с XviD, пока лень. Хотя, возможно, до утра ещё поборю оную.
  10. NudeHamster После конца света - направо.

    На форуме с:
    22 авг 2008
    Сообщения:
    4.328
    Адрес:
    Дефолт Сити
    у меня другой проблемс. может подскажешь.

    пользуюсь вегасом. сколько не мучался встроить кодеки не получилось по человечески. исходные местные кодировки делают видео слишком уж глобальным ( как раз без компресии). настолько что потом ужать до твоего примера не получаеться. или теряю качество..

    винда 7. 64бит. вегас под версию 64 бит.
  11. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Uncompressed video, PCM audio - в разрешении 1280х960 выходит примерно 7 гигабайт минута. Приходится жертвовать, что делать.
    Intel Indeo iYUV, PCM audio - в разрешении 1280х960 выходит примерно 3 гигабайта минута. Уже теплее.
    Честно пробовала подружить Vegas с ffdshow H.264 Uncompressed - зафейлилось. Впрочем, ССЗБ, у меня стабильных сборок ffdshow давненько уже не стояло, всё current'ы из SVN. Может, у вас что-то получится, по логике - почти оптимальный пресет для экспорта.
    А энкодить сразу в конечный файл из видеоредактора - не Ъ. Как минимум, туда разных няшностей типа Avisynth не впихнуть, да и геморроиться с библиотеками для энкода в H.264...
  12. Alair right

    На форуме с:
    19 янв 2009
    Сообщения:
    2.837
    Адрес:
    Эльфийское гетто
    Будет очень круто увидеть скрины, как примеры сохранения качества). "Сравнение с оригиналом" - что-то вроде этого.

    Кстати, раньше чаще всего для подобного дела использовали виртуалдаб, MeGUI действительно выигрывает по каким-либо свойствам или просто дело вкуса?
  13. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Alair, совсем уж тёплое с мягким сравниваете. VirtualDub(Mod) - это программа для захвата и линейного монтажа видео, которая, как и почти все видеоредакторы, умеет пользоваться зарегистрированными в системе видеокодеками для сжатия. MeGUI - графическая оболочка для пачки консольных энкодеров и прочих полезных в хозяйстве софтин. Как бы очевидно, что он изначально предназначался для удобного для конечного пользователя процесса подготовки к кодированию.

    Сравнительные скриншоты (простите за отсутствие фототочности, я просто тримами вырезала нужные фрагменты из uncompressed и скодила со старыми параметрами) (осторожно, относительно много трафика):
    1280x720, 2500 kbps, grain tune:
    http://i52.tinypic.com/2zylyk4.png
    http://i51.tinypic.com/8yypm9.png
    http://i53.tinypic.com/2z4ldf8.png

    1280x720, 2500 kbps, touhou tune + my small fixes:
    http://i53.tinypic.com/6nsi1u.png
    http://i56.tinypic.com/28her74.png
    http://i51.tinypic.com/35i68sg.png

    1280x720, Sony iYUV lossless (~ экспорт из видеоредактора):
    http://i55.tinypic.com/2db199y.png
    http://i52.tinypic.com/29nfoy0.png
    http://i51.tinypic.com/2nl69w2.png

    Трава всё равно слегка смазывается, надо бы поколдовать, что ли...
  14. Бригхт

    На форуме с:
    6 ноя 2010
    Сообщения:
    448
    Как повысить качество конечного видео?

    пробовал ставить битрейт выше, но толку нет. Как по колдовать, чтобы вес остался вменяемым и качество улучшилось(было ближе к исходному)?
  15. Skyray Die rather than betray trust

    На форуме с:
    31 май 2009
    Сообщения:
    1.755
    Адрес:
    Void
    можешь подробнее об этом рассказать?
  16. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Попробуйте увеличить количество b-frames и minimum quantizer.

    На вкладке Script ручками вписываем в конце (значение своё):
    Код:
    ConvertFPS(20)
    Меньше 20 Avisynth не даст. На всякий случай после нажатия кнопки Save откройте блокнотом скрипт и проверьте, сохранилось ли, у Megui плохая привычка иногда выкидывать параметры из скрипта, которые не были явно заданы где-либо в конфигурации.
  17. Skyray Die rather than betray trust

    На форуме с:
    31 май 2009
    Сообщения:
    1.755
    Адрес:
    Void
    ну до этого метода я сам допёр, конвертил из 60 в 30, но этот метод мне показался каким-то грубым, в том смысле что конечное видео немного подтормаживало само по себе (хз, как объяснить, было какое-то дёрганное что ли)
    от этого можно как-то избавиться?
  18. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Теоретически можете поиграться с zone в том же ConvertFPS, но результат не гарантирован. Ибо "дёрганное" при понижении FPS вдвое - ну, дык, вы знали, на что идёте.
  19. Reishi Quadratisch.Praktisch.Gut.

    На форуме с:
    14 июл 2010
    Сообщения:
    534
    Адрес:
    Children of Thor
    Продолжение будет?
  20. Dancing with Aute Ты так умрёшь

    На форуме с:
    13 июн 2010
    Сообщения:
    902
    Адрес:
    /dev/urandom
    Может быть, весной. Мне откровенно лень сейчас. Весной, впрочем, тоже будет лень, но там хотя бы железо будет более приятное.