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)