мультимедиа
23 коммент.
В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.
$ cp /usr/share/doc/moc/examples/config.example.gz ~/.moc/Где $USER - имя пользователя в системе. После этого разархивируем конфиг:
$ cd ~/.moc
# chown $USER config.example.gz
$ gunzip config.example.gzИ правим его своим любимым текстовым редактором. Чтобы заставить MOCP дружить с кириллицей в ID3v1-заголовках, необходимо найти строку:
$ mv config.example config
#ID3v1TagsEncoding = WINDOWS-1250
ID3v1TagsEncoding = WINDOWS-1251И всё, играй, гармонь!
mencoder -ovc lavc -lavcopts vcodec=ffv1 video-before.avi -o video-compressed-ffv1.aviСжалось до 18Мб, что очень хорошо. Однако при попытке такой сжатый файл воспроизвести, возникли проблемы: Mplayer (как и другие) сильно грузит процессор и видео не успевает воспроизводиться с заданным FPS. О том, какие страдания были с воспроизведением и как мы их героически решали, будет сказано ниже.
mencoder -ovc lavc -lavcopts vcodec=ffvhuff:vstrict=-1:pred=2:context=1:format=422p video-before.avi -o video-compressed-ffvhuff.aviПолучилось видео на 99Мб, что тоже неплохо. Однако при воспроизведении оказалось, что происходит конвертирование в другое цветовое пространство 420p и мы решили отказаться от такого финта:
mencoder -ovc lavc -lavcopts vcodec=ffvhuff:vstrict=-1:pred=2:context=1 video-before.avi -o video-compressed-ffvhuff-420.aviпри этом сэкономили ещё почти 20 Мб - фильм стал занимать 80Мб и воспроизводиться чуть глаже.
mplayer -vo gl -cache 65535 -cache-min 98 video-compressed-ffvhuff.aviЭто значит, что мы просим сделать Mplayer кеш на 64Мб и заполнять его не менее чем на 98%. Это сильно помогло делу, но это ещё не всё.
mplayer -vo fbdev -cache 65535 -cache-min 98 -quiet video-compressed.aviКлючик -quiet нужен для того, чтобы при воспроизведении Mplayer не выводил статистику в бегущей строке. Всё, после этого получаем фильм на чёрном экране, который воспроизводится плавно и без затей.
mplayer -fps 1 video-compressed.aviЭта команда будет воспроизводить фильм со скоростью 1 кард в секунду.
sudo aptitude install gspca-source camoramaВ каталоге /usr/src появится архив с исходниками gspca-source.tar.bz2 - распаковываем его прямо там. После этого переходим в каталог /usr/src/modules/gspca и там выполняем команду:
makeМодуль должен собраться без ошибок. Далее пишем:
sudo make installЭто установит наш модуль в каталог к другим модулям ядра. На всякий случай, можно после этого написать:
sudo depmod -aВсё, время загрузить модуль ядра для вебкамеры:
sudo modprobe gspcaТеперь всё готово. Врубаем камеру и запускаем софт.
$ camoramaЕсли всё было сделано верно, вы увидите видеоизображение в окошке программы и простой интерфейс управления изображением (яркость\контраст, насыщенность, фильтры и прочее). Вот что увидел я:

#aptitude install streamerПосле того, как пакет streamer будет установлен, он сможет писать и снимать скриншоты из из /dev/video0 и /dev/dsp в картинки jpeg, png и в видеофайлы со звуком. И ролики пишет, и скриншоты делает (в том числе несколько через равные промежутки времени). Программа,
Скрипт пишет в файл movie.avi 120 минут телепрограммы с тюнера (если время не передано скрипту явно) 24 кадра в секунду с mpeg-компрессией и в полном формате 720x520 и восьмибитным звуком.#! /bin/sh
if [ -z $1 ]; then
kmvTimeToRecord=50;
else
kmvTimeToRecord=$1;
fi
streamer -o ~/movie.avi -r 24 -f mjpeg -j 90 -s 720x520 -F mono8 -t $kmvTimeToRecord:00 -p2
#! /bin/shЭтот скрипт вызывает ffmpeg и указывает сжать файл movie.avi в новый, new.avi, с кодеком mpeg4 и хорошим качеством. Пережатие - долгая операция, так что можно за это время выпить чашечку любимого напитка или даже принять ванну.
ffmpeg -i movie.avi -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 new.avi
mencoder movie.avi -o new.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=1:vbitrate=1800 -ofps 24При этом перекодируется входной файл movie.avi в новый файл, new.avi с визуально удовлетворительным качеством. Чтобы каджый раз не вбивать параметры в командную строку добавил профили в mencoder.conf, например так:
apt-cache search video playerвыдаёт огромный список видеодобра, которое можно поставить, совершенно ничегошеньки не скачивая, а просто ставя с локального репоитория (CD/DVD-диски).
sudo aptitude install vlc xine-ui totemи через несколько мгновений уже смотрим фильмы.
sudo aptitude install beep-media-player xmms rhythmbox amarokи наслаждаемся.
sudo aptitude install abcde kaudiocreatorи через секунду разбегаемся глазами по тому, чем слушать музыку (пока другие мучительно что-то качают из Интернета)
sudo aptitude install gqview pornview gtksee kuickshowи вот уже вы любуетесь изображениями разной степени клубничности.
sudo aptitude install tvtime xavtv zappingи усаживаемся смотреть телевизор на свежезапингвиненном компьютере.



# apt-cache search xmms-даёт богатую пищу для размышлений:
xmms - Versatile X audio player that looks like Winamp
xmms-festalon - XMMS Input plugin for playing NSF music files
xmms-liveice - XMMS plugin that sends your audio to a shoutcast server
xmms-alarm - xmms general plugin for using xmms as an alarm clock.
xmms-arts - aRts Output plugin for xmms
xmms-blursk - Powerful visualization plugin for XMMS, similar to "Blur Scope"
xmms-bumpscope - visualization plugin for XMMS that appears as an embossing oscilloscope
xmms-cdread - Input plugin for XMMS that reads audio data from CDs
xmms-crossfade - XMMS Plugin for Crossfading / Continuous Output
xmms-dbmix - XMMS output interface to the DBMix audio system
xmms-defx - A Sound alterator plug-in for xmms
xmms-dev - XMMS development static library and header files
xmms-finespectrum - XMMS Fine Spectrum Analyzer Plugin
xmms-flac - Free Lossless Audio Codec - XMMS input plugin
xmms-fmradio - FM Radio input plugin for XMMS
xmms-goodnight - XMMS plugin to stop playing at a given time
xmms-goom - visualization plug-in for XMMS with a variety of effects
xmms-infinity - full-screen visualisation effect for XMMS
xmms-infopipe - General plugin for XMMS, reports real-time information to a pipe
xmms-iris - advanced OpenGL visualization plugin for XMMS
xmms-jack - xmms output plugin to the jack audio server
xmms-jess - visualization plugin for XMMS using various 2D and 3D methods
xmms-kjofol - XMMS remote that uses K-Jofol's skins
xmms-kjofol-skins - Skins for the xmms-kjofol package
xmms-ladspa - power XMMS with the Linux Audio Developer's Simple Plugin API
xmms-lirc - Linux Infrared Remote Control for XMMS
xmms-mad - mp3 input plugin for xmms based on libmad
xmms-modplug - ModPlug plugin for XMMS
xmms-msa - spectrum analyzer plugin for XMMS with skin support
xmms-osd-plugin - XMMS plugin using xosd
xmms-qbble - XMMS playlist manager with search support
xmms-rplay - RPlay Output Plugin for XMMS
xmms-shell - XMMS Shell - Interface to control XMMS from the Console
xmms-sid - Input plugin for XMMS that plays SID (C64) tunes
xmms-singit - Display and edit lyrics with XMMS
xmms-skins - Skins for XMMS
xmms-stats - Make stats of your preferred songs
xmms-status-plugin - Status panel applet for XMMS
xmms-synaesthesia - visualization plugin for XMMS with a field of glowing lights
xmms-volnorm - XMMS plugin that gives all songs the same volume level
xmms-xf86audio - XF86Audio multimedia-key support for XMMS
xmms-coverviewer - XMMS plugin that displays covers while playing
xmms-find - XMMS plugin for quick, remote jump to another song
xmms-jackasyn - JACK Output plugin for xmms
xmms-kde - MP3 player integrated into the KDE panel
xmms-mpg123-ja - mpeg123 plugin supported Japanese encodings for xmms

# apt-get install gcc g++ makeПосле этого ставим необходимые для MPlayer пакеты:
# apt-get install libogg0 libogg-dev libvorbis0a libvorbis-dev vorbis-tools libpng12-0 libpng10-dev liblogfile-rotate-perl libconfhelper-perl debhelper fakeroot libgtk1.2 libgtk1.2-dev svgalibg1 svgalibg1-dev libsdl1.2-devНекоторые пакеты могут быть уже установлены, другие потребуют обновлённых версий, но набор их остаётся прежним. Далее переходим в каталог /usr/src и создаём там каталог mplayer, где и будем его собирать. Всё почти готово...
После этого в этом же каталоге набираем:#cd /usr/src/mplayer/ && tar -jxvvf * && cd *
# ./configureПоползуют выводы конфигуратора: что у вас есть и с поддержкой чего будет компилироваться MPlayer. Если его на этом этапе что-то не устроит - он вылетит и перед кончиной скажет, чего ему не хватило для полного счастья. Недостающее надо поставить, после чего собрать-таки пакет прописыванием следующего заклинания:
# DEB_BUILD_OPTIONS="--disable-runtime-cpudetection" fakeroot debian/rules binaryВот прямо так и пишите, как здесь, и должно быть вам счастье. По экрану поползут и замелькают строчки компилятора, в которые вчитываться не обязательно. Апофеозом его деятельности будет появившийся в каталоге /usr/src/mplayer заветный файлик mplayerVersion.deb, который мы ставим утилитой dpkg следующим манером:
# dpkg -i mplayerVersion.debНо это ещё не всё: у нас только основные кодеки, а дополнительных нет, и разные неправильные ролики мы не увидим. А хотим. Но разве напрасно мы качали кодеки к MPlayer вида all-*.tar.bz2 и essential-*.tar.bz2? Сейчас мы их поставим.
/usr/libВот как например этот файл выглядит у меня (это только пример!)
/usr/lib/win32
# cat /etc/ld.so.conf
/usr/X11R6/lib
/usr/lib/atlas
/usr/lib
/usr/lib/win32
Кнопки 1 и 2 понижают/повышают контрастНе все эти операции поддерживаются различными методами видеовывода.
Кнопки 3 и 4 понижают/повышают яркость
Кнопки 5 и 6 понижают/повышают оттенки
Кнопки 7 и 8 понижают/повышают насыщенность
стрелка < и > передвинуться назад/вперёд на 10 секунди читаем-таки маны (man mplayer), в которых это пишут буквально сразу, не откладывая в дальний ящик.
кнопка перемещения курсора вверх и вниз передвинуться назад/вперёд на 1 минуту
кнопка страница вверх и страница вниз передвинуться назад/вперёд на 10 минут
кнопка + и - компенсировать назад/вперёд десинхронизацию на 0.1 секунд
или прописать параметр -autosync 0
mplayer -loop 0 Image01.aviЭто заставляет Mplayer проиграть файл, потом закрыть его, потом открыть снова и снова проиграть.
KeyRelease event, serial 32, synthetic NO, window 0xe00001, root 0x4c, subw 0x0, time 8095640, (-57,293), root:(753,322), state 0x0, keycode 104 (keysym 0xff54, Down), same_screen YES, XLookupString gives 0 bytes:То, что написано после keycode, и есть код клавиши (выделение - моё). Пробуем нажать и отпустить мультимедийную кнопку - если видим какой-нибудь keycode, радуемся. Осталось только поставить соответствующий софт, чем и займёмся.
hotkeys - A hotkeys daemon for your Internet/multimedia keyboard in XСтавим:
# apt-get install hotkeysОтлично, теперь запускаем её, указывая параметр клавиатуры:
hotkeys -t btc8190Предопределённых конфигов довольно много, но они друг от друга отличаются только тем, какие коды клавиш определены для каких действий. Поэтому идём в каталог /usr/share/hotkeys и смотрим, какой конфиг (по содержимому) нам ближе. Его можно и нужно редактировать под свою клавиатуру и потребности. На код клавиши можно поставить всё, что угодно. Например, мне удобно управлять только плеером с клавиатуры (у меня Dialog KP-105UH), поэтому я напряг xev на предмет кодов клавиш мультимедиа, поправил конфиг и вот что получилось:
А вот собственно текст конфига:
saa7130/34: v4l2 driver version 0.2.14 loadedУ вас эти диагностические данные могут быть другими, но принцип тот же. Полужирным цветным я выделил главное:
ACPI: PCI Interrupt 0000:06:02.0[A] -> GSI 18 (level, low) -> IRQ 18
saa7133[0]: found at 0000:06:02.0, rev: 240, irq: 18, latency: 32, mmio: 0xdfeff800
saa7133[0]: subsystem: 0000:4091, board: Beholder BeholdTV 409 FM [card=67,autodetected]
saa7133[0]: board init: gpio is c0c000
input: saa7134 IR (Beholder BeholdTV 4 as /class/input/input3
saa7133[0]: i2c eeprom 00: 00 00 91 40 54 20 00 00 00 00 00 00 00 00 00 01
saa7133[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
saa7133[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
tuner 1-0060: All bytes are equal. It is not a TEA5767
tuner 1-0060: chip found @ 0xc0 (saa7133[0])
tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
tda9887 1-0043: chip found @ 0x86 (saa7133[0])
saa7133[0]: registered device video0 [v4l2]
saa7133[0]: registered device vbi0
saa7133[0]: registered device radio0
rmmod saa7134Если у вас ядро версии 2.6.18 и выше, следует передать такие параметры:
modprobe saa7134 tuner=63 card=67
rmmod tda9887
modprobe tda9887 secam=d
chmod 777 /dev/video0
rmmod saa7134Что мы сказали модулю? Что у нас конкретный тюнер и карта (вторая строчка), и что мы живём в замечательной стране со стандартом телепередач SECAM (если картинка ч/б и с шумом - значит, вы поставили PAL, который есть стандарт для остального мира), и что
modprobe saa7134 tuner=63 card=67
rmmod tuner
modprobe tuner secam=d
chmod 777 /dev/video0
sudo chmod 777 /dev/video0Естественно, если у вас другой тюнер - вместо saa7134 надо поставить подходящий и
lspciвам в этом поможет. И вообще, о логах не стоит забывать, как и о том, что к ядру Linux, в разделе Documentation и подразделе video4linux содержится полный список тюнеров, поддерживаемых данной версией ядра. Дальше всё по описанию с дистрибутивным ядром - передача параметров модулю и установка софта.
./video4linux/CARDLIST.saa7134Это и есть номер карты - который мы передаём в команде modprobe saa7134 tuner=63 card=67
...
67 -> Beholder BeholdTV 409 FM [0000:4091]
...
tuner 1-0043: chip found @ 0x86 (saa7133[0])Стало быть, номер тюнера - 38 (это опять-таки для моего Бехолдера409). Это есть в файле CARDLIST.tuner:
tda9887 1-0043: tda988[5/6/7] found @ 0x43 (tuner)
tuner 1-0060: All bytes are equal. It is not a TEA5767
tuner 1-0060: chip found @ 0xc0 (saa7133[0])
tuner 1-0060: type set to 38 (Philips PAL/SECAM multi (FM1216ME MK3))
tuner=38 - Philips PAL/SECAM multi (FM1216ME MK3)Но этот номер должен сообщить драйвер тюнера.
aptitude install tvtimeЭто одна из лучших программ в своём роде (tvtime, xawtv, zapper). Лично мне показалась наиболее удобной программа tvtime - много настроек, грамотный интерфейс и куча возможностей.
tvtime-scanner --norm=SECAMкоторая пробежится по всем доступным диапазонам частот и поищет телеканалы. Выглядит это так:
Reading configuration from /etc/tvtime/tvtime.xmlПосле этого запускаем tvtime, и отключаем некоторые опции, правая кнопка мыши - Channel management:
Reading configuration from /home/penta4/.tvtime/tvtime.xml
Scanning using TV standard SECAM.
Scanning from 44,00 MHz to 958,00 MHz.
Found a channel at 59,50 MHz (58,25 - 60,50 MHz), adding to channel list.
Found a channel at 63,00 MHz (62,75 - 63,00 MHz), adding to channel list.
Found a channel at 77,50 MHz (77,25 - 77,50 MHz), adding to channel list.
Found a channel at 79,75 MHz (79,50 - 79,75 MHz), adding to channel list.
Found a channel at 85,50 MHz (84,25 - 86,50 MHz), adding to channel list.
Found a channel at 111,50 MHz (110,25 - 112,50 MHz), adding to channel list.
Имейте в виду, что ТВ Тюнеры (особенно внутренние), как правило, находят меньше каналов, чем обычные телевизоры, или с некоторыми шумами. Это связано с меньшей чувствительностью и большей подверженности наводкам и помехам внутри корпуса компьютера.В результате у вас в домашней директории появится каталог .tvtime, где будут прописаны все найдённые каналы. Дальше всё просто. Набираем tvtime и наслаждаемся результатом.
Материалы сайта «Записки дебианщика» написаны virens’ом и доступны на условиях лицензии Creative Commons Attribution-Non-Commercial-Share Alike 3.0 Unported License. Вы можете копировать, распространять, показывать эту работу, и создавать производные работы в некоммерческих целях на условиях:
1) обязательной ссылки на автора (virens, http://mydebianblog.blogspot.com/);
2) распространении любых производных работ на условиях этой же лицензии (ссылка на эту лицензию обязательна!).
Пожалуйста соблюдайте условия лицензии Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. Авторские права - Михаил Конник aka virens.