# Основы использования MEncoder

Полный список доступных опций MEncoder и примеры смотрите на странице руководства man. Ряд наглядных примеров и подробные руководства по использованию отдельных параметров кодирования, можно узнать прочтя советы по кодированию, которые мы собрали из отдельных нитей[threads] рассылки MPlayer-users. В архивах здесь и, особенно по поводу старых вещей, здесь найдется множество дискуссий, посвященных всех аспектам и проблемам кодирования при помощи MEncoder.

## Выбор кодеков и формата файлов

Аудио и видео кодеки для кодирования выбираются опциями `-oac` и `-ovc`, соответственно. Наберите для примера:

    mencoder -ovc help

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

Аудио кодеки:

Название кодека | Описание
--- | ---
mp3lame | Кодируйте в VBR, ABR или CBR MP3 с LAME
lavc | Используйте один из кодеков библиотеки libavcodec
faac | FAAC AAC аудио кодер
toolame | MPEG Audio Layer 2 кодер
twolame | MPEG Audio Layer 2 кодер, основанный на tooLAME
pcm | Несжатый PCM звук
copy | Не перекодировать, просто копировать сжатые кадры

Видео кодеки:

Название кодека | Описание
--- | ---
lavc | Используйте один из кодеков библиотеки libavcodec
xvid | Xvid, MPEG-4 Advanced Simple Profile (ASP) кодек
x264 | x264, MPEG-4 Advanced Video Coding (AVC), AKA[он же] H.264 кодек
nuv | nuppel видео, используемое некоторыми приложениями реального времени
raw | Несжатые видео кадры
copy | Не перекодировать, просто скопировать сжатые кадры
frameno | Использовался для 3-х проходного кодирования (не рекомендуется)

Формат выходных файлов выбирается опцией `-of`. Наберите:

    mencoder -of help

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

Форматы файлов:

Название формата | Описание
--- | ---
lavf | Один из форматов, поддерживаемых библиотекой libavformat
avi | 'Слоеное' Аудио-Видео
mpeg | MPEG-1 и MPEG-2 PS
rawvideo | сырой видео поток (без мультиплексирования - только видео поток)
rawaudio | сырой аудио поток (без мультиплексирования - только аудио поток)

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

форматы файлов библиотеки libavformat:

Если вы выбрали libavformat для мультиплексирования выходного файла (используя `-of lavf`), подходящий формат файла будет определен по расширению выходного файла. Вы можете заставить использовать конкретный формат опцией `format` библиотеки libavformat.

название формата libavformat | Описание
--- | ---
mpg | MPEG-1 и MPEG-2 PS
asf | Advanced Streaming Format
avi | 'Слоеное' Аудио-Видео
wav | Waveform Аудио
swf | Macromedia Flash
flv | Macromedia Flash видео
rm | RealMedia
au | SUN AU
nut | открытый формат NUT (экспериментальный и пока не полностью соответствующий спецификации)
mov | QuickTime
mp4 | MPEG-4 формат
dv | Sony Digital Видео формат
mkv | Открытый аудио/видео контейнер Matroska

Как видите, libavformat позволяет MEncoder мультиплексировать во множество форматов. К сожалению, поскольку MEncoder изначально не разрабатывался для поддержки форматов, отличных от AVI, вам следует относиться к результирующему файлу с определенной долей паранойи. Убедитесь, что в порядке Аудио/видео синхронизация, и файл воспроизводится не только в MPlayer.

Кодирование в формат Macromedia Flash

Создание видео Macromedia Flash, подходящего для воспроизведения в веб браузере плагином Macromedia Flash:

    mencoder input.avi -o output.flv -of lavf \
        -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \
        -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3

## Выбор входного файла или устройства

MEncoder может кодировать из файлов или непосредственно с DVD или VCD диска. Просто укажите имя файла в командной строке для кодирования из файла, или `dvd://`номер_ролика или `vcd://`номер_дорожки для кодирования DVD ролика или VCD дорожки. Если вы уже скопировали DVD на жесткий диск (може воспользоваться утилитой вроде dvdbackup, доступной на многих системах), и желаете кодировать из копии, вледует по-прежнему использовать `dvd://` синтаксис, вместе с `-dvd-device` с последующим путек к корню копии DVD. Опции `-dvd-device` и `-cdrom-device` также могут быть использованы для переопределения путей к файлам устройств для чтения прямо с диска, если значения по-умолчанию `/dev/dvd` и `/dev/cdrom` не подходят для вашей системы.

При кодировании с DVD, часто бывает желательно выбрать раздел или диапазон разделов для кодирования. для этой цели можно использовать опцию `-chapter`. Например, `-chapter` 1-4 будет кодировать только разделы DVD с 1-го по 4-й. Это особенно полезно при кодировании 1400Мб с целью уместить их на 2 CD, так как вы можете разбить фильм точно на границе раздела, вместо середины некоторой сцены.

Если у вас есть поддерживаемая карта TV захвата, вы также можете кодировать с TV входа. Используйте `tv://`номер_канала в качестве имени файла, и опцию `-tv` для настройки различный параметров захвата. DVB вход работает аналогично.

## Двухпроходное кодирование MPEG-4 ("DivX")

Название происходит из того факта, что кодирование файла производится дважды. Первое кодирование (дублирующий проход) создает несколько временных файлов (`*.log`) размером в несколько мегабайт, не удаляйте их пока (вы можете удалить AVI или вообще не создавать видеофайл, перенаправив его в `/dev/null`). На втором проходе, с использованием данных о битпотоке из временных файлов, формируется готовый выходной. Получившийся файл будет иметь намного лучшее качество картинки. Если слышите об этом в первый раз, обратитесь к руководствам, которые можно найти в интернет.

копирование звуковой дорожки

Кодирование (двухпроходное) второй дорожки DVD в MPEG-4 ("DivX") AVI с копированием звуковой дорожки.

    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
        -oac copy -o output.avi

кодирование звуковой дорожки

Кодирование (в два прохода) DVD в MPEG-4 ("DivX") AVI с кодированием звуковой дорожки в MP3. Будьте аккуратны, используя этот метод, так как в некоторых случаях это может привести к рассинхронизации аудио/видео.

    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
        -oac mp3lame -lameopts vbr=3 -o /dev/null
    mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
        -oac mp3lame -lameopts vbr=3 -o output.avi

## Кодирование в Sony PSP видео формат

MEncoder поддерживает кодирование в видео формат Sony PSP, но, в зависимости от ревизии программного обеспечения PSP, с различными ограничениями. Можете не беспокоиться, если не будете нарушать следующие ограничения:

- Битовый поток: не должен превышать 1500кбит/с, тем не менее, последние версии очень хорошо поддерживали любой битрейт, пока заголовок не требовал черезчур большого значения.

- Размеры: ширина и высота PSP видео должна быть кратна 16, а произведение ширина * высота не должно превышать 64000. В некоторых случаях возможно воспроизведение видео большего размера.

- Звук: частота дискретизации должна быть 24кГц для MPEG-4, и 48кГц для H.264.

Кодирование для PSP

    mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -oac lavc \
        -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac \
        -of lavf -lavfopts format=psp \
    input.video -o output.psp

Заметьте, что можно задать заголовок видео опцией `-info name=Заголовок_Фильма`.

## Кодирование в MPEG формат

MEncoder может создавать файлы формата MPEG (MPEG-PS). MPEG-1 или MPEG-2 обычно используют по причине кодирования в более ограниченные форматы, такие как SVCD, VCD или DVD. Особые требования для этих форматов описаны в руководстве по созданию VCD и DVD section.

Чтобы сменить формат выходного файла MEncoder, используйте опцию `-of mpeg`.

Пример:

    mencoder input.avi -of mpeg -ovc lavc -lavcopts
    vcodec=mpeg1video \
        -oac copy other_options -o output.mpg

Создается файл MPEG-1 пригодный для воспроизведения на системах с минимальной поддержкой мультимедиа, таких как только что установленные Windows:

    mencoder input.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \
        -o output.mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
        -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3

То же, но используя libavformat MPEG мультиплексор:

    mencoder input.avi -o VCD.mpg -ofps 25 -vf scale=352:288,harddup -of lavf \
        -lavfopts format=mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
        -lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0

Подсказка:

Если по каким-то причинам видео после второго прохода вас не устраивает, можно снова запустить кодирование с другими значениями битпотока, при условии, что вы сохранили статистику предыдущего прохода. Это возможно, потому что основная задача файла со статистикой - записывать сложность каждого кадра, которая жестко с битпотоком не связана. Следует иметь в виду, что, несмотря на это, лучшее качество получается если значения результирующего битпотока всех проходов не сильно отличаются.

## Масштабирование фильмов

Часто возникает потребность изменить размер изображения у фильма. Причин может быть много: уменьшение размера файла, пропускная способность сети, и т.д. Большинство производят масштабирование даже при конвертации DVD или SVCD в AVI. Если есть желание провести масштабирование, прочтите раздел Сохранение пропорций.

Процесс масштабирование осуществляется плагином `scale`: `-vf scale=ширина:высота`. Качество может быть установлено опцией `-sws`. Если не указано, MEncoder будет использовать 2: бикубическое.

Использование:

    mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \
        -vf scale=640:480 -o output.avi

## копирование потока

MEncoder может обрабатывать входные потоки двумя способами: кодировать или копировать их. Этот раздел о копировании.

- Видео поток (опция `-ovc copy`): можно делать классные вещи :) Вроде помещения (не преобразования!) FLI или VIVO или MPEG-1 видео в AVI файл! Конечно, проиграть такие файлы сможет только MPlayer :) И, возможно, никакого реальной пользы в этом нет. Реально: копирование видеопотока может быть полезно, если надо кодировать только аудио поток (например, несжатый PCM в MP3).

- Аудио поток (опция `-oac copy`): straightforward. Возможно взять внешний файл (MP3, WAV) и уплотнить[mux] его в выходной поток. Воспользуйтесь опцией `-audiofile имя_файла`, чтобы сделать это.

Использование `-oac copy` для копирования из одного формата в другой может потребовать указания `-fafmttag` для сохранения тэга аудио формата из оригинального файла. Например, если вы преобразовываете NSV файл со звуком AAC в формат AVI, аудио формат будет неверен и должен быть изменен. Чтобы получить список тэгов аудио формата проверьте `codecs.conf`.

Пример:

    mencoder input.nsv -oac copy -fafmttag 0x706D \
        -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o output.avi

## Кодирование из нескольких входных файлов изображений (JPEG, PNG, TGA, SGI)

MEncoder может создавать фильмы из одного или более JPEG, PNG, TGA или других файлов изображений. Простым копированием кадров он может создавать MJPEG (Motion JPEG), MPNG (Motion PNG) или MTGA (Motion TGA) файлы.

Разъяснение процесса:

1. MEncoder декодирует изображение(я) с помощью libjpeg (при декодировании PNG, он будет использовать libpng).

2. MEncoder затем скармливает декодированное изображение выбранному видео компрессору (DivX4, Xvid, FFmpeg msmpeg4, и .т.д).

примеры

The explanation of the `-mf` option is in the man page.

Создание файла MPEG-4 из всех JPEG файлов текущего каталога:

    mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
        -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi

Создание файла MPEG-4 из некоторых JPEG файлов текущего каталога:

    mencoder mf://frame001.jpg,frame002.jpg -mf w=800:h=600:fps=25:type=jpg \
        -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi

Создание файла MPEG-4 из явного списка JPEG файлов (list.txt в текущем каталоге содержит список файлов, используемых в качестве источника, по одному в строке):

    mencoder mf://@list.txt -mf w=800:h=600:fps=25:type=jpg \
        -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi

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

Создание файла Motion JPEG (MJPEG) из всех JPEG файлов текущего каталога:

    mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o output.avi

Создание несжатого файла из всех PNG файлов текущего каталога:

    mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.avi

Ширина должна быть целым числом, кратным 4, это ограничение формата RAW RGB AVI.

Создание файла Motion PNG (MPNG) из всех PNG файлов текущего каталога:

    mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o output.avi

Создание файла Motion TGA (MTGA) из всех TGA файлов текущего каталога:

    mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o output.avi

## Извлечение DVD субтитров в файл VOBsub

MEncoder способен извлекать субтитры из DVD в файлы формата VOBsub. Они состоят из пары файлов, оканчивающихся на `.idx` и `.sub` и обычно упакованы в один `.rar` архив. MPlayer может воспроизводить из при помощи опций `-vobsub` и `-vobsubid`.

Вы указываете базовое имя (т.е. без расширения `.idx` или `.sub`) выходных файлов с помощью `-vobsubout` и индекс этих субтитров в результирующем файле при помощи `-vobsuboutindex`.

Если источником является не DVD следует использовать `-ifo` для указания указания файла `.ifo`, необходимого для создания результирующего `.idx` файла.

Если источником является не DVD и у вас нет `.ifo` файла, используйте опцию `-vobsubid` для указания, какой ид языка следует записать в `.idx` файл.

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

копирование двух субтитров из DVD при выполнении двухпроходного кодирования

    rm subtitles.idx subtitles.sub
    mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
        -vobsubout subtitles -vobsuboutindex 0 -sid 2
    mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
        -vobsubout subtitles -vobsuboutindex 1 -sid 5

Копирование французских субтитров из MPEG файла

    rm subtitles.idx subtitles.sub
    mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 \
        -vobsuboutid fr -sid 1 -nosound -ovc copy

## Сохранение пропорций

DVD и SVCD (т.е. MPEG-1/2) файлы содержат информацию о пропорции, которая описывает как проигрыватель должен масштабировать видео поток, чтобы люди не становились яйцеголовыми. (напр.: 480x480 + 4:3 = 640x480). Хотя при кодировании в AVI (DivX) файлы вы избавлены от этой проблемы, т.к. заголовки AVI не содержат это значение. Масштабирование изображения отвратительно и расточительно, есть лучший путь!

There is

MPEG-4 имеет уникальную возможность: видео поток может хранить требуемые ему пропорции. Да, в точности как MPEG-1/2 (DVD, SVCD) и H.263 файлы. К сожалению, немного проигрывателей кроме MPlayer поддерживают этот MPEG-4 атрибут.

Эта возможность может использоваться только с libavcodec'овским mpeg4 кодеком. Имейте в виду: хотя MPlayer корректно воспроизведет файл, другие проигрыватели могут использовать неверные пропорции.

Вы серьезно должны обрезать черные полосы выше и ниже изображения. Смотрите страницу руководства man по использованию cropdetect и crop плагинов.

Использование:

    mencoder sample-svcd.mpg -vf crop=714:548:0:14 -oac copy -ovc lavc \
        -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -o output.avi