MPlayer - проигрыватель видео, Mencoder - перекодировщик.

25.12.06
Последняя редакция: 18.06.2008
Иванов Аркадий.

 

 

Mplayer - это проигрыватель видеофайлов всех видов. 
Mencoder - это перекодировщик видеофайлов. 

 

Как установить MPLAYER, MENCODER?

Про этот пакет надо знать следующие вещи: 
  • Авторы не рекомендуют использовать подготовленные бинарные варианты, нужно обязательно конфигурировать, транслировать и устанавливать программу на каждой отдельной машине. Авторы утверждают, что только в этом случае Mplayer покажет свою настоящую производительность и не расстроит пользователя. 
  • На сегодня в дистрибутивах Linux кроме mplayer также распространяется удобная программа frontend к нему - SMPlayer.
    Рекомендую пользоваться ей.
  • Mencoder является составляющей частью пакета Mplayer, компилируется и устанавливается вместе с MPlayer.
Итак, устанавливаем MPlayer в Linux-систему:
Простой (быстрый, но не самый лучший) способ: 
  •  скачиваем пакеты MPlayer, MPlayer-fonts, MPlayer-gui, MPlayer-skins с AltLinux или его зеркала.
  •  добавляем их в систему (RPM, или через APT)
  •  сразу получаем в системе вполне рабочий MPlayer. Имеем возможность снести пакеты при помощи RPM или APT.

  Долгий путь, со всеми возможностями: 
  •  Установка делается под root-ом.
  •  Скачиваем дистрибутив свежего MPlayer с www.mplayerhq.hu
  •  Скачиваем всяческие кодеки оттуда же.
  •  Скачиваем русские фонты оттуда же.
  •  Скачиваем шкуры (skin-ы) для MPlayer оттуда же.
 -------------------------------------- 
  •  Раскрываем архив исходников в каком-нибудь каталоге: 
    tar xvjf mplayer-XXX.tar.bz2
  •  Разворачиваем essentual-20071007.tar.bz2 архив в /usr/local/lib/codecs (файлы без каталогов).
  •  Для того, чтобы хоть что-нибудь было можно скомпилировать, надо установить в систему: make и gcc3.2  или более позднюю версию.
  • Для того, чтобы иметь GUI, следует установить пакеты:  XFree86-devel  gtk+  gtk+-devel
  • Библиотека для разработки liblame-devel должна быть установлена для поддержки MP3-аудиокодека.
  • libdivx4 тоже нужна для работы с DIVX-форматами. Ищите на http://www.divx.com, скачивайте и устанавливайте (там будет скрипт install.sh).
  • Авторы ОЧЕНЬ не рекомендуют использовать gcc-2.96. Если у вас именно такая версия и вам лень переустанавливать gcc, то при проведении процедуры configure не забудьте указать ключ --disable-gcc-checking. 
    В AltLinux Master 2.2 есть несколько вариантов gcc и включить использование необходимой версии можно так: 
    /usr/sbin/select-gcc 3.2
  • Устанавливаем всякие библиотеки для того, чтобы MPlayer имел эти кодеки и подсистемы аудио/видеовывода:  
    libSDL-devel # (Simple DirectMedia Layer): 
    libpng3-devel # (Portable Network Graphics) 
    libcdparanoia-devel # (digital audio CD) 
    libmad-devel # (MPEG audio files) 
    libvorbis-devel # (Vorbis audio compression) 
    directfb-devel # (Linux framebuffer) 
    libalsa2-devel # (Linux framebuffer) 
    libarts-devel # (arts - analog realtime synthesizer) 
    glib2-devel # (GIMP toolkit library)
     
    libxvid-devel # (XVID support) 
    libdv-devel # (Digital Video support) 
    libx264-devel # (H.264 support)  
    libdts-devel # (DTS audio decoder) 
    libmpcdec-devel  # (Musepack codec) 
    libfaac-devel # (Freeware Advanced Audio Coder)  
    libtheora-devel # (Theora Video Codec) 
    libspeex-devel # (Speex Codec) 
    libdvdread-devel # (DVD) 
    libdvdnav-devel # (DVD Navigation) 
    libtwolame-devel # (Twolame MPEG audio layer 2 encoder) 
    liblzo-devel # (Realtime data complession lib) 
    svgalib-devel # (SVGA) 
    libXvMC-devel # (X Video with motion compensation) 
    liblive555-devel # (multimedia streaming RTP/RTCP, RTSP, SIP)
  • Запускаем скрипт автоконфигурации программ под нашу систему: 
    ./configure
  • И cмотрим по окончании, чего эта процедура разрешила, и чего запретила. Если есть сомнения, надо доставлять недостающие пакеты или руками указывать опции configure. (Примечание: несмотря на всякие запреты DVD, работа с DVD разрешена использованием mpdvdkit, идущего вместе с дистрибутивом.) 
    Если нам не нравится список поддерживаемых кодеков, устройств, протоколов, доустанавливаем пакеты и снова повторяем ./configure.
  • Теперь окончательное конфигурирование программы (ключи здесь для примера, но они вполне даже полезны): 
    ./configure --language=ru --enable-gui --disable-runtime-cpudetection --enable-qtx --enable-menu --enable-xvmc --enable-dvb 

    а также дополнительные указания с помощью ключей командной строки, которые сочтете нужными. Без GUI (Graphic User Interface) вообще как-то непривычно работать, а --language=ru порадует тех, кто не любит сообщения от программ на иностранных языках.
  • Теперь шаг компиляции и сборки программы: 
    make
  • Установить файлы в систему: 
    make install
  • Копируем все варианты шкурок(скинов) в /usr/local/share/mplayer/Skin/ и раскрываем их в подкаталоги с теми же названиями, и меняем права доступа: 
    cd /usr/local/share/mplayer/Skin 
    for i in *.bz2; do tar xvjf $i; done 
    chmod -R o+rx *
  • Раскрываем архив фонтов в /usr/local/share/mplayer/font/ 
    Рекомендую взять mp-arial-iso-8859-1.zip и фонты из его подкаталога arial-14 
    Шрифты с русской кодировкой koi8-r содержат глюк и в архиве нет шрифтов для OSD.
  • Для себя копируем в ~/.mplayer/Skin/default/ какую-нибудь любимую шкурку.
  • Для себя копируем в ~/.mplayer/font фонты для MPlayer-а.
  • Необоходимо подстроить систему для того, чтобы MPlayer использовал таймер реального времени для синхронизации аудио и видеопотоков: 
    echo "dev.rtc.max-user-freq = 1024" >>/etc/sysctl.conf 
    sysctl -p

  
MPLAYER - прогрыватель видео всяческих форматов. Распространяется на условиях GPL.
  
Простейшие команды для запуска MPlayer

  
  • Просто запуск из командной строки: 
    gmplayer 
    (gmplayer - это вариант mplayer с графическим интерфейсом. Далее из меню (щелкните правой кнопкой мыши на экране) вы можете сделать все, что вам захочется.)
  
  • AVI-файл: 
    gmplayer my.avi
  • Проигрывание AVI-файла при работе в KDE:  
    gmplayer -ao arts my.avi 
    (-ao arts - означает, что для вывода звука следует использовать звуковой сервер aRts, который по умолчанию используется в KDE. Если не указать правильный звуковой сервер, mplayer будет пытаться использовать устройство аудиовывода /dev/dsp напрямую, что обычно работает очень криво.)
  • DVD: 
    gmplayer -dvd 2 /dev/dvd 
    (dvd 2 означает, что надо начать со второй части)
  • DVD: 
    gmplayer -alang ru -dvd 2 /dev/dvd 
    (alang - audio language, -alang ru означает, что предпочтительна русская звуковая дорожка)
  • DVD: 
    gmplayer -slang ru -alang ru -dvd 2 /dev/dvd 
    (slang - subtiles language, -slang ru означает, что предпочтительны русские субтитры, также наличие этого параметра включает показ субтитров)
  • DVD: 
    mplayer -vo vesa -dvd 2 /dev/dvd 
    (vo - video output, выбирается драйвер подсистемы видеовывода. Если запустить "mplayer -vo help", увидите весь список драйверов. При просмотре "Миссия на Марс" только с vesa-драйвером мне удалось избежать сообщения о том, что моя система слишком медленна для воспроизведения этого диска. У меня был PIII-500, Nvidia GeForce 2 с драйвером карты от X11R6 V4.1.0. Я не воспользовался X-драйвером видеокарты от Nvidia, думаю это и явилось причиной проблем со скоростью вывода изображения.)
  • Просмотр телепрограмм с TV-тюнера (Я использовал Avermedia, чип bt878): 
    mplayer -tv on:device=/dev/video0:driver=v4l:input=0:width=320:height=240:norm=SECAM:chanlist=europe-east:channel=R3 
    (Значения input: 0=TV, 1=Composite1, 2=S-Video.)
  
  • Выбор системы аудиовывода. Если у вас проблемы со звуком (программа об этом сообщает), стоит правильно подобрать устройство/сервер аудио. Следующая команда даст вам список систем, поддерживаемых mplayer-ом: 
    mplayer -ao help
  • Выбор системы видеовывода. Если у вас проблемы со видео (изображение дергается), стоит правильно подобрать систему видеовывода. Следующая команда даст вам список систем, поддерживаемых mplayer-ом: mplayer -vo help

  
  
  
MENCODER - перекодировщик видео/аудио. Входит в состав MPlayer.
 
Простейшие команды работы с mencoder

  
 Замечание: В KDE 3.1 появились программы front-end к Mplayer/Mencoder: KMEDIAGRAB и KMENCODER. На первых порах они изрядно облегчат вашу участь по работе с программами.   
  
Ключи от mplayer имеют такое же значение и в mencoder, хотя не все они поддерживаются. 
  
  • DVD ===> MP4? *** За 3 прохода ***: 
    rm frameno.avi # удалить этот файл со звуком, если такой остался с прошлого 3-хпроходного кодирования 
    mencoder -dvd 1 -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3 
    mencoder -dvd 1 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=1057 -oac copy -o movie.avi 
    mencoder -dvd 1 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=1057 -oac copy -o movie.avi 

    Кодирование делается в три прохода: 
    - сначала делается звуковой файл, чтобы его не кодировать дважды. 
    - после первого прохода mencoder советует видео-bitrate для успешного кодирования на CD-диски (650/700/800Mb) 
    - на первом проходе звук кодируется в MP3 с использованием программы Lame, выбирается способ с переменным битрейтом (vbr=3). 
    :vbitrate=1057 указывает, что bitrate видео должен быть сделан 1057Kb/sec. 
    -dvd 1 - говорит, что кодировать надо первую видеозапись. На некоторых дисках фильм идет вторым, тогда опция будет выглядеть так: -dvd 2 
    -oac copy - говорит, что аудиокодек это просто копирование звуковой дорожки. 
    -o указывает название выходного файла movie.avi 
    -:vpass указывает номер прохода. 
     Для пробы за 1.5 часа PIV-2.4/DVD-16x обработал 94-минутный фильм.
 
  • Может потребоваться указать номер русской звуковой дорожки. Определить номер дорожки можно так: 
    mencoder -v -endpos 0 -dvd 1 -nosound -ovc frameno 

    В информации, выдаваемой mencoder-ом, найдите строку про звук "ru", Там и будет указана цифра для ключа -aid
  
Для автоматизации процесса кодировки с DVD можно использовать простенький скрипт: 
 
#!/bin/bash 
# 
# Простенький скрипт для создания mpeg4 <== DVD 
# 

# 
# VN - номер видеозаписи в заголовке 
# 
VN=1 

# 
# Первый шаг - узнать ID русской звуковой дорожки 
# 
# Для этого получим инфо о DVD (ключ -v) 
# 

SS="language: ru aid:" 
typeset -i aid 
s=`mencoder -v -endpos 0 -dvd $VN -nosound -ovc frameno | grep "$SS" ` 
echo "$s" 
if [ `echo "$s" | wc -l` != "1" ] 
then 
    echo "Проблемы с определением русской аудиодорожки" 
    echo "Вот:$s" 
    exit 1; 
fi 
aid=`echo "$s" | awk -F: '{print $5}'` 
if [ $? != 0 ] ; then echo "Проблемы с определением русской аудиодорожки"; exit 1; fi 

if [ -f frameno.avi ] 
then 
     # remove this file, which can come from a previous 3-pass encoding 
     # (it interferes with current one) 
     rm -f frameno.avi;if [ $? != 0 ] ;then echo "Error removing frameno.avi";exit 1;fi 
fi 

# 
# Получаем файл со звуком, по дороге узнаем предполагаемый видео-битрейт. 
# 
SS="800MB CD:" 
typeset -i vr 
vr=`mencoder -dvd $VN -aid $aid -ovc frameno -o frameno.avi  -oac mp3lame -lameopts vbr=3  | grep "$SS" | awk -F: '{print $2}'` 
if [ $? != 0 ] ; then echo "Error on pass0"; exit 1; fi 

mencoder -dvd $VN -aid $aid -ovc lavc    -lavcopts vcodec=mpeg4:vpass=1:vbitrate=$vr    -oac copy -o movie.avi 
if [ $? != 0 ] ; then echo "Error on pass1"; exit 1; fi 

mencoder -dvd $VN -aid $aid -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=$vr  -oac copy -o movie.avi 
if [ $? != 0 ] ; then echo "Error on pass2"; exit 1; fi


Убого, но удобно. 
Иногда ручками стоит поменять предполагаемый размер CD(800MB) и номер видеозаписи (-dvd 1). 


  
Разные опции: 
  • Как взять видео с TV-тюнера так, чтобы потом его обрезать и сжать. Сразу сжимать и обрезать не всегда получается - неизвестны параметры: 
    mencoder tv:// -tv driver=v4l2:input=2:norm=secam -oac mp3lame -ovc copy -o output.avi
  • Как сделать не самое "квадратное" демо-видео из того, что взял с TV-тюнера (кодек берём msmpeg4v2, поскольку винда без дополнительных пинков читает этот файл): 
    mencoder output.avi -endpos 48 -oac mp3lame -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=400000 -vf crop=560:460:50:0  -o 1.avi
  • Пережать с другой геометрией - использовать фильтр -vf scale: 
    mencoder tst.vob -o 1.avi -vf scale=320:240 -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=200000 
    (здесь используется для аудио кодирование в MP3, для видео - кодек MPEG4, видеопоток - 200Kbit/сек)
  • Пережать с другой геометрией и сохранить пропорции. Это может добавить к изображению чёрные поля, но ведь именно это и требуется. Для этого  используется последовательное сочетание фильтров expand и scale. 
    (Мне это потребовалось, чтобы в iriver, у которого матрица 320x240, записать фильм, у которого изначальные пропорции были 2.35:1) 
    mencoder tst.avi -o 1.avi -vf  expand=640:480,scale=320:240 -oac mp3lame -ovc xvid -xvidencopts bitrate=800
  • Если надо восстановить индексы в файле для того, чтобы можно было делать быстрое позиционирование в нём: 
    mencoder tst.avi -forceidx noindex.avi -oac copy -ovc copy -o output.avi
  • Для выбора звуковой дорожки с нужным языком можно использовать ключ -alang, для выбора дорожки субтитров ключ -slang. Например, для перекодировки под просмотр на Galaxy Note II я использовал такую строку:
    mencoder -slang en -alang en x.mkv -oac mp3lame -vf scale=1024:426 -ovc x264 -x264encopts preset=veryslow:tune=film:crf=15:frameref=15:fast_pskip=0:threads=auto -subfont-text-scale 3 -o x.mpg

(для версии 1.rc2, Тренировался в Alt Linux Server 4.0.0)