Обработка видео при помощи mencoder

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

Mencoder поддерживает множество типов файлов, вот некоторые из них: MPEG/VOB, AVI, ASF/WMA/WMV, RM, QT/MOV/MP4, Ogg/OGM, MKV, VIVO, FLI, FLV. Синтаксис команд довольно прост, несмотря на большое количество опций. Несмотря на свой “скромный” интерфейс, mencoder может делать с мультимедиа-файлами удивительные вещи.

Простая команда для конвертирования MPG-файла в AVI-формат:

mencoder file.mpg -o file.avi -ovc lavc -oac lavc

Опции -oac и -ovc указывает на желаемые аудио и видео кодеки. Вы можете посмотреть список доступных кодеков при помощи команды mencoder -ovc help и mencoder -oac help

Предположим, что вам нужен несжатый аудиопоток и вы решили испольщовать PCM. Вы можете указать желаемый формат аудио при помощи опции acodec:

mencoder file.mpg -o file.avi -ovc lavc -oac lavc -lavcopts acodec=pcm

Если вы используете mp3-сжатие, можно также указать битрейт:

mencoder file.mpg -o file.avi -ovc lavc -oac lavc -lavcopts acodec=libmp3lame:abitrate=128

Вы можете использовать lameopts, если в вашей системе установлен libmp3lame и вам хочется расширить список опций, доступных при кодировании аудио. Еще с помощь lameopts можно создавать файлы с переменным битрейтом:

mencoder file -o file.avi -ovc lavc -oac mp3lame -lameopts vbr=2:q=3

гду q - это любое число в диапазоне от 0 до 9
Также можно работать и с аудиодорожкой из видеофайлов:

mencoder file.mpg -o file.avi -ovc lavc -oac lavc -lavcopts acodec=libmp3lame:abitrate=128 vcodec=xvid

Если вы не хотите использовать видеокомпрессию, используйте vcodec=copy. С этой опцией видеопоток будет просто скопирован байт в байт из исходного файла.

Вы можете использовать DivX и xvid напрямую, без опции lavc:

mencoder -ovc xvid -oac mp3lame -o destination.avi source.avi

Для указания более подробных параметров вы можете использовать опции xvid

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=878 -o destination.avi source.avi

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

Следубщим шагом, а точнее двумя, будет описания процесса перекдирования DVD в XviD. Сначала mencoder анализирует файл, затем, на основе полученных данных, перекодирует DVD-поток. Использование двух фаз ненамного дольше, но на выходе вы получите более качественный файл. Будьте готовы к тому, что во время процесса кодирования нагрузка на CPU будет порядка 90%:

mencoder dvd:// -oac mp3lame -ovc xvid -xvidencopts pass=1 -o /dev/null
mencoder dvd:// -oac mp3lame -ovc xvid -xvidencopts pass=2:bitrate=800 -o xvidfile.avi

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

mencoder dvd:// -ovc xvid -oac mp3lame -xvidencopts bitrate=-700000 -o file.avi

Если вы не хотите максимальной загрузки процессора на время кодирования, используйте утилиту nice, которая понизит приоритет выполняющегося процесса:

nice -n 19 mencoder dvd:// -ovc xvid -oac mp3lame -xvidencopts bitrate=-700000 -o file.avi

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

mencoder * -o output.avi

Если вы хотите добавит аудиодорожку к видеофайлу, то используйте:

mencoder source.avi -o destination.avi -ovc copy -oac mp3lame -audiofile file.wav (для несжатых файлов)
mencoder source.avi -o destination.avi -ovc copy -oac copy -audiofile file.mp3 (для сжатых файлов)

Для получения видео, пригодного к воспроизведению на iPodLinux используйте:

mencoder -ovc raw -ofps 15 -oac pcm -vf scale=176:-2,expand=176:132,format=bgr16 input.file -o output.avi

Эта команда создаст RAW AVI-файл с несжатым аудиопотоком и масштабирует его к размеру экрана Nano.

У меня есть PocketPC, который частенько сопровождает меня в деловых поездках. Я использую mencoder для получения фильмов, которые уместятся на 512Mb SD-Card и будут воспроизводиться на моем Pocket:

mencoder -oac mp3lame -lameopts mode=3:preset=24 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=384:keyint=250 -vop expand=”320:240″ -o outputfile.avi inputfile.avi

или

mencoder input.avi -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=200:abitrate=48 -vop scale=320:240 -oac copy -o output.avi

Разница в том, что вторая команда масштабирует фильм до размера экрана PocketPC - 320×240 пикселей.
Если у вас есть web-камера и выхотите записать изображение с нее, используйте:

mencoder tv:// -tv driver=v4l:device=/dev/video0:width=640:height=480:forceaudio -ovc lavc -oac lavc -lavcopts vcodec=mpeg4:acodec=mp3 -ffourcc divx -o test.avi

Команда записывает весь вывод /dev/video0 в файл с разрешением 640х480 и mp3-звуком.

Перекодирование .flv в .avi с использованием XviD и x264 (параметр scale необходимо отредактировать в соответствии с вашими потребностями):

mkfifo video_yuv.yuv;

mencoder -vf scale=1280:720,format=i420 -nosound -ovc raw -of \
rawvideo -o video_yuv.yuv *.avi & \
x264 -p 1 –bitrate 1800 \
–no-psnr –no-ssim –fps 25 –weightb –8×8dct -A \
all –progress –subme 7 –ref 5 –me umh –trellis 1 \
–b-rdo –direct auto –merange 32 \
-o /dev/null video_yuv.yuv 1280×720;

#третья (дополнительная/корректирующая фаза, идёт после первой)
mencoder -vf scale=1280:720,format=i420 -nosound -ovc raw -of \
rawvideo -o video_yuv.yuv *.avi & \
x264 -p 3 –bitrate 1800 \
–no-psnr –no-ssim –fps 25 –weightb –8×8dct -A \
all –progress –subme 7 –ref 5 –me umh –trellis 1 \
–b-rdo –direct auto –merange 32 \
-o /dev/null video_yuv.yuv 1280×720;

# вторая фаза - получаем результат
mencoder -vf scale=1280:720,format=i420 -nosound -ovc raw -of \
rawvideo -o video_yuv.yuv *.avi & \
x264 -p 1 –bitrate 1800 \
–no-psnr –no-ssim –fps 25 –weightb –8×8dct -A \
all –progress –subme 7 –ref 5 –me umh –trellis 1 \
–b-rdo –direct auto –merange 32 \
-o video_x264.mkv video_yuv.yuv 1280×720;

Как вы видите, с помощью mencoder можно работать с большим количеством форматом, доступно огромное число опций, он мальенький, легкий и очень бытсро работает. И я не променяю его ни на одну утилиту с более “дружественным” интерфейсом.

Специально для интересующихся, список фронт-ендов к mencoder:
Kmencoder
Konverter
Kmenc 15
GMencoder
AcidRIP
MenGUI

Оригинал: http://www.linux.com/feature/121385


 

Comments: 10

  1. Yurij November 25th, 2007 at 9:13 am

    Однозначно в закладки.

  2. vehn November 25th, 2007 at 5:31 pm

    гых, убил часа полтара на перевод, полез уточнить опцию -vop expand=”320:240″ и нарвался на данный перевод. Хех, погуглить нужно было прежде чем переводить ))

  3. vehn November 26th, 2007 at 12:00 am

    да-да, и на опеннет тоже постить собирался )

  4. admin November 26th, 2007 at 12:25 am

    Ух, нифига :) Меня на опеннет запостили :))

  5. Миха November 26th, 2007 at 1:21 am

    А что на счет много проходного сжатия? я полагаю что для качественного пережатия двд в мпег 4 обычно все жмут в 2 прохода?

  6. aam November 26th, 2007 at 8:50 am

    Спасибо за статью! Особенно интересно для PocketPC

  7. болт November 26th, 2007 at 4:28 pm

    дарова мегаюниксхакер!
    маладца, так держать!!!

  8. Коля November 27th, 2007 at 3:06 pm

    Здесь по моему по болле будет: www.mplayerhq.hu/DOCS/HTML-single/ru/MPlayer.html#mencoder

  9. admin November 28th, 2007 at 12:18 am

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

  10. crocodile2u March 25th, 2008 at 3:49 pm

    ffmpeg обладает, имхо, гораздо более понятным интерфейсом при работе в оболочке. Однако, его использование будет предпочтительно лишь в том случае, если вам нужно работать (кодировать/перекодировать) целый фильм или кусок с самого начала. Если же вы хотите вырезать кусок из середины - придется довольно долго ждать - у ffmpeg тупит перемотка к нужному месту в потоке. Особенно досадно это, когда хочется наделать скринов с видео, так что снимайте скриншоты с mencoder’ом и да пребудет с вами сила.

Add a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>