Как кодировать каждую категорию

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

10.2.3.1. Построчная развертка

Видео с построчной разверткой не требует специальной обработки для кодирования. Единственный нужный Вам для уверенности параметр — это -ofps 24000/1001. В противном случае MEncoder будет пытаться кодировать с 30000/1001 кадрами в секунду и создаст дублирующиеся кадры.

 

mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001

 

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

10.2.3.2. Телесин

Телесин может быть обращён для получения оригинального 24000/1001 содержимого при помощи процесса, называемого обратный телесин. MPlayer содержит несколько фильтров для выполнения этого; лучший из них, pullup описан в разделe смешанные построчная развертка и телесин.

10.2.3.3. Чересстрочная развертка

На практике в большинстве случаев невозможно получить полностью построчное видео из чересстрочного содержимого. Единственный способ сделать это без потери половины вертикального разрешения - это удвоить частоту кадров и попытаться "угадать", что должно составить соответствующие линии каждого поля (этот способ имеет недостатки, смотрите метод 3).

  1. Кодируйте видео в чересстрочной форме. Обычно это наносит вред способности кодировщика хорошо сжимать, но libavcodec имеет два параметра специально для чуть лучшего сохранения чересстрочного видео: ildct и ilme. К тому же, настоятельно рекомендуется использовать mbd=2, потому что при этом макроблоки в местах без движения будут кодированы как нечересстрочные. Имейте в виду, что -ofps здесь НЕ нужна.

    mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2

     

  2. Используйте фильтр деинтерлейсинга перед кодированием. Существует несколько таких фильтров на выбор, каждый имеет свои преимущества и недостатки. Обратитесь к mplayer -pphelp и mplayer -vf help для определения доступных (grep по "deint"), прочтите Сравнение фильтров деинтерлейсинга Майкла Нидермайера (Michael Niedermayer), и поищите в списках рассылки MPlayer  , чтобы найти множество обсуждений различных фильтров. И опять, частота кадров не меняется, поэтому никаких -ofps. к тому же деинтерлейсинг следует производить после обрезания и до масштабирования.

    mencoder dvd://1 -oac copy -vf yadif -ovc lavc

     

  3. К сожалению, эта опция сбоит с MEncoder; она должна хорошо работать с MEncoder G2, но его пока нет. Вы можете столкнуться с крахами. Как бы то ни было, назначение опции -vf tfields — создать полный кадр из каждого поля, что делает частоту кадров равной 60000/1001. Преимущество этого подхода в том, что никакие данные не теряются; однако, т.к. каждый кадр получается только из одного поля, недостающие строки должны как-то интерполироваться. Не существует очень хороших методов генерации недостающих данных, поэтому результат будет выглядеть несколько похожим на применение некоторых фильтров деинтерлейсинга. Генерация недостающих строк также создает другие проблемы, просто потому что количество данных удваивается. Таким образом, для сохранения качества требуются более высокие значения битпотока, и больше ресурсов процессора используется как для кодирования, так и для декодирования. tfields имеет несколько различных опций, определяющих способ создания недостающих строк каждого кадра. Если выбрали этот способ, обратитесь к руководству и выберите ту опцию, которая лучше подходит для Вашего материала. Имейте в виду, что при использовании tfields Вы должны указать как -fps, так и -ofps, установив им значение, равное удвоенной частоте исходного материала.

    mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \
    -fps 60000/1001 -ofps 60000/1001

     

  4. Если планируете сильно уменьшать размер изображения, можно извлекать и декодировать только одно поле из двух. Конечно, Вы потеряете половину вертикального разрешения, но если планируется уменьшать размер как минимум вдвое, потеря будет не сильно заметна. В результате получится построчной развёртки файл с 30000/1001 кадрами в секунду. Процедура следующая: -vf field, затем обрезание и масштабирование соответствующим образом. Помните, что потребуется скорректировать масштабирование для компенсации уменьшенного вдвое вертикального разрешения.

    mencoder dvd://1 -oac copy -vf field=0 -ovc lavc

     

10.2.3.4. Смешанные построчная развертка и телесин

Для преобразования видео со смешанными построчной разверткой и телесином в полностью построчное необходимо к подверженным телесину частям применить обратный телесин. Есть три описанных ниже способа добиться этого. Заметьте, что следует всегда применять обратный телесин до какого-либо масштабирования; за исключением случая, когда Вы точно знаете, что делаете, выполняйте обратный телесин также до обрезания . -ofps 24000/1001 здесь необходима, поскольку видео на выходе будет с 24000/1001 кадрами в секунду.

  • -vf pullup разработана для обратного телесина материала, телесину подверженного, оставляя построчные данные как есть. Для правильной работы после pullup должен следовать фильтр softskip, иначе произойдет крах MEncoder. pullup является, однако, самым чистым и точным методом, доступным для кодирования и телесина, и "смешанного построчного с телесином".

    mencoder dvd://1 -oac copy -vf pullup,softskip \
    -ovc lavc -ofps 24000/1001

     

  • -vf filmdint похожа на -vf pullup: оба фильтра пытаются сопоставить пару полей для формирования полного кадра. Однако filmdint будет производить деинтерлейсинг одиночных полей, которым не может найти пару, в то время как pullup попросту их отбросит. Вдобавок фильтры имеют различные алгоритмы анализа, и filmdint имеет тенденцию к более частому нахождению соответствий. Какой фильтр будет лучше работать зависит от исходного видео и личного вкуса; не бойтесь экспериментировать с тонкой настройкой опций фильтров, если у Вас возникли проблемы с любым из них (подробности смотрите на странице руководства man). Для большинства качественного исходного видео, однако, оба фильтра работают достаточно хорошо, так что начинать работать можно с любым из них.

    mencoder dvd://1 -oac copy -vf filmdint -ovc lavc -ofps 24000/1001

     

  • Более старый метод заключается не в применении обратного телесина к телесиненным частям, а, наоборот, в телесине не подверженных телесину частей и последующем применении обратного телесина ко всему видео. Звучит запутанно? softpulldown — это фильтр, проходящий по видео и делающий телесиненным весь файл. Если следом за softpulldown указать либо detc, либо ivtc, финальный результат будет полностью построчным. -ofps 24000/1001 необходима.

    mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001

     

10.2.3.5. Смешанные построчная и чересстрочная развертки

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

  • Рассматривайте видео как построчное. Чересстрочные части будут выглядеть чересстрочными, и потребуется удаление некоторых из чересстрочных полей, что даст в результате некоторое скачкообразное дрожание. Вы можете использовать фильтр постобработки, если хотите, но это может несколько ухудшить построчные части.

    Эта опция определенно не должна использоваться, если Вы хотите со временем отображать видео на чересстрочном устройстве (с помощью TV карты, например). Если у Вас есть чересстрочные кадры в видео с 24000/1001 кадрами в секунду, к ним, как и к прогрессивным, будет применен телесин. Половина их чересстрочных "кадров" будут отображаться с длительностью трех полей (3/(60000/1001) секунд), давая в результате неприятно выглядящий эффект "прыжка назад во времени". Даже если Вы пробуете это, Вы должны использовать фильтр деинтерлейсинга, такой как lb или l5.

    Для отображения на построчном дисплее это тоже может быть плохой идеей. Будут отбрасываться пары последовательных чересстрочных полей, приводя к разрывам, которые могут быть заметнее, чем при использовании второго метода, отображающего некоторые построчные кадры дважды. Чересстрочное видео с 30000/1001 кадрами в секунду уже несколько прерывисто, потому что в реальности оно должно отображаться с 60000/1001 полями в секунду, так что дублирующиеся кадры не так сильно выделяются.

    Так или иначе, лучше всего проанализировать Ваше содержимое и как Вы его собираетесь показывать. Если видео на 90% построчное и Вы никогда не будете показывать его на TV, Вам следует отдать предпочтение построчному варианту. Если оно только наполовину построчное, Вы, возможно, захотите кодировать его, как если бы оно было чересстрочным.

  • Считайте его чересстрочным. Некоторые кадры построчной части потребуют дублирования, что даст в результате некоторое скачкообразное дрожание. И снова, фильтры деинтерлейсинга могут несколько ухудшить построчные части.