Кино будет! Кодируем видео своими руками

Кино будет! Кодируем видео своими руками

Практика — Кино будет! Кодируем видео своими руками
...полно «однокнопочных» программ, которые обещают нам без лишних заморочек закодировать кино в наилучшем виде. Проблем тут две: платность таких программ и отсутствие контроля за качеством конечной видеозаписи. Из хорошего и бесплатного вспоми
Игроманияhttps://www.igromania.ru/
Практика
Кино будет! Кодируем видео своими руками

Давайте представим себе такую гипотетическую ситуацию: есть CD-болванка или флэшка, и есть цифровая камера с отснятым материалом или любой видеофайл на жестком диске. Причем второе никак не желает влезать на первое. Что делать? Особенно остро этот вопрос встает, если о сжатии видео вы не знаете вообще ничего.

Вокруг полно «однокнопочных» программ, которые обещают нам без лишних заморочек закодировать кино в наилучшем виде. Проблем тут две: платность таких программ и отсутствие контроля за качеством конечной видеозаписи. Из хорошего и бесплатного вспоминается разве что Auto Gordian Knot (его мы выкладывали в прошлом номере).

Мы же пойдем другим путем: овладеем основами кодирования, узнаем, чем отличаются друг от друга основные кодеки, и в конце концов закодируем видео своими силами и только с помощью бесплатных программ.

Иксвидивикс

VirtualDub

Перво-наперво познакомимся с нашим основным инструментом: программой VirtualDub (лежит на нашем DVD вместе с русификатором). Она по праву считается самой лучшей бесплатной утилитой для редактирования видео. Но редактировать мы сегодня практически ничего не будем, а используем ее в качестве посредника между исходным видеофайлом и выбранным кодеком.

Налюбовавшись на невзрачный интерфейс и полазив по малопонятным менюшкам, отложим VirtualDub в сторонку и обратим наш взор на кодеки. Кодек (составное слово от кодер/декодер) — это, по сути, программа, умеющая сжимать (кодировать) и расшифровывать (декодировать) сжатые файлы.

Декодер FFDShow.

Основных кодеков три: DivX, XviD и x264. Строго говоря, x264 не является кодеком, так как умеет только сжимать видео. То есть x264 — кодер. Для расшифровки сжатого им видео понадобится сторонний декодер, например, FFDShow. Устанавливается эта штука, как обычная программа (когда потребуют выбрать поддерживаемые видеокодеки, не забудьте указать H.264), после чего любой медиапроигрыватель будет использовать его по умолчанию. Для удобства мы тоже будем называть x264 кодеком.

DivX

Чем же отличаются эти кодеки друг от друга? DivX славится тем, что практически не искажает цвета исходного видео при кодировании. Также DivX хорошо справляется со статичными сценами. Большой минус кодека — очень уж медленное кодирование.

XviD — проект с открытым исходным кодом. Раньше от него все воротили нос, потому что разрабатывался он разными людьми и разные версии кодека были несовместимы друг с другом. С выходом финальной (до этого были лишь беты) версии XviD эта кутерьма прекратилась, и теперь кодек соответствует всем необходимым стандартам. Основных же плюсов у него два: очень и очень приличная скорость работы и отличное (местами лучшее, чем у DivX; особенно это заметно на динамических сценах) качество изображения. Минус — иногда чуть искаженные цвета, но это не критично. Именно этот кодек мы будем осваивать, потому как он лучше всего подходит для домашнего кодирования видео (быстрый, качественный, совместимый со всеми декодерами). Но полученные знания можно с успехом применять при настройке любых кодеков, благо они очень похожи.

Наконец, x264 соответствует стандарту H.264 (предыдущие два — H.263). Объяснять, что это такое, мы сейчас не будем, важно только знать одну простую вещь: этот кодек дает просто сногсшибательное качество картинки, но и ресурсы кушает будь здоров. При одних и тех же значениях битрейта (о битрейте мы расскажем чуть позже) x264 на целую голову выше своих конкурентов. Поэтому его можно использовать и при кодирования видео с малым битрейтом для просмотра на портативных устройствах (при условии, что они поддерживают этот стандарт). Если же кино будет смотреться на компьютере, то использовать кодек нецелесообразно — разница между тем же XviD и x264 на высоких битрейтах не заметна.

x264

Практика

Рис. 1

Ладно, хватит языком молоть, пора переходить к делу. Запускайте VirtualDub и открывайте в нем нужный видеофайл. Если файла у вас нет (он на видеокамере), то предварительно видео нужно скопировать на жесткий диск. Выберите в меню «Файл» -> «Захватить AVI...» — появится окно захвата. Тут все элементарно: надо только выбрать устройство из списка и указать, куда сохранять кино. По окончании процесса получим файл огромного размера. С ним и будем работать.

Когда все сделаете, открывайте файл в VirtualDub. Первым делом надо узнать его основные параметры. Выберите «Файл» -> «Информация о файле». В появившемся окошке нас интересуют строки «Скорость передачи данных» для видео и звука (рис. 1).

Это и есть битрейт. Он показывает, какой объем информации используется для сжатия одной секунды видео или звука. Понятно, что чем он больше, тем выше будет качество. Но тут надо четко понимать: выставление больших значений битрейта, нежели у исходного файла, не даст ровным счетом ничего. Так что запомните или запишите цифры в этих полях — они нам пригодятся.

Теперь немного пошаманим с записью. Во-первых, если надо обрезать кино (например, если есть черные полосы сверху и снизу), делаем следующее: выбираем «Видео» -> «Фильтры», в появившемся окне нажимаем кнопку «Добавить» и выбираем из списка null transform (рис. 2). Далее давим на кнопку «Урезание» и, выставляя значения в обведенных полях (рис. 3), отсекаем лишнее.

Рис. 2

Рис. 3

Во-вторых, может понадобиться изменить размеры картинки (если не надо, смело пропускайте этот шаг). В том же окне добавления фильтров выбираем resize и выставляем нужное разрешение.

Теперь у нас почти все готово для кодирования. Осталось только решить, чем обрабатывать звук. В принципе, можно его вообще не трогать, если вас все устраивает, но можно и пережать (например, уменьшив битрейт для экономии места).

Для начала возьмите с нашего DVD архив с MP3-кодеком lame. Он считается лучшим выбором для кодирования звука в MP3, и мы склонны с этим согласиться. Чтобы VirtualDub видел кодек, его нужно установить. Распакуйте архив lame в удобный вам каталог и найдите файл LameACM.inf. Кликните на нем правой кнопкой мыши и выберите пункт «Установить» (рис. 4).

Рис. 4

Возвращаемся к VirtualDub. Сперва сделаем самое сложное — настроим видеокодек. Выбирайте «Видео» -> «Компрессия», а затем — кодек XviD. Нажимайте кнопку «Изменить» (рис. 5). Тем самым вы откроете окно настроек кодека.

Рис. 5

В самом первом поле (рис. 6) обязательно укажите профиль unrestricted и нажмите кнопку more рядом. Приведите тамошние настройки в соответствие с рисунком 7. Вдаваться в подробности не будем, потому как указанные настройки практически универсальны. Остальные две вкладки не трогаем.

Возвращайтесь к основным настройкам (рис. 6) и в самом низу, рядом с надписью Quality preset, выбирайте User defined и давите кнопку more. Первый блок опций здесь отражает дотошность кодека при кодировании. Чем выше значения, тем лучше будет качество. Не скупитесь и установите все так, как показано на рисунке 8. Это здорово уменьшит скорость обработки видео, но ведь кодировать мы будем один раз, а смотреть — много раз. Так что лучше разочек потерпеть, нежели потом плеваться от плохого качества картинки.

Тут же в нижнем блоке есть опция Maximum I-frame interval. Она отражает частоту, с которой кодек будет ставить в кино ключевые кадры. На картинке оно равно 100, что означает 1 ключевой кадр каждые 4 секунды (при частоте кадров равной 25). Зачем они нужны? За них «цепляется» кодек при сжатии, а также проигрыватель при перемотке. Но слишком часто ставить их нельзя, иначе ухудшится качество картинки. Значение 100 при 25 кадрах в секунду — самый лучший выбор.

Рис. 6

Рис. 7

Рис. 8

Все, с видео почти закончили. Возвращайтесь к главному окну настроек. Кодировать мы будем в два прохода (чем частенько брезгуют «однокнопочные» утилиты). В этом случае мы получим наилучшее качество. Во второй строке (рис. 6) выставляйте опцию Twopass 1 st pass (первый проход) и смело давите Ok.

Теперь надо настроить звук. Тут все гораздо проще. Если вы решили оставить аудиодорожку в покое, то сразу переходите к следующему абзацу. Остальные выбирают «Аудио», ставят галочку напротив строки «Режим полной обработки» и заходят в меню «Компрессия». Здесь все очень похоже на такое же меню при настройке видео: слева выбираем нужный кодек (в нашем случае — lame), справа — режим кодирования (битрейт, стерео или моно). Тут руководствуйтесь только своими предпочтениями. Нам кажется, что битрейта 128 Кбит/с и стереозвука хватит выше крыши (рис. 9). Не забывайте держать в голове параметры звука исходного файла: выставлять более высокий битрейт или делать из монозвучания стерео — не самая лучшая идея.

Рис. 9

Наконец-то со всеми настройками покончено. Выбирайте «Файл» -> «Запуск анализатора видео». Тем самым вы запустите первый проход кодирования. Хотя кодироваться на самом деле ничего не будет — во время первого прохода кодек как бы смотрит фильм, оценивает каждый кадр и решает, где кино можно сжать побольше, а где лучше не жадничать.

Когда первый проход завершится (это довольно длительный процесс, можно чай попить и в магазин сходить), открывайте основное окно настроек видеокодека (рис. 6) и во второй строке меняйте значение на Twopass 2nd pass. Станет активной третья строчка, где надо указать битрейт (слева на кнопке должно быть написано Target bitrate (kbps); если там что-то другое — кликайте по ней до появления нужной надписи).

Как узнать, какой битрейт ставить? Если ваша задача — запихнуть фильм на носитель с известным объемом, то тут вам поможет калькулятор. Справа от строки давите кнопку Calc — появится окно калькулятора. Там пропишите объем носителя, продолжительность фильма и параметры звука (битрейт). В строке Average bitrate ( kbps) получите нужное значение битрейта видео. Давите Оk — значение будет автоматически проставлено в нужную строчку настроек кодека. Лучше чуть-чуть его уменьшить (пунктов на 30), так как размер сжатого видео может немного варьироваться в любую сторону.

Рис. 10

Все, возвращайтесь в основное окно VirtualDub, выбирайте «Файл» -> «Сохранить как AVI...», указывайте место сохранения конечного файла и запускайте второй проход кодирования. На выходе получим фильм нужного размера и в хорошем качестве.

Добавим, что если вы не ограничены объемами болванок и флэшек, то битрейт лучше подбирать экспериментально. Для этого выберите два кусочка из фильма: динамический (погоня, резкие смены ракурса и т.п.) и статический (задушевные разговоры, панорамные виды). Отметьте их с помощью стрелочек (рис. 10: стрелка влево — начало кусочка, вправо — конец) и закодируйте их поочередно. Просмотрите получившееся в любимом проигрывателе, и если качество обоих кусочков и ожидаемый размер файла вас устраивают — смело кодируйте весь фильм.

Если качество плохое, есть четыре пути решения проблемы. Первое — увеличить битрейт (помните: не выше значений исходного видео), но не всегда это решение годится (ситуация с болванками и флэшками). Тогда самое логичное — уменьшить разрешение с помощью фильтра resize, оставив битрейт неизменным. Третье — уменьшить качество звука. И самая крайняя мера — уменьшить частоту кадров. Делать этого мы не рекомендуем, но если уж другого выхода нет, отправляйтесь по адресу «Видео» -> «Частота кадров...» и указывайте нужное значение. Но в любом случае не ставьте fps ниже 15.

* * *

Как видите, ручное (то есть без использования «однокнопочных» программ) кодирование видео — процесс не очень сложный. Это на словах все так мудрено звучит, но стоит однажды разобраться, и в дальнейшем все настройки будут подбираться минут за десять.

Все изложенное в статье — лишь базовые знания. В интернете есть целые сайты, посвященные исключительно кодированию видео. Там можно найти столько информации, что хватит на десять диссертаций и еще немного останется. Но, в принципе, нужна она только профессионалам. Для повседневных нужд вполне хватит того, что изложено здесь.

Комментарии
Загрузка комментариев