Делаем мувики: Гайд
--------------------------------------------------------------------------------
Решил написать вот такой вот гайдик, полностью описывающий процесс создания мувиков от а до я. =)
Все это дело делится на несколько частей:
1) Захват видео
2) Обработка
3) Сжатие
Далее я опишу каждую из них в деталях.
1) Захват видео.
Есть множество программ для этой цели, в нашем случае рассмотрим Fraps, скачать Retail версию можно по ссылке в конце гайда.
Снимая видео фрапсом, запускать клиент РО нужно в фул скрин режиме. Интерфейс фрапса выглядит следующим образом:
В этой закладке выбираем расположения счетчика фрейм рейта:
http://img478.img.bn/my.php?image=fraps1va7.jpgДалее выбираем куда будут сохраняться записываемые видео, а так же хоткей начинающий запись. Фрейм рейт стоит ставить в пределах 15-30 фпс, дело вкуса. Но учтите, что больший фрейм рейт, требует больших ресурсов. Режим Half-size использовать не стоит, ибо получим низкокачественное видео с вдвое меньшим разрешением.
http://img476.img.bn/my.php?image=fraps2oa3.jpgПосле запуска фрапса и РО в фулскрине, увидим желтый счетчик показывающий кол-во фреймов в секунду.
После начала записи (выбранным нами ранее хоткеем) цвет счетчика превратится в красный, останавливаем запись той же кнопкой.
Разрешение записываемого видео будет таким же как и игровое, рекомендуется писать в 1024*768 как наиболее удобным для просмотра (более высокое разрешение автоматически приведет к записи в режиме Half-size при отсутствии 2-х ядерного процессора).
И так, на данном этапе мы имеем фрагменты необработанного и несжатого видео (на самом деле оно "слегка" сжато видео кодеком фрапса). Очень важно знать параметры записанного видео - разрешение и фрейм рейт, они нам еще пригодятся. Приступим к монтажу.
2) Обработка.
Лично я использую Sony Vegas, он имеет очень удобный и интуитивный интерфейс, а так же широкие возможности видеомонтажа. Ссылка на скачку так же в конце гайда. =)
Выглядит это чудо вот так:
http://img232.img.bn/my.php?image=vegasox8.jpgВдаваться во все подробности Вегаса не буду, т.к. возможности его практически не ограничены, к тому же существует масса материала на эту тему, найти которую не составляет особых проблем, начать можно с нажатия F1. ;)
Из ключевых моментов хочу выделить следующее:
Параметры проекта должны соответствовать исходникам из фрапса, тоесть если мы писали видео в фрапсе в разрешении 1024*768 и с фрейм рейтом 25, то окно свойств в Вегасе (File > Properties) должно выглядеть следующим образом:
http://img69.img.bn/my.php?image=propsnk9.jpgОбязательно ставим Pixel aspect ratio на 1.00 (Square), и прогрессивное сканирование в Field order.
После склеивания фрагментов, добавления музыки и т.п. жмем File > Render As. Рендерим (сохраняем проект состоящий из множества видео/аудио дорожек в единый avi файл) в несжатом формате, то бишь в графе Template выбираем Default Template (uncompressed).
http://img71.img.bn/my.php?image=renderij9.jpgПолучаем готовый, но не сжатый мувик огромных размеров, просмотреть его врядли получится из-за слишком большого потока данных. Теперь его нужно сжать в более приличные размеры. =)
3) Сжатие.
Сжимать видео будем кодеком x264 при помощи VirtualDub.
Качаем VirtualDub отсюда -
http://www.virtualdub.org/ Здесь находится интересующий нас энкодер x264: K-Lite Codec Pack FULL -
http://www.free-codecs.com/K_Lite_Co...k_download.htmПосле установки кодек пака запускаем виртуал даб (установки он не требует) и открываем наш несжатый мувик.
http://img452.img.bn/my.php?image=vdubka2.jpg Сжимать виртуал дабом мы будем не только видео, но и звук. Начнем именно с него.
По умолчанию выбран режим Direct stream copy, он попросту копирует звук из исходника в конечный файл, поскольку звук нам надо сжать выбираем Full processing mode.
http://img467.img.bn/my.php?image=vdub2kv2.jpgДалее в меню Audio > Compression выбираем Lame MP3 и желаемый битрейт.
http://img232.img.bn/my.php?image=audiobb9.jpgТеперь перейдем в меню Video > Compession для настройки видео кодека. Выбираем x264 - H264/AVC encoder.
http://img378.img.bn/my.php?image=codecok6.jpgЖмем на Configure, открывается окно настройки кодека. На скринах показывается версия core 64 revision 600 от 7 ноября 2006, другие версии могут немного отличаться.
http://img168.img.bn/my.php?image=x2641ap9.jpgЗдесь выбираем режим кодирования.
http://img165.img.bn/my.php?image=x26411at4.jpgСуществуют 2 режима кодирования - сингл пасс и мульти пасс.
Сингл пасс кодирует видео в один проход, с постоянным заданным битрейтом.
Мульти пасс производит кодирование в 2 (можно и больше) прохода, 1-й создает файл который несмотря на расширение .avi не является видео файлом, а файлом статистики содержащим информацию об оптимальном битрейте для каждого фрейма, 2-й проход уже непосредственно кодирует видео полагаясь на информацию собранную при 1-м проходе. В таком режиме кпд сжатия значительно выше чем при сжатии в 1 проход, т.к. битрейт распределяется более рационально, поднимая его на динамических сценах и опуская на статических (титры к примеру). Очень рекомендую кодировать в 2 прохода, как это делать опишу немного позже.
Выбор битрейта:
Поскольку битрейт, это поток данных в единицу времени, выбирать его стоит полагаясь на фрейм рейт и разрешение видео.
К примеру при 15фпс (фреймов в секунду) и битрейте 1000кбпс (кбит в секунду) мы получим 66.66кбит на каждый фрейм. Если в этих же условиях повысить фрейм рейт с 15 до 25, то получаемый битрейт на каждый фрейм снизится до 40кбит, соответственно снизится и общее качество картинки.
Таким же образом для более высокого разрешения, потребуется более высокий битрейт.
При 1024*768 больше 100кбит на каждый фрейм делать не стоит (1500кбпс при 15фпс, 2500 при 25 и т.д.), ибо получить отличное качество можно и при этих битрейтах, при этом не "раздувая" видео.
Rate Control
http://img122.img.bn/my.php?image=x2642kw4.jpgОпределим несколько типов используемых фреймов (кадров):
I-frame: ключевые фреймы (key frames), наименее сжатые фреймы.
P-frame: более сжатые фреймы, серия этих фреймов будет находиться между двумя ключевыми фреймами.
B-frame: наиболее сжатые фреймы, находятся между двумя P фреймами, в них содержится лишь отличие от 2-х близлежащих кадров.
Keyframe boost (%) - определяет на сколько выше будет качество ключевых фреймов (I Frame) относительно обычных P фреймов. Ставим на 40%, менять не стоит.
B-frames reduction (%) - процентное уменьшение битрейта на B фреймах относительно P фреймов, доступно только при использовании B фреймов. Чем меньше данное значение, тем меньше коэффициент сжатия B фреймов. По дефолту 30%, можно попробовать немного снизить.
Bitrate variability (%) - определяет насколько кодек может отклоняться от заданного битрейта в процентах. К примеру при 50% и заданном битрейте 1000, он будет вариироваться от 500 до 1500. По дефолту 60%, для сцен с высокой детализацией и динамикой можно повысить, или же понизить для статических.
Ограничения квантизации.
Min QP - минимальный квантизер (максимальное качество) для всего видео. При желании можно немного понизить для увеличения качества.
Max QP - максимальный квантизер (минимальное качество) для всего видео.
Max QP Step - максимальное изменение квантизера за шаг, чем выше значение, тем быстрее кодек сможет переходить от одного значения квантизера к другому.
Scene Cut Threshold - чувствительность определения перехода между сценами, более низкие значения приведут к тому, что менее существенные переходы между фреймами будут считаться сменой сцены и соответственно станут ключевым фреймом, а не обычным. Оставляем на 40.
Min IDR-frame interval - минимальный интервал между ключевыми фреймами. Ставим значение равное фрейм рейту видео.
Max IDR-frame interval - максимальный интервал между ключевыми фреймами. Ставим значение равное фрейм рейту видео умноженному на 10.
Таким образом ключевой фрейм будет ставиться не чаще чем раз в секунду и не реже чем раз в 10 секунд.
MBs & Frames
http://img78.img.bn/my.php?image=x2643zm9.jpgPartitions: Методы поиска, включаем все.
B-Frames:
Включение B фреймов не всегда ведет к улучшению качества, в некоторых случаях без их использования, результат будет лучше.
Max consecutive: определяет кол-во используемых B фреймов, максимальное значение - 15. При 0 B фреймы будут отключены.
Bias: приоритет использования B фреймов, чем выше значение, тем чаще кодек будет использовать B фреймы и наоборот.
Use as references: позволяет использовать серию B фреймов, в таком случае B фрейм содержит сравнительную информацию о соседних B фреймах, а не P фреймах. Это позволяет немного увеличить коэффициент сжатия. Использовать эту опцию стоит при Max consecutive 3+.
Bidirectional ME: позволяет B фреймам учитывать движение из близлежащих кадров. Немного улучшает качество, включать всегда.
Adaptive: дает кодеку возможность использовать меньше B фреймов чем указано в мax consecutive при надобности. Включаем.
Weighted biprediction: повышает эффективность использования B фреймов, тоже включаем.
Direct Mode: векторное предсказание движения. Temporal считается более эффективным методом. Можно поставить Auto.
More...
http://img67.img.bn/my.php?image=x2644lf1.jpgPartition decision: чем выше значение, тем медленнее кодирование и выше качество. Ставить 5, или выше.
Method: метод поиска движения, Hexagonal Search дает неплохой результат при сносном времени кодирования, для немного лучшего качества можно выбрать Uneven Multi-Hexagon. Exhaustive Search не рекомендуется из-за очень долгого времени кодирования, при очень небольшом улучшении общего качества.
Range: область поиска в пикселях, доступно для изменения в режимах Uneven Multi-Hexagon и Exhaustive Search, но менять не стоит, оставляем 16.
Max reference frames: максимальное число относительных кадров, более высокие значения приведут к замедлению кодирования и в большинстве случаев к повышению качества, рекомендуется использовать 1-5. Максимальное значение - 16.
DCT Decimate: позволяет исключать ненужную информацию из потока.
Trellis: аналогично предыдущей опции, как правило этот алгоритм будет немного эффективней и медленней. Лучше использовать DCT Decimate и Trellis по отдельности.
Mixed Refs: эта опция дает возможность более гибкого контроля над референс фреймами, использование рекомендуется.
Chroma ME: использование цветовой информации при предсказании движения, улучшает качество.
Fast P Skip: позволяет немного ускорить процесс кодирования при небольшой потере качества, лучше отключить.
Sample AR: пропорции видео, оставляем 1:1.
Threads: количество процессов выделяемых для кодирования, ставим в соответствии с кол-вом процессорных ядер. Hyper threading эквивалентен 2-м ядрам.
Interlacing: не трогаем.
Noise Reduction: тоже не трогаем.
CABAC: увеличивает качество, но при этом так же увеличивает нагрузку при декодировании (проигрывании) видео. Включаем.
Deblocking Filter: этот фильтр позволяет удалять артефакты и эффект заблокированности путем сглаживания картинки, его всегда стоит оставлять включенным, а ползунки ставить на 0. При высоком битрейте, оба ползунка можно поставить на -1 для более четкого изображения, или же на +1 при очень низком битрейте.
Если вам лень разбираться в настройках кодека, просто используйте настройки со скринов. ;)
Теперь, закончив настраивать кодек, я объясню как кодировать видео в 2 прохода.
В 1-й закладке выбираем Multipass - First Pass и жмем ОК.
Дальше идем в File > Save as AVI...
http://img412.img.bn/my.php?image=saveashs1.jpgВыбрав имя файла начнется 1-й проход кодирования.
http://img405.img.bn/my.php?image=encodingdb5.jpgПосле окончания 1-го прохода опять заходим в 1-ю закладку настроек кодека и выбираем Multipass - Nth Pass и жмем ОК. Далее опять сохраняем файл через File > Save as AVI... (под другим именем)
После окончания 2-го прохода мы получим 2 ранее сохраненных avi файла. 1-й: файл статистики и 2-й: само видео.
Полезные ссылки:
http://debug.arena.ru/ropic/basskid/Fraps_v2.8.2.rar - Фрапс 2.8.2
http://debug.arena.ru/ropic/basskid/SonyVegas7c.rar - Вегас 7
http://www.youtube.com/watch?v=M5-uXHPemwo - Видео туториал по вегасу, много полезной инфы (инглиш).
Вот и все, пожелания, комментарии и т.п. приветствуются.
Гайд составлен Basskid-ом