Чересстрочная развёртка и телесин

Почти все фильмы снимаются при 24 fps [кадр/сек]. Поскольку в NTSC используется 30000/1001 fps, нужно выполнить некоторую обработку для такого 24 fps видео, чтобы оно корректно воспроизводилось при кадровой частоте NTSC. Этот процесс называется 3:2 пулдаун, обычно называемый телесин (поскольку пулдаун часто применяется в процессе показа телевизионного фильма, англ. telecine); и в упрощенном описании это работает путём замедления фильма до 24000/1001 fps и повтора каждого четвёртого кадра.

Однако, никакой специальной обработки не выполняется для видео на PAL DVD, которое воспроизводится при 25 fps. (Технически PAL может быть подверженным телесину, называемому 2:2 пулдаун, но на практике это не применяется). 24 fps фильм просто проигрывается на 25 fps. В результате фильм воспроизводится слегка быстрее, но если Вы не пришелец, то, вероятно, не заметите разницы. У большинства PAL DVD аудио скорректировано по высоте звука так, что, воспроизводясь при 25 fps, оно звучит нормально, несмотря на то, что аудиодорожка (и, следовательно, весь фильм) проигрываются на 4% быстрее, чем NTSC DVD.

Поскольку видео на PAL DVD не переделывается, Вам не стоит беспокоится о частоте кадров. У источника 25 fps и у Вашего рипа будет 25 fps. Однако, если Вы делаете рип NTSC DVD фильма, Вам, быть может, придётся выполнить обратный телесин.

Для фильмов, снятых на 24 fps, видео на NTSC DVD идёт либо с телесином 30000/1001, либо с построчной развёрткой 24000/1001 fps и предназначается для телесина на лету с помощью DVD плеера. С другой стороны, TV сериалы идут обычно только с чересстрочной развёрткой, но без телесина. Это не строгое правило: есть сериалы с чересстрочной развёрткой (например, Баффи, Убийца Вампиров [Buffy the Vampire Slayer]), в то время как другие представляют собой смесь построчной и чересстрочной развёртки (такие как Ангел [Angel] или 24).

Настоятельно рекомендуется прочитать раздел о работе с телесином и чересстрочной развёрткой в NTSC DVD для изучения способов обработки в разных ситуациях.

Однако, если Вы преимущественно делаете рипы фильмов, Вы, скорее всего, имеете дело с 24 fps видео либо с построчной развёрткой, либо с подвергнутым телесину; в последнем случае Вы можете использовать pullup фильтр: -vf pullup,softskip.

Кодирование чересстрочного видео

Если Вы желаете кодировать фильм с чересстрочной развёрткой (NTSC или PAL видео), Вам нужно решить, будете ли Вы его преобразовывать в построчную развёртку или нет. Хотя такое преобразование (деинтерлейс) сделает Ваш фильм пригодным для дисплеев с построчной развёрткой, таких как компьютерные мониторы и проекторы, это будет иметь свою цену: частота полей уменьшится вдвое от 50 или 60000/1001 до 25 или 30000/1001 поля в секунду, и примерно половина информации в Вашем фильме будет потеряна в сценах со значительным движением.

Поэтому, если Вы кодируете для высококачественных архивных целей, не рекомендуется делать деинтерлейс. Вы всегда можете преобразовать развёртку фильма в процессе воспроизведения (при воспроизведении на устройствах с построчной развёрткой). Мощность современных компьютеров вынуждает плееры использовать фильтр деинтерлейса, что слегка ухудшает качество изображения. Но плееры будущего будут способны имитировать дисплей TV с чересстрочной развёрткой, выполняя деинтерлейс на полной частоте полей и интерполируя 50 или 60000/1001 кадров в секунду для чересстрочного видео.

С чересстрочным видео нужно работать особым образом:

  1. Высота усечения и смещение по оси y должны быть кратны 4.
  2. Любое вертикальное масштабирование должно выполняться в режиме чересстрочной развёртки.
  3. Фильтры постобработки и удаления шума могут не работать как ожидается, только если Вы особо не позаботитесь об их применении к одному полю за раз, иначе они могут повредить видео при неверном использовании.

Учитывая вышесказанное, вот наш первый пример:

mencoder захват.avi -mc 0 -oac lavc -ovc lavc -lavcopts \

vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224

Обратите внимание на опции ilme и ildct.

Замечания об аудио/видео синхронизации

Алгоритмы аудио/видео (A/V) синхронизации MEncoder были разработаны с целью восстановления файлов с повреждённой синхронизацией. Однако, в ряде случаев они могут привести к ненужному пропуску или повторению кадров и, возможно, к лёгкой A/V рассинхронизации корректных входных данных (конечно, проблемы A/V синхронизации возникают только при обработке или копировании аудиотрека при кодировании видео, что настоятельно рекомендуется). Поэтому Вы можете переключиться на базовую A/V синхронизацию с помощью опции -mc 0 или разместить это в конфигурационном файле ~/.mplayer/mencoder, если Вы работаете только с хорошими источниками (DVD, TV-захват, высококачественные MPEG-4 рипы и т.п.), а не с повреждёнными файлами ASF/RM/MOV.

Если Вы хотите дополнительно защититься от странных пропусков и повторений кадров, Вы можете одновременно использовать опции -mc 0 и -noskip. Это предотвратит любую A/V коррекцию, и будет копировать кадры один в один, так что Вы не сможете это использовать, если будете применять какие-либо фильтры, которые непредсказуемо добавляют или отбрасывают кадры, либо если у Вашего входного файла переменный битопоток! Поэтому использование -noskip в общем случае не рекомендуется.

Сообщалось о том, что так называемое трёхпроходное аудиокодирование, поддерживаемое MEncoder, вызывало A/V рассинхронизацию. Это наверняка произойдёт при использовании совместно с некоторыми фильтрами, поэтому сейчас не рекомендуется использовать трёхпроходный аудио режим. Эта возможность оставлена только для совместимости и для опытных пользователей, понимающих когда это безопасно, а когда нет. Если Вы ранее никогда не слышали о трёхпроходном режиме, забудьте даже о том, что мы его упоминали!

Также были сообщения об A/V рассинхронизации при кодировании со стандартного ввода (stdin) с помощью MEncoder. Не делайте этого! Всегда взамен используйте файл или CD/DVD и т.п. устройство.

Выбор видеокодека

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

  • Эффективность сжатия: Достаточно очевидно, что большинство кодеков нового поколения разработаны для увеличения качества и степени сжатия. Поэтому, авторы данного руководства и многие другие люди полагают, что Вы не можете ошибиться [1], выбирая MPEG-4 AVC кодеки (например, x264) вместо таких MPEG-4 ASP кодеков, как libavcodec MPEG-4 или Xvid. (Опытные разработчики кодеков могут быть заинтересованы в ознакомлении с точкой зрения Михаэля Нидермайера (Michael Niedermayer) "почему MPEG4-ASP отстой".) Аналогично, Вы должны получить лучшее качество с MPEG-4 ASP, по сравнению с MPEG-2 кодеками.

Однако, новые кодеки, находящиеся в интенсивной разработке, могут страдать от ещё не замеченных ошибок, которые могут испортить кодирование. Просто это плата за использование передовых технологий.

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

  • Аппаратная совместимость: Обычно необходимо длительное время для включения поддержки последних видеокодеков в автономные видеоплееры. В итоге, большинство поддерживает только MPEG-1 (наподобие VCD, XVCD и KVCD), MPEG-2 (например, DVD, SVCD и KVCD) и MPEG-4 ASP (например, DivX, libavcodec LMP4 и Xvid) (Осторожно: обычно поддерживаются не все возможности MPEG-4 ASP). Пожалуйста, обратитесь к технической спецификации Вашего плеера (если она доступна) или к гугл (google) для детальной информации.
  • Лучшее соотношение качества и времени кодирования: Кодеки, уже использующиеся определённое время (например, libavcodec MPEG-4 и Xvid) обычно сильно оптимизированы всевозможными остроумными алгоритмами и ассемблерным SIMD кодом. Поэтому они обладают тенденцией достижения лучшего соотношения качества к времени кодирования. Однако, у них могут быть некоторые очень продвинутые опции, которые, будучи включенными, сделают кодирование очень медленным ради несущественного выигрыша.

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

Вы так же можете рассмотреть вариант использования многопоточного кодека, хотя это полезно только для пользователей машин с несколькими процессорами. libavcodec MPEG-4 позволяет это, но выигрыш в скорости ограничен и есть небольшой отрицательный эффект для качества картинки. Многопоточное кодирование Xvid, включаемое опцией threads, может использоваться для ускорения кодирования (на примерно 40-60% в типичных случаях) с небольшим ухудшением картинки или вообще без него. x264 также позволяет многопоточное кодирование, что обычно ускоряет процесс на 94% для каждого CPU ядра с уменьшением PSNR от 0.005 дБ до 0.01 дБ при типичных настройках.

  • Личные предпочтения: Здесь всё становится почти неразумным: из-за тех же причин, по которым одни придерживаются DivX 3 в течении лет, в то время как новые кодеки уже творят чудеса, другие люди предпочитают Xvid или libavcodec MPEG-4 использованию x264.

Вам нужно принимать решение самостоятельно; не слушайте советов людей, признающих только один кодек. Сделайте несколько образцов клипов из искомых источников и сравните разные опции кодирования и кодеки, с целью выбора того, что Вам наиболее подходит. Лучший кодек — это тот, которым Вы сами овладели, и который выглядит лучше всего для Ваших глаз на Вашем дисплее [2]!

Пожалуйста, обратитесь к разделу выбор кодеков и форматов контейнера для получения списка поддерживаемых кодеков.

Аудио

Аудио — это гораздо более простая проблема: если Вы беспокоитесь о качестве, просто оставьте всё как есть. Даже потоки AC-3 5.1 не более чем 448 Кбит/с и они стоят каждого бита. Вы можете соблазниться перекодированием аудио в высококачественный Vorbis (он же ogg формат), но лишь то, что у Вас сегодня нет A/V приёмника для пропускания AC-3, не означает, что у Вас не будет его завтра. Для жизнеспособности Ваших DVD рипов в будущем, сохраняйте поток AC-3. Вы можете сохранить поток AC-3, копируя его непосредственно в видеопоток в процессе кодирования. Вы также можете извлечь AC-3 поток с целью мультиплексирования его в контейнеры наподобие NUT или Matroska (Матрёшка).

mplayer файл_источника.vob -aid 129 -dumpaudio -dumpfile звук.ac3

сохранит в файл звук.ac3 аудиодорожку с номером 129 из файла файл_источника.vob (Обратите внимание:DVD VOB файлы обычно используют нумерацию аудио, отличную от стандартной, что означает, что аудиодорожка VOB 129 — это вторая аудиодорожка файла).

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

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

Вам необходимо обработать звук с помощью MEncoder. Например, Вы можете копировать исходную звуковую дорожку в процессе кодирования с помощью -oac copy или преобразовать её в "лёгкий" 4 кГц моно WAV PCM с помощью -oac pcm -channels 1 -srate 4000. Иначе, в ряде случаев, будет создаваться видео файл, рассинхронизированный с аудио. Такие случаи происходят, когда число кадров видео исходного файла не совпадает с полной длиной кадров аудио, или когда были разрывы/сшивания потока, где появились пропущенные или излишние аудиокадры. Правильным решением подобных проблем является вставка тишины или усечение аудио в таких точках. Однако, MPlayer не может это сделать и если Вы демультиплексируете AC-3 аудио и кодируете его отдельным приложением (или создаёте дамп в PCM с помощью MPlayer), сшивания останутся нескорректированными и единственный испособ их исправить — пропускать/дублировать видеокадры в местах сшивки. Пока MEncoder видит аудио при кодировании видео, он может выполнять этот пропуск/дублирование (что обычно не вызывыет проблем, т.к. происходит при полностью чёрных кадрах или при смене сцен), но если MEncoder не доступно аудио, он просто будет обрабатывать все кадры "как есть" и они не будут совпадать с окончательным аудиопотоком, когда Вы, например, объедините аудио и видео дорожки в Matroska файл.

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

mplayer исходный_файл.vob -ao pcm:file= звук.wav

-vc dummy -aid 1 -vo null

сохранит вторую аудиодорожку из файла исходный_файл.vob в файл звук.wav. Возможно, Вы захотите нормализовать звук перед кодированием, поскольку аудиодорожки DVD обычно записываются с маленькой громкостью. Вы можете использовать, например, утилиту normalize, доступную в большинстве дистрибутивов. Если Вы пользуетесь Window$, утилита BeSweet делает то же самое. Вы можете сжать в Vorbis или MP3. Например:

oggenc -q1 звук.wav

кодирует звук.wav с качеством 1, что примерно эквивалентно 80 Кб/с и является минимальным качеством, при котором Вам нужно кодировать, если Вы заботитесь о качестве. Пожалуйста, обратите внимание, что MEncoder на данный момент не поддерживает мультиплексирование аудиопотоков Vorbis в выходной файл, поскольку он поддерживает только AVI и MPEG контейнеры для выходных файлов, использование каждого из которых может привести к проблемам A/V синхронизации с некоторыми плеерами, в случае когда AVI файл содержит VBR аудиопотоки наподобие Vorbis. Не беспокойтесь, в данном документе будет рассказано как Вы можете это сделать с помощью сторонних программ.

Мультиплексирование

Теперь, после того как Вы кодировали видео, скорее всего, Вы захотите мультиплексировать его с одним или несколькими аудиопотоками в такие видео контейнеры как AVI, MPEG, Matroska или NUT. На данный момент встроенная поддержка вывода аудио и видео в MEncoder есть только для форматов контейнеров MPEG и AVI. Например:

mencoder -oac copy -ovc copy -o выходной_фильм.avi \

-audiofile исходный_звук.mp2исходное_видео.avi

Это объединит видеофайл исходное_видео.avi и аудиофайл исходный_звук.mp2 в AVI файл выходной_фильм.avi. Эта команда работает с MPEG-1 слой I, II и III (более известный как MP3) аудио, WAV, а также с некоторыми иными форматами аудио.

MEncoder обладает экспериментальной поддержкой libavformat — библиотеки из проекта FFmpeg, поддерживающей мультиплексирование и демультиплексирование множества контейнеров. Например:

mencoder -oac copy -ovc copy -o выходной_фильм.asf \

-audiofile исходный_звук.mp2исходное_видео.avi \

-of lavf -lavfopts format=asf

Это сделает то же самое, что и предыдущий пример, но выходным контейнером будет ASF. Пожалуйста, обратите внимание, что эта поддержка весьма экспериментальна (но становится лучше c каждым днём), и будет работать только в случае компиляции MPlayer с включенной поддержкой libavformat (что означает, что в большинстве случаев бинарная версия из пакетов не будет работать).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: