Выбор программного обеспечения
Выбор программного обеспечения (ПО) диктуется желаемым функционалом, а именно:
- Проигрывание медиа-файлов всех типов: аудио, видео и графика
- Поддержка проигрывания с удалённого устройства (пульта)
- Смешивание аудио-дорожек (диджейский пульт)
- Караоке
В качестве медиа-центра неплохо подходит проект XBMC (http://www.xbmc.org). В нём же реализован функционал караоке.
Т.к. XBMC больше предназначен для прямого использования, т.е. для непосредственного воспроизведения с компьютера на экран, то в качестве систем с удалённым доступом лучше подойдут системы, специально для этого предназначенные:
- Для предоставления содержимого (аудио, видео и графика) проигрывателям DLNA подойдёт проект “minidlna”
- Для запуска музыки с удалённой системы – проект “MPD”. “Patchfork” – для управления MPD-сервером по веб-интерфейсу, а “Cantata” – для полноценного управления
Альтернативный вариант показа текстов для караоке – проект “osdlyrics”, который умеет взаимодействовать с MPD.
Звуковой редактор “Audacity” может понадобиться в случае, если нужно создать “минусовку” из файла с вокалом.
В качестве виртуального диджейского пульта выбран проект Mixxx (http://www.mixxx.org).
Если этого не было сделано ранее, то музыкальную коллекцию необходимо упорядочить. Простого раскладывания файлов по директориям недостаточно – необходимо расставить метки (произвести тегирование). Для этой цели подходит проект “easytag”.
Для перекодировки аудио и видео файлов, если возникнет такая необходимость, подойдёт проект “ffmpeg”.
Таким образом, получается следующий список программных продуктов:
- xbmc
- minidlna
- mpd
- patchfork
- cantata
- osdlyrics
- audacity
- mixxx
- easytag
- ffmpeg
Установка ПО
Пример установки перечисленного ПО:
[orca@blizzard ~]$ sudo pacman -S xbmc [orca@blizzard ~]$ sudo pacman -S minidlna [orca@blizzard ~]$ sudo pacman -S mpd [orca@blizzard ~]$ sudo pacman -S mixxx [orca@blizzard ~]$ sudo pacman -S easytag [orca@blizzard ~]$ sudo pacman -S ffmpeg [orca@blizzard ~]$ cd /store/Install/AUR/ [orca@blizzard AUR]$ curl -o "patchfork-git.tar.gz"\ https://aur.archlinux.org/packages/pa/patchfork-git/patchfork-git.tar.gz [orca@blizzard AUR]$ tar -xvzf ./patchfork-git.tar.gz [orca@blizzard AUR]$ cd ./patchfork-git/ [orca@blizzard patchfork-git]$ makepkg -s [orca@blizzard patchfork-git]$ sudo pacman -U patchfork-git-20111122-1-x86_64.pkg.tar.xz [orca@blizzard patchfork-git]$ sudo cp patchfork.conf /etc/httpd/conf/extra/ [orca@blizzard patchfork-git]$ sudo cp -r ./src/patchfork /srv/http/ [orca@blizzard ~]$ cd /store/Install/AUR/ [orca@blizzard AUR]$ curl -o "cantata-qt.tar.gz" \ https://aur.archlinux.org/packages/ca/cantata-qt/cantata-qt.tar.gz [orca@blizzard AUR]$ tar -xvzf ./cantata-qt.tar.gz [orca@blizzard AUR]$ cd ./cantata-qt/ [orca@blizzard cantata-qt]$ makepkg -s [orca@blizzard cantata-qt]$ sudo pacman -U cantata-qt-1.2.2-1-x86_64.pkg.tar.xz [orca@blizzard ~]$ sudo pacman -S osdlyrics |
Настройка коллекции
Создать общую директорию (например “Media”), а в ней ещё три, с названиями по типу файлов, например: Audio, Graphics, Video. Даже если нечто похожее уже было ранее, то пересобрать коллекцию будет не лишним.
Для коллекции музыки проверенным способом является раскладывание файлов по директориям с названием исполнителей и, далее, с названиями альбомов. Для сборников музыки – отдельная директория, например “Collections”, и, далее, по жанрам.
Для файлов караоке создать отдельную директорию, например “Karaoke”, а в ней – директории с именами исполнителей, и уже туда записать файлы для караоке-песен. Эти файлы идут парой: музыкальный файл (т.н. “минусовка”) и файл с текстом в формате “lrc”. Имена файлов должны быть одинаковыми; отличаются только их расширения, например (директория ~/Media/Audio/Karaoke/Градский А/): “Как Молоды Мы Были.mp3” – файл фонограммы и “Как Молоды Мы Были.lrc” – файл с текстом. XBMC поддерживает неплохой перечень форматов музыкальных файлов, но нормальная работа с функцией “караоке” гарантирована только с файлами форматов “mp3” и “ogg”. Для текстовых файлов (lrc) – XBMC поддерживает русский язык только в кодировке UTF-8.
Для коллекции видео-файлов – по жанрам. Для графических файлов (Graphics) такой вариант – внутри две директории: Photos (Фотокарточки) и Images (Изображения). Строго говоря, изображения тоже могут быть фотографическими, но здесь смысл в том, чтобы в директорию Photos складывать именно свои фотоснимки. Сортировка здесь проста: под каждое событие создаётся директория <год>.<месяц>.<день>.<краткое описание события>. Директорию же с изображениями (Images) дробить по усмотрению, в зависимости от того, что уже есть в наличии.
Для звуковых файлов, метки которых записаны на русском языке в кодировке Windows-1251, необходимо выполнить следующее:
- Запустить easytag
- Перейти в меню “Установки”, а затем выбрать “Preferences…” (ALT+P)
- Открыть вкладку “Настройки тегов ID3”
- Выставить настройки следующим образом:
- Правила тегов ID3:
- Write ID3 tags in FLAC
- Удалить теги, если поля пусты
- Автоматически преобразовывать старые версии
- Use CRC2
- Character Set for writing ID3 tags:
- Записывать тег ID3v2 → ID3v2.4 → Unicode → UTF-8
- Записывать тег ID3v1.x → Кириллица (Windows-1251) → //TRANSLIT
- Character Set for reading ID3 tags
- Non-standard → Кириллица (Windows-1251)
- Правила тегов ID3:
- Нажать кнопку [OK]
- Открыть директорию с файлами, дождаться завершения сканирования (исправленные теги будут выделены красным)
- Выделить файлы и нажать кнопку [Сохранить]
Скорей всего, не только для русских описаний была использована кодировка Windows-1251, поэтому следует внимательно пройтись по всей коллекции музыкальных файлов и пересохранить их теги в кодировке UTF-8.
С помощью “easytag” заполнить недостающие метки, например:
- Выделить все файлы в одной директории/альбоме
- В панели редактирования тегов для текущего файла заполнить поля: Альбом, Жанр, Исполнитель
- В каждым из этих полей в контекстном меню выбрать “Записать это поле в теги выделенных файлов”
- Нажать кнопку [Сохранить]
В силу разнообразия форматов для видео-файлов, универсального рецепта их тегирования нет.
Настройка системы
К этому моменту всё необходимое ПО должно быть установлено и, что очень важно, коллекция должна быть собрана и организована.
Настройка MPD
Создать необходимые для сервера директории, отредактировать конфигурационный файл:
[orca@blizzard ~]$ sudo ln -s /store/Media/Audio /var/lib/mpd/music [orca@blizzard ~]$ sudo mkdir /var/log/mpd [orca@blizzard ~]$ sudo chown -R mpd /var/log/mpd [orca@blizzard ~]$ sudo chown -R mpd /var/lib/mpd [orca@blizzard ~]$ sudo vi /etc/mpd.conf user "mpd" group "audio" pid_file "/run/mpd/mpd.pid" db_file "/var/lib/mpd/mpd.db" state_file "/var/lib/mpd/mpdstate" log_file "/var/log/mpd/mpd.log" sticker_file "/var/lib/mpd/sticker.sql" playlist_directory "/var/lib/mpd/playlists" music_directory "/var/lib/mpd/music" gapless_mp3_playback "yes" volume_normalization "yes" max_command_list_size "16384" auto_update "yes" default_permissions "read,add,control" password "password@read,add,control,admin" bind_to_address "127.0.0.1" input { plugin "curl" } audio_output { type "alsa" name "My ALSA Device" device "default" mixer_type "software" } |
Запустить сервер mpd и проверить его работоспособность:
[orca@blizzard ~]$ sudo mpd <1> errno: Failed to open database file "/var/lib/mpd/mpd.db": No such file or directory [orca@blizzard ~]$ tail /var/log/mpd/mpd.log <2> |
- При первом запуске файла базы данных mpd нет, отсюда ошибка. Впоследствии запуск демона должен проходить без ошибок
- В журнале должны появиться сообщения о добавлении музыкальных файлов в базу данных mpd
Остаётся подключить patchfork к веб-серверу (предполагается, что установлен и работает Apache):
[orca@blizzard ~]$ sudo vi /etc/httpd/conf/httpd.conf ... Include conf/extra/patchfork.conf [orca@blizzard ~]$ sudo chown http /srv/http/patchfork/config [orca@blizzard ~]$ sudo systemctl restart httpd |
Открыть браузер и перейти по адресу: http://localhost/patchfork. На странице конфигурации в секции подключения к серверу MPD ввести значение поля “password” (устанавливалось директивой password в файле /etc/mpd.conf).
Patchfork неплохо подходит для управления сервером MPD, но функционал оставляет желать лучшего, поэтому, если есть необходимость более серьёзного управления, то следует использовать проект Cantanta, который требует отдельной установки на машину, с которой будет производиться управление. Это не совсем удобно, но есть и хорошая новость – Cantanta доступна в сборке под Windows и, не исключено, что это ПО можно собрать и для работы под Android.
Для автоматического запуска сервера MPD в момент загрузки ОС:
[orca@blizzard ~]$ sudo systemctl enable mpd.service |
Настройка xbmc
Запустить xbmc с командной строки, выполнить установку языка системы: раздел “SYSTEM” → “Settings” → “Appearance” → “International”.
Вернуться на домашнюю панель, выбрать раздел “ВИДЕО” и установить для него источник данных. Аналогичные действия выполнить с музыкальной коллекцией (раздел “МУЗЫКА”).
Интерфейс xbmc интуитивно понятен, поэтому описывать его в деталях нет смысла. А вот с настройкой функции “Караоке” следует немного повозиться. Во первых, необходимо сразу убедиться, что эта функция активна:
- Запустить xbmc с командной строки
- Перейти в раздел “СИСТЕМА”, затем “Настройки”, “Музыка” и “Караоке”
- Убедиться, что функция активна
- Настроить шрифт: начертание, размер, цвет
Вернуться на домашнюю панель, выбрать раздел “МУЗЫКА”, добавить источник данных “Караоке”, выбрать и поставить песню на воспроизведение, например “Как Молоды Мы Были.mp3”. Если звук есть, а текста нет, то скорей всего файл .lrc нуждается в перекодировке:
[orca@blizzard ~]$ cd ~/Media/Audio/ [orca@blizzard ~]$ file -bi ./Karaoke/Градский\ А/Как\ Молоды\ Мы\ Были.lrc text/plain; charset=iso-8859-1 |
Из отчёта видно, что данный файл закодирован в ISO-8859-1. Файл нужно перекодировать. Сначала проверка на одном файле:
[orca@blizzard ~]$ cd ./Karaoke/Градский\ А/ [orca@blizzard ~]$ iconv -f ISO-8859-1 -t UTF-8 ./Как\ Молоды\ Мы\ Были.lrc > \ ./Как\ Молоды\ Мы\ Были.lrc.txt |
После проверки стало понятно, что “file -bi” неверно определил кодировку файла. Пробуем с “cp1251”:
[orca@blizzard ~]$ iconv -f cp1251 -t UTF-8 ./Как\ Молоды\ Мы\ Были.lrc > \ ./Как\ Молоды\ Мы\ Были.lrc.txt |
Теперь всё в порядке, можно запустить перекодирование для всех файлов. Для это цели нужно создать и запустить следующий сценарий:
#!/usr/bin/bash myDir="$1"; while IFS='' read -r -d '' fname; do echo "Найден файл $fname"; recode -f cp1251..UTF-8 "$fname"; echo "Файл $fname перекодирован"; done < <(find "$myDir" -name '*.lrc' -print0 ); exit 0 |
В качестве аргумента этому сценарию передаётся директория с файлами караоке-песен.
Если необходимо перекодировать и файлы фонограмм, например “wma” в “mp3”, то:
find . -iname "*.wma" -execdir bash -c \ 'FILE="{}" NAME="${FILE##*/}" && \ echo "Работаю в ${PWD##*/} с ${NAME/.wma/} ..." && \ ffmpeg -loglevel quiet -i "$FILE" -ab 192k \ -metadata album="Караоке" -metadata title="${NAME/.wma/}" \ -metadata artist="${PWD##*/}" -metadata comment="LG DVD Karaoke 3000 v1.0" \ "${FILE/.wma/.mp3}"' \; |
Итак, как только коллекция будет собрана и будут расставлены все необходимые теги – можно создать “Медиатеку”:
- Открыть раздел “МУЗЫКА”, и далее “Файлы”
- Нажать [Добавить источник…]
- Нажать [Обзор], выбрать директорию с музыкальными файлами, нажать [OK]
- Если необходимо, то “Введите название медиаисточника”, нажать [OK]
- Выбрать появившийся медиаисточник и в его контекстном меню выбрать “Сканировать в медиатеку”
- Дождаться завершения сканирования
С этого момента, в разделе “МУЗЫКА” появятся фильтры-группировки по Исполнителям, Альбомам, Жанрам и т.п.
Для создания печатного варианта каталога караоке-песен:
- Открыть раздел “СИСТЕМА”, и далее “Настройки”
- Выбрать “Музыка”, и далее “Караоке”
- Выбрать “Экспорт текста караоке…” и тип файла (рекомендуется CSV)
- Выбрать директорию в профиле xbmc, например “special://masterprofile/library”, т.е. “~/.xbmc/userdata/library” и нажать [OK]
- В этой директории должен появиться файл karaoke.csv, который можно открыть в программе электронной таблицы и отредактировать его на своё усмотрение
- Отредактированный файл с таблицей можно оформить на свой вкус и распечатать
Если необходимо расставить только теги файлам фонограмм, то:
- Запустить easytag
- Выбрать файлы без тегов
- Выбрать меню “Сканер”, и, далее “Fill Tags…”
- В поле “Заполнить тег” записать: %a – %b/%t
- Нажать кнопку “Открыть окно сканера / Сканировать выбранные файлы”
- Закрыть окно сканера
- Нажать кнопку [Сохранить]
Другие интересные возможности изменения настроек xbmc:
- Директория /usr/share/xbmc/media/Fonts содержит шрифты, используемые xbmc
- В директории ~/.xbmc/userdata можно создать файл “advancedsettings.xml” с дополнительными настройками (подробнее здесь: http://wiki.xbmc.org/index.php?title=AdvancedSettings.xml)
Например, чтобы в процессе проигрывания караоке-песни на экране отображался видеоряд, нужно выполнить следующее:
- Создать файл “advancedsettings.xml”
- Создать директорию и записать туда файл фонового видеоряда
- Перезапустить xbmc
Пример файла “advancedsettings.xml”:
<advancedsettings> <karaoke> <nocdgbackground>false</nocdgbackground> <defaultbackground type="video" path="special://masterprofile/karaoke/videobg.avi"/> <nextsongpopuptime>2.0</nextsongpopuptime> </karaoke> </advancedsettings> |
Путь “special://masterprofile/” это “/.xbmc/userdata”. Т.е. видеофайл “videobg.avi” должен находиться в “/.xbmc/userdata/karaoke”. Следует отметить, что: во-первых видеофайл должен соответствовать формату экрана воспроизведения, во-вторых – после каждой новой песни видеокартинка будет повторяться.
Поддержка KAR-файлов
Очень много коллекций караоке собрано из файлов “KAR”, которые, на самом деле, являются файлами MIDI с дополнительной текстовой дорожкой. XBMC поддерживает MIDI с помощью проигрывателя “timidity”. Для того, чтобы заработала поддержка MIDI необходимо: создать служебную директорию и записать туда подходящий звуковой шрифт (SoundFont):
[orca@blizzard ~]$ mkdir ~/.xbmc/userdata/timidity [orca@blizzard Downloads]$ cp SGM-V2.01.sf2 ~/.xbmc/userdata/timidity/soundfont.sf2 |
Звуковой шрифт SGM-V2.01.sf2 загружен отсюда: http://www.geocities.jp/shansoundfont.
О более точных настройках поддержки MIDI читать здесь: http://wiki.xbmc.org/index.php?title=HOW-TO:Setup_XBMC_for_karaoke#MIDI_playback.
Создание файлов караоке
Файлы для караоке отлично извлекаются из фирменных дисков LG, Samsung и BBK с помощью программы karaokediskeunpacker (http://sourceforge.net/projects/karaokediskeunp/). Образы же самих дисков можно найти в Интернете (речь именно о дисках с тысячами песен).
В ситуации, когда не удаётся найти подходящей пары файлов (“минусовка” и текст) для любимой песни, можно создать её самостоятельно. Решается это в два этапа:
- Найти или создать “минусовку”
- Найти/напечатать текст песни и оформить его в виде файла “lrc”
Фонограмму можно попробовать создать из музыкального файла с вокалом артиста. Хороший результат не гарантирован, но попытаться стоит. Техника удаления вокала основана на складывании инвертированных левого и правого каналов звуковой дорожки (мелодия должна быть стереофонической):
- Создать копию файла с вокалом
- Запустить “Audacity”
- Открыть файл
- Выбрать меню “Эффекты”, затем “Plugins” и “Vocal Remover (for center-panned vocals)”
- Прослушать песню. Если результат устраивает, то сохранить файл (“Экспортировать…”). Если нет, то поэкспериментировать в ручном режиме (подробнее здесь: http://manual.audacityteam.org/o/man/tutorial_vocal_removal_and_isolation.html)
Для создания lrc-файла подойдёт любой текстовый редактор с поддержкой кодировки UTF-8. На данный момент существует три варианта формата lrc-файла: простой (simple), простой расширенный (simple extended) и улучшенный (enhanced). В простом формате используется одна временная метка на строку текста, в расширенном формате появились теги “M” и “F” для обозначения мужской и женской партий соответственно (поддерживается ограниченным числом проигрывателей), в улучшенном формате временных меток в строке может быть несколько.
Заголовок каждого из форматов может содержать следующий перечень служебных меток:
- [ar:Имя исполнителя]
- [al:Название альбома]
- [ti:Название песни]
- [au:Автор песни]
- [length:Длительность песни mm:ss]
- [by:Автор файла LRC]
- [offset:Сдвиг текста относительно фонограммы в мс. +/-]
После заголовка идёт текст песни. Несколько советов:
- Строку текста длиной больше чем 25 символов лучше разбить на две строки
- После временных меток пробелов быть не должно
- Для сбора временных меток можно воспользоваться “Audacity”. Поставить оригинал песни (с вокалом) и в каждом начале строки получившегося текста ставить метку (Ctrl+M)
- Рекомендуется собирать lrc-файл поэтапно (по куплетам)
- По завершению этапа, выбрать меню “Дорожки”, затем “Изменить дорожки” и “Экспортировать”
Пример:
[ar: Звери] [al: Дальше (2008)] [ti: Я с тобой] [au: Роман Белык] [length: 3:56] [by: Леонид Хрисанфов] [00:07.10]Мир такой красивый и [00:08.79]Такой замечательный [00:10.41]Я сижу напротив - как же [00:12.10]Ты привлекательна [00:13.76]Ты в моих глазах и мир тихо<00:15.42>нько сужается [00:17.12]Утро, солнце, кофе и сейч<00:18.76>ас все решается [00:20.41]Я к тебе подсяду [00:22.13]Я спрошу: «Ты одна?» [00:23.86]Ты улыбнешься и [00:25.46]Скажешь мне: «Да» [00:27.12]Ты улыбнешься и [00:28.81]Cкажешь мне: «Да» [00:30.45]Ты улыбнешься и [00:32.11]Скажешь мне: «Да»! [00:33.81]Если ты ска<00:35.41>жешь "Да" [00:37.12]То все вокру<00:38.76>г неважно [00:40.42]Все только дл<00:42.08>я тебя [00:43.72]Для одно<00:45.37>й [00:47.13]Если ты ска<00:48.78>жешь "Да" [00:50.44]Поверь я бу<00:52.14>ду счастлив [00:53.79]Ты прекраснее все<00:55.36>х и я с тобо<00:57.15>й!
Можно немного упростить задачу, воспользовавшись рецептом отсюда: http://wiki.xbmc.org/index.php?title=HOW-TO:Create_LRC_karaoke_lyrics_files#Pasting_lyrics_into_the_editor.
Промежуточный итог
Итак, на данный момент, получилась довольно неплохая система для проигрывания медиа-файлов с функцией Караоке, а также музыкальный сервер, которым можно управлять по сети с удалённой системы. В следующей части речь пойдёт о технологии “Digital Living Network Alliance” (DLNA).
Продолжение следует…