13.01.2010

Взрывная мультимедиа

это перепечатка статьи Multimedia Dynamite Girish Venkatachalam

перевод на русский http://linuxmedia.ru
авторы linuxmedia написали, что сайт закрывается, вот я и решил "спасти" интересную и очень полезую статью...







Взрывная мультимедиа


От редакции. Автор статьи попытался продемонстрировать известную всем программу MPlayer с самых разных сторон. Надеемся, что читатель, независимо от уровня своего владения этим приложением, подчерпнет что-нибудь интересное и для себя. А новичкам будет полезно познакомиться со столь разносторонней и богатой во всех отношениях программой для просмотра, кодирования... впрочем, читайте дальше сами.

Что должен уметь делать хороший видео плейер в Linux в наших мечтаниях? Проигрывать любой фильм, какой нам заблагорассудиться в него запихать. И никаких вопросов - просто показывать! Помимо этого, необходимо хорошее и удобное управление, программа должна работать с дистанционным пультом, показывать телевизионные каналы и, естественно, проигрывать DVD. Так вот, Mplayer все это умеет делать и даже больше того...

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

MPlayer обладает превосходной устойчивостью. Однако, при некоторых обстоятельствах, программа может и вылететь. Чаще всего связанно это с левыми драйверами видео. И все же это зрелое приложение, которое не имеет аналогов в мире Linux. Кроме того, в пакет с программой входит MEncoder для кодирования видео, который справляется с этой задачей куда успешнее известного FFMPEG. Хотя для использования его в полную силу необходимо немало поюзать справочную документацию.

А сейчас давайте посмотрим волшебство MPlayer в действии. Следующая команда проиграет звуковой файл расположенный по приведенному линку, одновременно проведя ресэмплинг потока до 48.000 Гц и скомбинировав каналы в обычное стерео:

$ mplayer -af lavcresample=48000,hrtf 'http://mp3.streampower.be/radio1-mid.mp3'

Другая команда захватывает тот же самый поток и сохраняет его в файле 'stream.aac':

$ mplayer -dumpstream -dumpfile stream.aac -softvol -softvol-max 2000 -af lavcresample=48000,volnorm=2:0.5 'http://mp3.streampower.be/radio1-mid.mp3'

Теперь вы можете открыть полученный файл командой:

$ mplayer stream.aac

И что же получается? Пока MPlayer скачивает, обрабатывает и проигрывает для вас файл - реальное время радиопотока смещается. Сие не есть хорошо.

Имеющиеся параметры не позволяют достичь этого, зато могут продемонстрировать элегантное использование возможностей MPlayer из командной строки. Так, к примеру, параметры '-softvol' и '-softvol-max' оказывают влияние на качество и уровень звука. С одной стороны это уменьшает уровень шума к сигналу, с другой стороны на высоких частотах уровень полезного сигнала будет неестественно завышен.

Для нормализации звука можно воспользоваться фильтром 'volnorm'. Я использую параметр 'volnorm=2:0.5'. Так последняя цифра (0.5) определяет потолок амплитуды для нормализации.



Списки для проигрывания


Следующая команда наподобие приведенной выше, за одним исключением, вы определяете не файл, а URL плейлиста. Возможно это не сработает у вас, если вы не имеете доступа к сайту SHOUTcast. Но это только пример.

$ mplayer -af lavcresample=48000,hrtf -playlist 'http://www.shoutcast.com/sbin/shoutcast-playlist.pls?rn=1025&file=filename.pls'

Опция '-playlist' должная использоваться только для URL потока, который имеет расширение '.pls'. Вы можете создать плейлист несколькими путями. Здесь приведен один из вариантов с использованием утилиты 'find':

$ find /home/girish/music -name "*mp3 -or -name "*ogg" > ~/playlist.txt

А теперь заставьте MPlayer проиграть ваш плейлист:

$ mplayer -playlist ~/playlist.txt

Следующая строка позволит вам проиграть список в случайном порядке без повтора треков:

$ mplayer -shuffle -playlist ~/playlist.txt

Естественно, вы не должны ограничивать себя проигрыванием только аудиофайлов. Вы можете добавлять любые поддерживаемые MPlayer'ом форматы, включая видео, телеканалы, радио и, естественно, интернет потоки. В дополнении к простому формату плейлиста программа имеет превосходную поддержку ASX, M3U и других популярных форматов списков.



Спецэффекты


Имеется хорошая поддержка звуковых эффектов, а эффект караоке - наиболее интересный среди них. Работает он не совсем хорошо, но попеть под фанеру вам удастся. Основан эффект на уменьшении громкости существующего вокала. Для этого используйте следующий способ:

$ mplayer -af karaoke song.mp3

MPlayer также имеет десятиполосный эквалайзер. Следующая команда игнорирует средние полосы и усиливает частоты 31.25Hz 7dB, 62.5Hz 8dB, 125Hz 5dB. Все частоты около 4, 8 и 16Hz уменьшены на 2 dB.

$ mplayer -af equalizer=7:8:5:0:0:0:-2:-2:-2 video.mpg

А эта команда придаст живости к воспроизведению треков, которые вам могут показаться слишком монотоными:

$ mplayer -af extrastereo song.mp3

Если есть желание прослушать какую-нибудь песню несколько раз, воспользуйтесь параметром 'loop'. В этом примере третья песня проиграется пять раз:

$ mplayer song1.mp3 song2.ogg file.wav -loop 5

А вот если хоттите повторить весь список файлов, то используйте фигурные скобки:

$ mplayer { song1.mp3 song2.ogg file.wav } -loop 5

Для бесконечного зацикливания используйте параметр 0 ('-loop 0').

Кроме того, имеются много звуковых эффектов-плагинов разработанных специально для обработки многоканального и 3D аудио. Однако, если вы хотите иметь действительно передовые звуковые эффекты воспользуйтесь другим приложением - 'SoX Swiss Army knife'.
Вы можете использовать цепочку фильтров для комплексной обработки.



Цепочка аудио/видео фильтров в MPlayer

А что если вам понравилась работа составленной цепочки фильтров и вы хотите сохранить результат в отдельный файл? И это можно. Следующая команда сохранит результат обработки на диск без его проигрывания:

$ mplayer -ao pcm:file=filtered.wav -channels 4 -af lavcresample=48000,hrtf,pan=2:1:0:0:0.3:0.5:0.5:0:12 audio.ogg

Здесь фильтр 'lavcresample' преобразовывает частоту в 48000 Гц. Другой фильтр 'pan' микширует входящие аудиоканалы в указанные выходные да еще и с разной амплитудой. Объясню подробнее. В этом примере мы также использовали '-channels' для определения четырех входящих каналов.



Управление


Управлять Mplayer'ом вы можете с помощью клавиатуры, мыши, джойстика и даже дистанционного пульта. Следующая команда предоставит вам список используемых клавиш. Надо сказать, что, по умолчанию, управление программой настроенно неплохо:

$ mplayer -input keylist

Более подробную информацию по настройки конфигурационых файлов MPlayer input.conf и menu.conf вы сможете найти в файле slave.txt, который идет с пакетом программы.

MPlayer также может принимать команды из файла FIFO (First In, First Out). Это пригодится для чтения медиа из стандартного входа:

$ mkfifo /tmp/fifo
$ cat playlist.txt | mplayer -input file:/tmp/fifo -cache 8192 -playlist

Попробуйте, к примеру, следующую команду, для более точного понимания этой возможности:

$ echo 'mute' > /tmp/fifo

Кроме того, вы можете использовать мышь для стандарных операций. Так, по умолчанию, колесико настроенно на перелистывании файлов в обоих направлениях.



OSD


Кстати насчет методов управления. MPlayer имеет прекрасную поддержку OSD. Я обычно использую масштабируемые шрифты TTF и это дает превосходный результат. К сожалению, на официальном сайте программы вы их не найдете.

Вот так вы можете отобразить на экране таймер файла:

$ mplayer -osdlevel 3 -font /home/girish/.ttffonts/Comicbd.ttf video.avi

Вы можете управлять проигрыванием файлов прямо из меню OSD. Тут даже имеется встроенная консоль для ввода команд Mplayer.

А вот так можно создать этот тип конфигурации. Вначале необходимо настроить большую часть функций в файле config (~/.mplayer/config):

# Write your default config options here!
# Use Matrox driver by default.
vo=sdl
font=/home/girish/.ttffonts/comicbd.ttf
vf=hue,eq,screenshot
#menu-startup=yes
menu=yes
subfont-autoscale=3
subfont-osd-scale=8
subfont-text-scale=8
subpos=50
spuaa=4
osdlevel=3
# I love doing headstand (Sirsasana) while watching videos.
#flip=yes
# Decode/encode multiple files from PNG,
# start with mf://filemask
mf=type=png:fps=25
# Eerie negative images are cool.
#vf=eq2=1.0:-0.8

Кроме того, вам необходимо указать клавишу в input.conf, которая предназначена для вызова конкретного меню. В следующем примере, меню вызывается щелчком левой кнопки мыши:

MOUSE_BTN0 menu main

Субтитры


MPlayer, помимо распознавания 12 сторонних форматов субтитров имеет и свой собственный - MPSub.Я нигде не видел такого количества опций для настройки показа субтитров. Вы можете выводить их на экран в произвольном размере, в любом положении, перемещать по экрану с помощью клавиатуры, изменять прозрачность и даже форматировать.

Пример использования (subtitles.txt):

FORMAT=TIME
# first number : wait this much after
# previous subtitle disappeared
# second number : display the current
# subtitle for this many seconds

2 3
What is going on?

4 3
How are you doing?

8 3
You are wrong!

0 3
A long long, time ago...
in a galaxy far away...

0 3
Naboo was under an attack.

0 200
I don't understand this.

Затем укажите программе использовать этот файл:

$ mplayer -sub subtitles.txt -font ~/.ttffonts/Verdana.ttf video.avi

Следующая команда перегонит субтитры в srt формат и сохранит их в файле dumpsrt.sub в текущей директории:

$ mplayer -sub subtitles.txt video.avi -dumpsrtsub



Создание скриншотов


Хотите делать скриншоты из MPlayer? Это просто. Выполните ниже приведенную команду и во время проигрывания файла нажатием клавиши S делайте снимки:

$ mplayer -vf screenshot video.avi

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

$ mplayer -vo png -vf screenshot -sstep 5 video.avi

А что делать, если хочется перегонять в картинки каждый кадр? Самое простое - использовать механизм FIFO:

$ mkfifo /tmp/fifo
$ mplayer -input file:/tmp/fifo video.mpg
$ echo 'screenshot 1' > /tmp/fifo

И под занавес, для снятия скриншотов в full-режиме используйте аргументы '-vf spp,scale=1024:768'.


Еще больше мощи!


MPlayer способен на гораздо большее.Так вы можете перегнать файлы картинок в видеофайл и наоборот. Вы можете просматривать TV или DVB. Имеется поддержка различных протоколо, таких как:RTP, RTSP, MMS, SDP, LIVE5555.

Эта команда выведет список возможных фильтров:

$ mplayer -af help

Список возможных драйверов видео для вывода:

$ mplayer -vo help

Вы можете совместить проигрывание звукового файла одновременно с просмотром видео:

$ mplayer video.mpg -audiofile audio.aac

Естественно, MPlayer поддерживает большое количество форматов аудио и видео файлов. Просто напечатайте:

$ mplayer -vo help
$ mplayer -ao help

Я надеюсь, что эта статья поможет вам проникнуться мощью этой удивительной программы. Наслаждайтесь вашим мультимедийным опытом!


Полезные ссылки:

MPlayer: mplayerhq.hu
MPlayer HTML Documentation: www.mplayerhq.hu/DOCS/HTML-single/en/MPlayer.html
MPlayer Tips: freshmeat.net/articles/view/747