Linux и кодирование видео. Mencoder и кодеки. Установка и использование.

Что такое MEncoder

MEncoder — свободный кодировщик видео. Поддерживает большинство существующих аудиовидеокодеков и контейнеров. Является частью проекта MPlayer. К нему есть удобный GUI kmenc15

Установка

К сожалению, из за проблем с лицензиями, на данный момент не входит в официальный дистрибутив Debian. Для его установки приходится использовать дополнительные репозитарии, подключить которые можно прописав в /etc/apt/sources.list строчку

deb http://www.debian-multimedia.org etch main

А потом стандартно $apt-get install mencoder

Тут правда есть некоторые детали 1)

Перекодирование видео с наложением своего аудиотрека

Для этого используются тледующие параметры командной строки

  • -V - болтливый режим;
  • -alang - выбор языка
  • -oac - выбор кодека для звуковой дорожки
  • -audiofile - выбор аудиофайла для имплантации в видео
  • -ovc - fixme
  • -lavcopts - опции видеопотока
  • -vf - fixme
  • -o - определяем выходной файл.

Итак, для того, чтобы получить видеофайл 1.mpg, наложить на него звук из аудиофайла 1.wav и закодировать в mpeg4 с битрэйтом 2048 и разрешением 1024×768 и сохранить в 2.avi нужно набрать:

$mencoder -V -alang ru -oac lavc -audiofile 1.wav -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048:v4mv:mbd=2:trell -noskip -mc 0 -vf scale=1024:768 -o 2.avi 1.mpg

Сборка видео из набора кадров в графических файлах

В Каталоге, где собраны кадры-файлы запускаем следующую команду(последовательность кадров совпадает с по)

mencoder "mf://*.jpg" -vf scale=640:-11 -oac copy -ovc lavc -lavcopts vcodec=msmpeg4:vbitrate=2000 -ffourcc MP43 -fps 24 -o "output.avi"
  • mf://*.jpg - указывается маска файлов-кадров
  • scale=640:-11 - указываются разрешение итогового видео (640-ширина, -11 сохранение пропорций)
  • fps количество кадров в секунду

Так же можно подключить звуковую дорожку с помощью параметра -audiofile

Объединение нескольких видеофайлов разного формата в один

Чисто практическая задача. Сегодня возникла. Есть множество коротких видео, снятых на камеру, на фотоаппарат, на мобильник. Все онилежат в /home/user/videos. Требуется объединить всё это в один видеофайл с заданным расширением.

$mencoder -V -alang ru -oac lavc -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048:v4mv:mbd=2:trell -vf scale=1024:768 -o 2.avi /home/users/videos/*

Есть и недостатки. Представляете как будет выглядеть видео, снятое на мобильник, и потом растянутое до 1024×768 :-)

Обрезка видеофайла(выделение фрагмента определённой длины, начиная с заданной позиции) в формате flv.

mencoder -V -alang ru -oac lavc -ovc lavc -lavcopts vcodec=flv:v4mv:mbd=2:trell -ss 5 -frames 2400 -o output_file.flv input_file.flv
  • -ss 5 - пропустить с начала 5 секунд
  • -frames 2400 - выделить фрагмент в 2400 кадров
  • vcodec=flv:v4mv:mbd=2:trell - указание кодека выходного файла(параметры устанавливаются по умолчанию как у входного)

Покадровая нарезка видео-файла.

mplayer input_file.wmv -vo jpeg:quality=95:outdir=frames
  • *input_file.wmv* обрабатываемый видео-файл *
  • -vo - выбор видео-драйвера
  • jpeg - выводить кадры в формате JPEG
  • quality=95 - качество JPEG - 95
  • outdir=frames - писать кадры в каталог /frames/

Извлечение определённой главы с DVD.

mencoder -dvd-device /dev/cdrw3 -V -alang ru -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=2048:v4mv:mbd=2:trell -o chapter40.avi dvd://1-1 -chapter 40-40

Обращаю внимание, что если не указать диапазон через тире, в chapter40.avi будут извлечены все главы, начиная с 40-й

Поворот, обрезка и масштабирование видео.

Дано:

Видеофайл, продолжительностью около 10 секунд, размером картинки 480×272

Требуется:

- Повернуть его по часовой стрелке на 90гр, получив картинку 272×480 - Обрезать сверху и снизу полоски по 272×139, чтобы получилась картинка 272×202 - Масштабировать до 640×480.

mencoder -vf rotate=1,crop=272:202:0:139,scale=640:480 -oac pcm -ovc lavc -lavcopts vcodec=msmpeg4:vbitrate=2000 -o output.avi IMG_0301.MOV
  • *-vf* - опция, показывающая, что далее будет список видеофильтров через запятую (применяются последовательно)
  • *rotate=1* - перевернуть на 90 гр. по часовой (доступны и другие углы, согласно man mplayer 0 - Поворот на 90 градусов по часовой стрелке и отражение, 1-Поворот на 90 градусов по часовой стрелке, 2 - Поворот на 90 градусов против часовой стрелки, 3- Поворот на 90 градусов против часовой стрелки и отражение)
  • *crop=272:202:0:139* - отображать из исходноговидео прямоугольник 272×202, начиная с точки (0,139)
  • *scale=640:480* - масштабировать до разрешения 640×480

Перекодирование в кодек XVID.

mencoder -V -alang ru -oac copy -ovc xvid -xvidencopts bitrate=2048 -o 104_klen.avi 004_klen.avi

Перекодирование файлов с одного "фотоаппарата".

mencoder -V -alang eng -oac pcm -lavcopts acodec=pcm_s8 -ovc lavc -lavcopts vcodec=flv:trell:vbitrate=1024 -vf scale=600:-11 -noskip -mc 0 -o 2012.02.12_volley_training_small_02.flv 2012.02.12_voley_training_02.mov

Ссылки по теме

1) только что etch зарелизился и стал stable, видимо для сквизи строчка будет немного другой
 
mencoder.txt · Последние изменения: 12:50 14.02.2012 root
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki