Содержание
Описание
MEncoder - это кросплатформенный инструменты для кодирования видео.
Данная статья предназначена не для полного описания всех его возможностей, а только самых распространенных и часто используемых. Естественно что большинство графических кодировщиков могут делать тоже что и mencoder, но он дает преимущество при пакетном кодировании, или кодировании на серверах.
Установка
Достаточно найти mencoder
в Центре Приложений Ubuntu, или в Sinaptic, и установить. Можно и через консоль:
sudo apt-get install mencoder
Сборка из исходников
#Устанавливаем все зависимости sudo apt-get build-dep mencoder #Устанавливаем svn, для получения последней версии исходников sudo apt-get install svn #Качаем исходники svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mencoder #Переходим в папку с исходниками cd mencoder #Конфигурируем ./configure --disable-mplayer --prefix=/usr #Собираем make #Устанавливаем sudo make install
Основные ключи
Ключ | Описание |
---|---|
-ovc help | Список всех доступных видео кодеков |
-oac help | Список всех доступных аудио кодеков |
-vf help | Список всех доступных аудио/видео фильтров |
-of help | Список всех доступных выходных форматов |
-ss <sec> | Начальное время кодирования |
-endpos <sec> | Конечное время кодирования |
-mc <sec> | Максимальная величина корректировки A-V синхронизации на один кадр |
-noskip | Запрет на пропускание кадров. Помогает при рассинхроне |
-novideo | Отключение видео |
-nosound | Отключение звука |
-nosub | Отключение субтитров |
-ovc copy | Копирование видео (сохранение без изменений) |
-oac copy | Копирование звука (сохранение без изменений) |
-ofps <fps> | Количество кадров в секунду |
-aid <ID> | Порядковый номер кодируемой аудиодорожки (по умолчанию 0) |
-alang <language> | Язык кодируемой аудиодорожки (две буквы для DVD и три для MKV) |
-sid <ID> | Порядковый номер субтитров |
-slang <language> | Язык субтитров |
-subcp <encoding> | Кодировка субтитров |
Примеры
- Кодировать 60 секунд начиная с 100-й секунды:
-ss 100 -endpos 60
- Помогает при рассинхроне:
-noskip -mc 0
- Выбираем кодировку субтитров:
-subcp cp1251
Полезные фильтры
Фильтр | Описание |
---|---|
-vf <filter>=help | Получаем справку по фильтру (если она есть) |
crop=w:h:x:y | Обрезает изображение до указанного размера, отбрасывая остальное. Начальная позиция обрезаемого изображения, по умолчанию, в центре |
scale=w:h | Масштабируем изображение |
dsize=w:h | Задаем размер/пропорции отображаемого видео (не путать с размером кадра). Фильтр сам по себе ничего не делает, он всего лишь указывает как масштабировать дальше |
rotate=0 | Поворот на 90 градусов по часовой стрелке и отражение (по умолчанию) |
rotate=1 | Поворот на 90 градусов по часовой стрелке |
rotate=2 | Поворот на 90 градусов против часовой стрелки |
rotate=3 | Поворот на 90 градусов против часовой стрелки и отражение |
flip | Зеркально отражаем изображение по вертикали |
mirror | Зеркально отражаем изображение по горизонтали |
harddup | Дублирующиеся кадры будут принудительно кодироваться на выходе. Необходим, если вы после кодирования планируете редактировать видеофайл. Следует размещать в самом конце списка фильтров |
Примеры
* фильтры разделяются запятой
- Масштабировать видео до 640pix по ширине:
-vf dsize=640:-2,scale=640:-2
- Обрезать видео, c шириной 720 и высотой 400:
-vf crop=720:400:0:0
x264 (-x264encopts)
Двухпроходное кодирование:
#первый проход mencoder "your_movie" -ovc x264 -x264encopts pass=1:turbo:qp=22:threads=0:bframes=3 -nosound -o /dev/null
#второй проход mencoder "your_movie" -ovc x264 -x264encopts pass=2:qp=22:subq=7:8x8dct:trellis=2:threads=0:frameref=3:bframes=3:weightb -oac lavc -lavcopts acodec=aac:abitrate=384 -o "movie_out.avi"
* значение bframes должно совпадать для обоих проходов.
Кодирование в один проход:
mencoder "your_movie" -ovc x264 -x264encopts crf=22:subq=7:8x8dct:trellis=2:threads=0:frameref=3:bframes=3:weightb -oac lavc -lavcopts acodec=aac:abitrate=384 -o "movie_out.avi"
*предпочтительнее в большинстве случаев.
Разбор опций
- Устанавливаем средний битрейт. Чем выше - тем лучше качество (понятное дело что не выше исходного ); чем ниже - тем хуже. Нужно выбирать или битрейт, или квантователь.
bitrate=<value>
- Задаем качество макроблока, квантователь. По сути задаем качество выходного изображения. Где 0 - оригинал, а любое значение выше - ухудшение качества. Полезные значения в районе 20-40.
qp=<0-51>
- Задействует режим постоянного качества и выбирает его уровень. Эта опция позволяет каждому кадру использовать собственный QP, основанный на сложности кадра.
crf=<1-50>
* необходимо использовать: или bitrate, или qp, или crf.
- Номер прохода. В двухпроходном варианте 1-й проход собирает информацию о качестве видео; сильно нагружающие CPU опции можно убрать. -nosound -o /dev/null - игнорируем звук и выходной файл. Также применяют 3-х проходный вариант, но это в большинстве случаев бесполезно.
pass=<1-2>
- Ускорение первого прохода. Только при первом проходе, в двух и более проходном режиме!
turbo
- Этот параметр контролирует соотношение между качеством и скоростью вносимыми в процессе принятия решений об оценке движения. 1-5 - высокая скорость, худшее качество. 6-7 максимальное качество, долгое кодирование. Время кодирования с subq=7 может быть практически до 2-х раз дольше subq=1. Но при subq=1 ухудшение картинки очень заметно.
subq=<1-7>
- Разрешает умное использование преобразований 8×8 в I-кадре. Адаптивное 8×8 дискретное косинусное преобразование (DCT).
8x8dct
- Полезно для динамичного видео, для по большей части статичного видео - бесполезна. Падение в скорости кодирование до 15%.
partitions=all
- Улучшает затухания и градиенты цвета (небо и т.п.).
weightb
- Треллис квантование для повышения эффективности сжатия. Вариант «на макроблоках» (1) - хороший компромисс между падением скорости и повышением эффективности. Лучше всего «везде» (2), но при условии совместной работы с psy-trellis, иначе происходит незначительное замыливание мелких деталей. На всех решениях скорость падает очень сильно. При равном 0 - отключено. Для мультипликации, аниме, скринкастов лучше выключить.
trellis=<0-2>
- Устанавливает максимальное число параллельных B-фреймов. Большое значение может привести к значительному улучшению эффективности степени сжатия. B-фреймы хранят данные об изменениях относительно прошлого кадра и разницы с будущим. Рекомендуемое значение: 2-5. Для анимэ можно и 6-12.
bframes=<1-16>
- Чем больше референсных кадров, тем медленнее кодирование. При 5-ти и более референсных кадров качество повышается незначительно. Для аниме, скринкастов и прочего «статичного» видео можно и больше. 4 - максимальное для видео для 1080p, и 9 - максимальное для 720p (следуя спецификациям level 4.1, для поддержка бытовой техники).
frameref=<0-16>
- Порождает потоки для параллельного кодирования на нескольких CPU (по умолчанию: 1). Имеет незначительный негативный эффект на качество сжатия. 0 или auto говорит x264 определить количество имеющихся у Вас CPU и подобрать соответствующее количество потоков.
threads=<0-4>
- Метод оценки движения полного пикселя. Рекомендуется использовать umh.
me=<dia,hex,umh,esa>
- Определяет максимальное количество попыток (с измененными данными) нахождения оптимального варианта при поиске вектора движения макроблока. Чем больше, тем лучше качество.
me_range=<4-64>
- Отключение опции предварительной DCT трансформации сигнала непосредственно перед кодированием. Лучше не включать эту опцию при кодировании в режиме постоянного качества CRF, так как серьезно увеличивается размер файла при незначительном улучшении видео.
dct_decimate=<0,1>
- При кодировании изображение разбивается на блоки размерами 8х8 пикселей и каждый такой блок кодируется отдельно. При недостаточном битрейте, эти блоки становятся заметными. Включение данной опции поможет решить проблему. Рекомендуется использовать даже при высоких битрейтах (по умолчанию: 0,0).
deblock=<-6..6>,<-6..6>
* Опции включенные по умолчанию не описаны.
Xvid (-xvidencopts)
Примеры:
- Кодирование с указанием битрейта:
mencoder "your_movie" -ovc xvid -xvidencopts chroma_opt:vhq=2:bvhq=1:quant_type=mpeg:bitrate=2000 -oac mp3lame -lameopts cbr:br=192 -o "movie_out.avi"
- Кодирование с указанием квантователя:
mencoder "your_movie" -ovc xvid -xvidencopts chroma_opt:vhq=2:bvhq=1:quant_type=mpeg:fixed_quant=3 -oac mp3lame -lameopts cbr:br=192 -o "movie_out.avi"
* Двухпроходный Xvid все равно не даст тоже качество что у x264, так что для высококачественных рипов лучше выбрать именно x264.
Разбор опций
- Указываем проход в двухпроходном режиме.
pass=<1-2>
- Быстрый первый проход.
turbo
- Устанавливаем средний битрейт. Чем выше - тем лучше качество, чем ниже - тем хуже. Нужно выбирать или битрейт, или квантователь. Отрицательное значение соответствует размеру выходного файла в килобайтах.
bitrate=<value>
- Выбираем уровень квантования. Чем больше - тем ниже качество выходного видео.
fixed_quant=<1-31>
- Повышение качества, с понижением скорости кодирования. Алгоритм минимизирует эффект лестницы на границах цветов.
chroma_opt
- Устанавливаем используемый тип квантователя. При большем битрейте MPEG квантование сохранит больше деталей. Для низкого битрейта H.263 даст меньший блочный шум.
quant_type=<h263|mpeg>
- Эта опция влияет на алгоритм принятия решений о макроблоке, чем выше значение, тем точнее будут решения. Значения 3-4 сильно понижают скорость. Если качество не особо важно, то лучше выбрать значение 0.
vhq=<0-4>
- Тоже что и vhq, только для В-кадров. Имеет незначительное влияние на скорость и слегка улучшает качество.
bvhq=<0-1>
- Задаем количество потоков, для выполнения оценки движения (по умолчанию: 0). Максимальное количество потоков, которые можно использовать, равно высоте изображения, деленной на 16.
threads=<0-n>
MP3 (-lameopts)
Пример:
mencoder "your_movie" -ovc copy -oac mp3lame -lameopts cbr:br=192 -o "movie_out.avi"
Разбор опций
- Переменный битрейт.
abr
- Постоянный битрейт.
cbr
- Задаем битрейт(kbit/s).
br=<32-320>
lavc (-lavcopts)
Расширение возможностей mencoder за счет использования libavcodec кодеков. Основные преимущества: сохранение не только в avi, но также и в mkv, mp4; больший набор кодеков, по сравнению с оригинальным набором mencoder'а. Полный перечень.
Пример:
mencoder "your_movie.avi" -ovc lavc -oac lavc -lavcopts vcodec=msmpeg4v2:vbitrate=2000:acodec=aac:abitrate=256 -o "movie_out.avi"
- Аудио кодек.
acodec=<value>
- Кодек видео.
vcodec=<value>
- Количество потоков декодирования.
threads=<1-8>
- Битрейт аудио.
abitrate=<value>
- Битрейт видео.
vbitrate=<value>
- Номер прохода.
vpass=<1-3>
- Ускорение первого прохода.
turbo
- Квантование поиском по решетке. Найдет оптимальное кодирование для каждого блока 8×8.
trell
- Допускает 4 вектора движения на макроблок (немного лучшее качество).
v4mv
- Алгоритм принятия решения о макроблоке (режим высокого качества). Указывает кодировать каждый макроблок всеми режимами и выбирать лучший. Это работает медленно, но дает лучшее качество и меньший файл.
mbd=<0-2>
- Соотношение между качеством и скоростью вносимыми в процессе принятия решений об оценке движения.
subq=<1-8>
- Количество рефреймов.
refs=<1-8>
* lavc плохо документирован, по этому его не желательно использовать. Его преимущества только в сохранение аудио в acc и ac3, работе с контейнерами mkv и mp4.
Шаблоны
- Проиндексировать видео. Помогает, если в видео не работает перемотка:
mencoder "your_movie.avi" -forceidx -oac copy -ovc copy -o "movie_out.avi"
- Сохранение в mkv:
mencoder "your_movie.avi" -ovc copy -oac copy -of lavf -lavfopts format=mkv -o "movie_out.mkv"
- Извлечение первой(нулевой) аудио дорожки(прежде нужно узнать формат аудио):
mplayer -aid 0 -dumpaudio 'your_video' -dumpfile out.mp3
- Извлечение видео дорожки(прежде нужно узнать формат видео потока):
mplayer -dumpvideo 'your_video' -dumpfile out.h264