Mediatomb настройка: Mediatomb — Пингвиньи радости
Консольное управление DLNA-сервером Mediatomb / Хабр
Уже давно в качестве домашнего DLNA-сервера использую Mediatomb. Это очень надежный и легкий сервер, который позволяет получить доступ к своему видео-аудио-фото архиву с любого устройства, поддерживающего DLNA.
Mediatomb обладает интерактивным WEB-интерфейсом, посредством которого можно добавлять под контроль указанного сервера каталоги с медиа-данными. Однако, мне понадобилась возможность не интерактивного, а консольного управления этим сервером, в частности появилась необходимость добавлять и удалять папки с медиа-информацией. К сожалению, никаких штатных средств для этих операций системой не предусмотрено, поэтому был создан небольшой скрипт, на основе CURL, который, понятно, имитирует работу пользователя с браузером и собственно позволил мне достичь нужного результата.
Возможно, проделанная работа может потребоваться кому-нибудь еще, поэтому решил воспроизвести ее на Хабре.
Собственно, начальные условия, а именно:
- установка самого Mediatomb;
- настройка Mediatomb для работы с БД MySQL в качестве хранилища
здесь я описывать не буду, а перейду сразу к процедуре создания скрипта на bash, который будет управлять медиа-каталогами, контролируемыми Mediatomb.
Создание дополнительного пользователя MYSQL для получения доступа к БД Mediatomb
На самом деле в добавлении нового пользователя в MYSQL особой необходимости нет, можно воспользоваться реквизитами пользователя, указанными в конфигурационном файле /etc/mediatomb/config.xml:
<mysql enabled="yes">
<host>localhost</host>
<username>mediatomb</username>
<database>mediatomb</database>
</mysql>
Однако существующий пользователь mediatomb не имеет пароля и его доступ ограничен только с localhost, поэтому для скрипта, который будет работать на хосте даже отличном от того, где размещен сам Mediatomb, создадим в БД MySQL mediatomb пользователя mt с паролем mt:
сreate user 'mt'@'%' identified by 'mt';
grant select on mediatomb.* to 'mt'@'%';
Добавление каталога в библиотеку Mediatomb
При добавлении каталога с включенным рекурсивным обходом в медиа-библиотеку Mediatomb браузер отправляет на сервер следующий запрос:
http://<mediatomb_ip>:50500/content/interface?req_type=autoscan&return_type=xml&sid=33a2c429c3c4c82e03baca9564f05908&action=as_edit_save&object_id=2f6d6e742f566964656f&from_fs=1&scan_mode=inotify&scan_level=full&recursive=true&hidden=true&cancel=Cancel
Как видно, необходимые атрибуты запроса, которые мы как то должны вычислить для добавления нашего каталога следующие:
- Идентификатор cессии: sid=33a2c429c3c4c82e03baca9564f05908
- Идентификатор добавляемого объекта: object_id=2f6d6e742f566964656f
Идентификатор сессии, оказалось получить несложно. При первом входе на главную страницу Mediatomb, браузер посылает следующий запрос:
http://<mediatomb_ip>:50500/content/interface?req_type=auth&return_type=xml&sid=null&action=get_sid
и получает ответ:
<?xml version="1.0" encoding="UTF-8"?>
<root sid_was_valid="0" sid="a8ffd95c341aa410a44afaeaf354e105" logged_in="1" success="1"/>
Таким образом, получаем строку с sid, попутно освобождая ее от кавычек следующим образом:
sid=`curl -s "http://<mediatomb_ip>:50500/content/interface?req_type=auth&return_type=xml&sid=null&action=get_sid" | grep sid | awk '{print $3}' | sed -e 's/\"//g'`
С идентификатором объекта немного посложнее, оказалось что строка 2f6d6e742f566964656f является простой последовательностью байт строки с путем к добавляемому объекту (файлу и каталогу), преобразованных в шестнадцатеричный вид. Таким образом, наша шестнадцатеричная строка — это просто строка /mnt/Video (каталог, который я как раз добавлял в Mediatomb).
Т.е. для получения object_Id, к примеру, из второго параметра bash-скрипта можно воспользоваться следующим алгоритмом:
catalog=$2
oid=""
for ((i=0;$i<${#catalog};i=$(($i+1))))
do
sym=`printf '%0.2x' "'${catalog:$i:1}"`
oid=$oid$sym
done
Ну и собирая все выше сказанное в CURL-запрос получаем команду, добавляющую каталог /mnt/Video в библиотеку MediaTomb:
curl -s -o /dev/null "http://<mediatomb_ip>:50500/content/interface?req_type=autoscan&return_type=xml&$sid&action=as_edit_save&object_id=$oid&from_fs=1&scan_mode=inotify&scan_level=full&recursive=true&hidden=true&cancel=Cancel"
Удаление каталога из библиотеки Mediatomb
Удаление каталога из библиотеки Mediatomb происходит аналогично добавлению:
http://<mediatomb_ip>:50500/content/interface?req_type=remove&return_type=xml&sid=ea2d65d2dbc72d96ed1ed37dc1d2bbf6&object_id=686994&all=0&updates=check
Однако object_id здесь — это уже идентификатор нашего ресурса, который мы хотим удалить, в базе данных MYSQL. Достать object_id, например для каталога /mnt/Video, из БД можно следующим SQL-запросом:
select id from mt_cds_object where location="D/mnt/Video"
Таким образом, получение идентификатора каталога из 2го аргумента bash-скрипта будет выглядеть как-то так:
catalog=$2
oid=`echo "select id from mt_cds_object where location=\"D$catalog\"" | mysql mediatomb | grep -v id`
И снова CURL-запрос, уже для удаления каталога из медиа-библиотеки:
curl -s -o /dev/null "http://<meditomb_ip>:50500/content/interface?req_type=remove&return_type=xml&$sid&object_id=$oid&all=0&updates=check"
Ну вот пожалуй и все. Напоследок приведу полный текст скрипта mtomb, принимающий два параметра
mtomb <add | del> <Путь к каталогу>
КОД BASH:
#!/bin/bash
cmd=$1
catalog=$2
mediatomb_ip=192.168.7.10
mtombdb="mysql -h $mediatomb_ip mediatomb -umt -pmt"
# Удаляем последний слэш в полном пути к каталогу если он есть
if [ "${catalog:(-1):1}" = "/" ];
then
catalog=${catalog:0:(-1)}
fi
if [ "$cmd" = "add" ];
then
echo "Try add $catalog in mediatomb"
# Получаем object_id (переводим путь в 16-ричную строку)
oid=""
for ((i=0;$i<${#catalog};i=$(($i+1))))
do
sym=`printf '%0.2x' "'${catalog:$i:1}"`
oid=$oid$sym
done
# Получаем SID (Session ID)
sid=`curl -s "http://$mediatomb_ip:50500/content/interface?req_type=auth&return_type=xml&sid=null&action=get_sid" | grep sid | awk '{print $3}' | sed -e 's/\"//g'`
# Добавляем папку
if [ -a "$catalog" ];
then
curl -s -o /dev/null "http://$mediatomb_ip:50500/content/interface?req_type=autoscan&return_type=xml&$sid&action=as_edit_save&object_id=$oid&from_fs=1&scan_mode=inotify&scan_level=full&recursive=true&hidden=true&cancel=Cancel"
else
echo "Nothing to add..."
fi
fi
if [ "$cmd" = "del" ];
then
echo "Try delete $catalog from mediatomb"
# Получаем SID (Session ID)
sid=`curl -s "http://$mediatomb_ip:50500/content/interface?req_type=auth&return_type=xml&sid=null&action=get_sid" | grep sid | awk '{print $3}' | sed -e 's/\"//g'`
# Получаем идентификатор папки которую нужно удалить (object_id)
oid=`echo "select id from mt_cds_object where location=\"D$catalog\"" | $mtombdb | grep -v id`
# Удаляем папку
if [ -n "$oid" ];
then
curl -s -o /dev/null "http://$mediatomb_ip:50500/content/interface?req_type=remove&return_type=xml&$sid&object_id=$oid&all=0&updates=check"
else
echo "Nothing to delete..."
fi
fi
Ссылка на GIST: https://gist.github.com/mitshel/6b140467182c3377c000
Mediatomb и IP TV | open-suse.ru
Решил поделится опытом. Моя первая статья, так что сильно не критикуйте))
Что такое DLNA и зачем оно надо.
DLNA-протокол это спецификация сетевых протоколов позволяющая развернуть в локальной сети медиа-сервер. DLNA-сервер создаёт вид сетевых ресурсов понятный для DLNA-клиентов и позволяющий им осуществлять их просмотр. Медиа-ресурсы транслируемые DLNA-сервером это видео, музыка, фотографии. DLNA-сервер может транслировать файлы как с собственного жёсткого диска так и из сети в том числе из интернет. DLNA-сервер может отдавать ресурсы DLNA-клиентам «как есть» или осуществлять их транскодирование на лету приводя к формату понятному DLNA-клиентам. Таким образом транскодирование расширяет возможности DLNA-клиентов по воспроизведению контента.
Нам известны следующие программы позволяющие создать dlna-сервер в linux
Mediatomb — dlna-сервер с широкими возможностями
Minidlna — небольшая, простая в настройке программа dlna-сервер
Ps3 — программа позволяющая создать dlna-сервер с транскодированием видео на лету
Rygel — dlna-сервер поддерживаемый проектом Gnome
uShare — dlna-сервер, сайт проекта
Программы создающие dlna-сервер в windows
Windows Media Player — проигрыватель и dlna-сервер
DLNA-клиенты — это сетевые медиаплееры, телевизоры («современных» поколений).
Пакет Mediatomb позволяет развернуть в сети DLNA-сервер с поддержкой воспроизведения медиа-файлов на DLNA-клиенте, в том числе с возможностью транскодирования на лету.
Официальный сайт проекта http://mediatomb.cc/.
Установка
Пакет есть в дистрибутиве поставки.
Для установки пакета
• в командной строке: следует выполнить команду # zipper in mediatomb
• в графическом режиме: воспользоваться специализированной программой управления пакетами.
По окончании установки медиа-сервер Mediatomb автоматически стартует.
Часто используемые команды:
# /etc/init.d/mediatomb restart — перезапуск сервера
# tail /var/log/mediatomb.log — просмотр последних сообщений сервера
# cat /var/log/mediatomb.log | egrep -is error — просмотр ошибок в работе
Для начала использования программу необходимо настроить.
Файл конфигурации
Файл конфигурации медиа-сервера
• указывается при старте в командной строке # mediatomb —config <ФАЙЛ_КОНФИГУРАЦИИ>
• если не указан в командной строке, то ищется в домашнем каталоге пользователя ~/.mediatomb/config.xml
• если отсутствует в домашнем каталоге, то используется общесистемный /etc/mediatomb/config.xml
Далее по тексту, если не указано иное, предполагается что Файлом конфигурации называется общесистемный файл конфигурации /etc/mediatomb/config.xml. Для его редактирования требуется получение прав суперпользователя.
Настройка
Для включения автозапуска пакета при старте системы
• устанавливаем опции в файле /etc/mediatomb.conf:
## Network interface on which the server will run, you need to edit this!
MT_INTERFACE=»eth2″ интерфейс на котором работает сервер
## MediaTomb will be started on port 50500
MT_PORT=»50500″ порт по которому доступен web интерфейс сервера.
• перезапускаем медиа-сервер
• Для правильной работы сервера в фаерволе необходимо открыть порты:
• UDP/TCP — 50500;
• TCP — 50001, 50002;
• UDP – 1900.
Наполнение сервера
Для начала использования медиа-сервера его необходимо наполнить контентом — добавить в базу данных программы файлы которые будет демонстрировать Dlna-сервер.
Для добавления медиа-файлов через веб-интерфейс
• открываем доступ пользователю (группе) Mediatomb к ресурсам с медиа-файлами
• открываем панель управления dlna-сервером через web-интерфейс: для этого в веб-браузере открываем URL http://localhost:50500/ (должен быть установлен www-сервере например apache2)
• нажимая кнопку «плюс» добавляем каталоги и файлы на вкладке «Filesystem»
Для добавления медиа-файлов через командную строку (? проверить)
• выполняем команду
# mediatomb -a <ПУТЬ>
Русские буквы в именах файлах
При наполнении базы Mediatomb и использовании в именах медиа-файлов русских букв может возникнуть ошибка в логе программы — could not be converted to new encoding: invalid character sequence. В этом случае «дефектные» файлы в плей-листе сервера будут отображаться знаками вопроса. В связи с тем, что некоторые русские буквы визуально не отличаются от английских и могут случайно попасть в имя любого файла возникает необходимость их правильного отображения.
Для правильного показа имён медиа-файлов написанных на русском языке
• устанавливаем кодировку по умолчанию в нашей ОС UTF-8
для проверки кодировки выполняем команду
# locale
LANG=ru_RU.UTF-8
LC_CTYPE=»ru_RU.UTF-8″
LC_NUMERIC=»ru_RU.UTF-8″
LC_TIME=»ru_RU.UTF-8″
LC_COLLATE=»ru_RU.UTF-8″
LC_MONETARY=»ru_RU.UTF-8″
LC_MESSAGES=»ru_RU.UTF-8″
LC_PAPER=»ru_RU.UTF-8″
LC_NAME=»ru_RU.UTF-8″
LC_ADDRESS=»ru_RU.UTF-8″
LC_TELEPHONE=»ru_RU.UTF-8″
LC_MEASUREMENT=»ru_RU.UTF-8″
LC_IDENTIFICATION=»ru_RU.UTF-8″
LC_ALL=
• редактируем секцию <import> в файле конфигурации
<import hidden-files=»yes»>
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>
…
</import>
• очищаем базу со списком добавленных медиа-файлов, например в веб-интерфейсе управления удаляя все размещённые там файлы и папки
• добавляем медиа-контент как описано выше.
Наблюдаем правильное отображение имён файлов на русском языке
Переключение на базу MySQL
При установке по умолчанию пакет Mediatomb использует хранение информации о медиа-файлах в хранилище в формате sqlite3. При использовании данного движка для поддержки кириллицы в именах воспроизводимых файлов требуются дополнительные усилия по настройке. Кроме того следует учитывать что у данного движка имеются ограничения по размеру базы. В связи с этим переключение работы медиа-сервера на использование движка mysql становиться вполне оправданным.
Для переключения медиа-сервера на использование mysql
• устанавливаем mysql.
• редактируем секцию <storage> в файле конфигурации
<storage>
<sqlite3 enabled=»no»>
<database-file>mediatomb.db</database-file>
</sqlite3>
<mysql enabled=»yes»>
<host>localhost</host>
<username>mediatomb</username>
<database>mediatomb</database>
</mysql>
</storage>
• создаём базу и пользователя mysql
вводим в командной строке от имени root команды
# mysql -uroot -p
Enter password:
mysql> CREATE DATABASE `mediatomb` CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON mediatomb.* TO mediatomb@localhost;
в примере создана mysql-база mediatomb и пользователь mediatomb со всеми привилегиями и возможностью доступа к базе без пароля
• создаём таблицы в базе
# mysql -p mediatomb </usr/share/mediatomb/mysql.sql
• перезапускаем медиа-сервер
Создание скрипта-транскодера
В целях обеспечения читаемости файла конфигурации Mediatomb, облегчения процесса отладки транскодирования, исключения необходимости перезапускать DLNA-сервер при осуществлении его настройки может быть удобно переместить функцию транскодирования во внешний скрипт.
Для создания скрипта-транскодера
• создаём файл /usr/local/bin/transcoder
• делаем скрипт выполняемым и обеспечиваем его доступность пользователю mediatomb
• заменяем в файле конфигурации
строку <transcoding enabled=»no»>
на <transcoding enabled=»yes»>
• добавляем секцию video-generic
<profile name=»video-generic» enabled=»yes» type=»external»>
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command=»/usr/local/bin/transcoder» arguments=»%in %out»/>
<buffer size=»256000000″ chunk-size=»26214″ fill-size=»52428″/>
</profile>\
в секции <mimetype-profile-mappings> файла конфигурации для всех файлов требующих транскодирования указываем профиль «video-generic»
• перезапускаем медиа-сервер
Внимание!
При осуществлении транскодирования Mediatomb выделяет буфер и организует способ работы агента с ним. Набор правил работы с буфером устанавливается для каждого профиля транскодирования после ключевого слова <buffer size. В зависимости от размера памяти, мощности процессора, желаемого поведения Mediatomb эти правила могут быть изменены. Например на следующие
<buffer size=»256000000″ chunk-size=»26214″ fill-size=»52428″/>
где параметры
size=»256000000″ — устанавливает общий размер буфера для выборки входного потока, теоретически чем больше тем лучше
chunk-size=»26214″ — задаёт размер куска которыми передаётся входной поток из буфера агенту, чем меньше тем плавнее воспроизведение, но слишком маленькие могут наоборот замедлить
fill-size=»52428″ — размер данных в буфере когда будет отдан первый кусок chunk-size, чем меньше тем быстрее будет получено воспроизведение на dlna-клиенте
Воспроизведение потокового видео
(Не претендуя ни на точность ни на верность будем считать что) Потоковое видео это видео «не имеющее конца» на момент начала его воспроизведения. Например это воспроизведение интернет-ТВ.
Для настройки ретрансляции телеканала
• регистрируем соответствующее расширение и профиль транскодирования, Для этого в файл конфигурации добавляем строки
в секцию
<extension-mimetype ignore-unknown=»no»>
<map from=»tv» to=»»video/tv-avi»/>
в секцию <mimetype-contenttype>
<treat mimetype=»video/tv-avi» as=»tv»/>
в секцию <mimetype-profile-mappings>
<transcode mimetype=»video/tv-avi» using=»video-generic»/>
• приводим секцию video-generic файла конфигурации к следующему виду
<profile name=»video-generic» enabled=»yes» type=»external»>
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command=»/usr/local/bin/transcoder» arguments=»%in %out»/>
<buffer size=»256000000″ chunk-size=»26214″ fill-size=»52428″/>
</profile>\
• создаём в доступном для ‘Mediatomb месте например файл с именем <Телеканал “Россия К”.tv> содержащий строку-url
http://178.49.8.54:1234/udp/239.1.11.3:1234
• создаём скрипт-транскодер/
Для просмотра роликов
• активизируем DLNA-клиента (телевизор или программу vlc)
• выбираем файл с расширением .tv
• просматриваем телеканал
P.S. Могут так же понадобиться пакеты ffmpeg, lame, vlc, MPlayer.
P.S.S. Так как, по непонятным мне причинам, тут нельзя прикреплять файлы, то скрипт конвертирования можно скачать:
https://docs.google.com/open?id=0B-_hTZxUUPMPSUNhVll4RkpoQjg
Материал взят с http://nikols.dyndns.org/sysadmin/index.php/Mediatomb
Установка DLNA сервера mediatomb — jnotes.ru
Задача стоит в том, чтобы проигрывать видео (а также смотреть фото и слушать музыку) на TV без использования флешки.
mediatomb — единственный, кто когда-то давно смог проиграть мне практически все форматы видео. Вот по старой памяти я его еще раз и подружу со стареньким TV Samsung 5 серии.
Установка проста до безобразия:# apt-get install mediatomb
После установки можно зайти на http://localhost:49152/ и добавтить директории, доступные для просмотра. Но перед этим немного подправить конфиг, распологающийся в /etc/mediatomb/config.xml
Секция ui отвечает за доступ к web интерфейсу.
Привожу ее к виду:
<ui enabled="yes" show-tooltips="yes"> <accounts enabled="no" session-timeout="30"> <account user="mediatomb" password="mediatomb"/> </accounts> </ui>
Для телевизоров Samsung надо добавить custom headers.
Выкладываю полный конфиг, отметил места, где я внес изменения:
<?xml version="1.0" encoding="UTF-8"?> <config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd"> <server> <ui enabled="yes" show-tooltips="yes"> <accounts enabled="no" session-timeout="30"> <account user="mediatomb" password="mediatomb"/> </accounts> </ui> <name>MediaTomb</name> <udn>uuid:4d943a10-cf0e-4c9b-98f8-08eaa178b0c7</udn> <home>/var/lib/mediatomb</home> <webroot>/usr/share/mediatomb/web</webroot> <storage caching="yes"> <sqlite3 enabled="yes"> <database-file>mediatomb.db</database-file> </sqlite3> <mysql enabled="no"> <host>localhost</host> <username>mediatomb</username> <database>mediatomb</database> </mysql> </storage> <protocolInfo extend="yes"/> <custom-http-headers> <add header="transferMode.dlna.org: Streaming"/> <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=017000 00000000000000000000000000"/> </custom-http-headers> <extended-runtime-options> <ffmpegthumbnailer enabled="no"> <thumbnail-size>128</thumbnail-size> <seek-percentage>5</seek-percentage> <filmstrip-overlay>yes</filmstrip-overlay> <workaround-bugs>no</workaround-bugs> </ffmpegthumbnailer> <mark-played-items enabled="no" suppress-cds-updates="yes"> <string mode="prepend">*</string> </mark-played-items> </extended-runtime-options> </server> <import hidden-files="no"> <scripting script-charset="UTF-8"> <common-script>/usr/share/mediatomb/js/common.js</common-script> <playlist-script>/usr/share/mediatomb/js/playlists.js</playlist-script> <virtual-layout type="builtin"> <import-script>/usr/share/mediatomb/js/import.js</import-script> <dvd-script>/usr/share/mediatomb/js/import-dvd.js</dvd-script> </virtual-layout> </scripting> <mappings> <extension-mimetype ignore-unknown="no"> <map from="mp3" to="audio/mpeg"/> <map from="ogg" to="application/ogg"/> <map from="asf" to="video/x-ms-asf"/> <map from="asx" to="video/x-ms-asf"/> <map from="wma" to="audio/x-ms-wma"/> <map from="wax" to="audio/x-ms-wax"/> <map from="wmv" to="video/x-ms-wmv"/> <map from="wvx" to="video/x-ms-wvx"/> <map from="wm" to="video/x-ms-wm"/> <map from="wmx" to="video/x-ms-wmx"/> <map from="m3u" to="audio/x-mpegurl"/> <map from="pls" to="audio/x-scpls"/> <map from="flv" to="video/x-flv"/> <map from="mkv" to="video/x-matroska"/> <map from="mka" to="audio/x-matroska"/> <map from="avi" to="video/mpeg"/> <map from="mkv" to="video/mpeg"/> </extension-mimetype> <mimetype-upnpclass> <map from="audio/*" to="object.item.audioItem.musicTrack"/> <map from="video/*" to="object.item.videoItem"/> <map from="image/*" to="object.item.imageItem"/> <map from="application/ogg" to="object.item.audioItem.musicTrack"/> </mimetype-upnpclass> <mimetype-contenttype> <treat mimetype="audio/mpeg" as="mp3"/> <treat mimetype="application/ogg" as="ogg"/> <treat mimetype="audio/x-flac" as="flac"/> <treat mimetype="image/jpeg" as="jpg"/> <treat mimetype="audio/x-mpegurl" as="playlist"/> <treat mimetype="audio/x-scpls" as="playlist"/> <treat mimetype="audio/x-wav" as="pcm"/> <treat mimetype="audio/L16" as="pcm"/> <treat mimetype="video/x-msvideo" as="avi"/> <treat mimetype="video/mp4" as="mp4"/> <treat mimetype="audio/mp4" as="mp4"/> <treat mimetype="application/x-iso9660" as="dvd"/> <treat mimetype="application/x-iso9660-image" as="dvd"/> <treat mimetype="video/x-matroska" as="mkv"/> <treat mimetype="audio/x-matroska" as="mka"/> </mimetype-contenttype> </mappings> <online-content><!-- Make sure to setup a transcoding profile for flv --> <YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="flv" hd="no"> <favorites user="mediatomb"/> <standardfeed feed="most_viewed" time-range="today"/> <playlists user="mediatomb"/> <uploads user="mediatomb"/> <standardfeed feed="recently_featured" time-range="today"/> </YouTube> <Weborama enabled="no" refresh="28800" update-at-start="no"> <playlist name="Active" type="playlist" mood="active"/> <playlist name="Metal" type="playlist"> <filter> <genres>metal</genres> </filter> </playlist> </Weborama> <AppleTrailers enabled="no" refresh="43200" update-at-start="no" resolution="640"/> </online-content> </import> <transcoding enabled="no"> <mimetype-profile-mappings> <transcode mimetype="video/x-flv" using="vlcmpeg"/> <transcode mimetype="application/ogg" using="vlcmpeg"/> <transcode mimetype="application/ogg" using="oggflac2raw"/> <transcode mimetype="audio/x-flac" using="oggflac2raw"/> </mimetype-profile-mappings> <profiles> <profile name="oggflac2raw" enabled="no" type="external"> <mimetype>audio/L16</mimetype> <accept-url>no</accept-url> <first-resource>yes</first-resource> <accept-ogg-theora>no</accept-ogg-theora> <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/> <buffer size="1048576" chunk-size="131072" fill-size="262144"/> </profile> <profile name="vlcmpeg" enabled="no" type="external"> <mimetype>video/mpeg</mimetype> <accept-url>yes</accept-url> <first-resource>yes</first-resource> <accept-ogg-theora>yes</accept-ogg-theora> <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/> <buffer size="14400000" chunk-size="512000" fill-size="120000"/> </profile> </profiles> </transcoding> </config>
Судя по документации и конфигу он предлягает неплохие возможности по перекодированию контента. Но мне в этом нужды не было.
Собрание полезных заметок Shirrma: Mediatomb
Все таки транскодирование — это вещь! Экономит кучу времени и нервов! Вы просто перестаете думать о том, в каком формате у вас фильм и точно знаете, что он запустится на вашем любимом телевизоре! Поэтому сегодня мы настроим dlna-сервер Mediatomb на FreeBSD для вашего медиа-архива. Статья больше для себя, что бы не забыть.
Официальный сайт проекта — http://mediatomb.cc. Так же там есть русскоязычный форум. Поэтому если появятся вопросы, здесь их помогут быстро решить.
Ставим из портов
# cd /usr/ports/net/mediatomb
# make install clean
Прописываем автозапуск, добавляем в /etc/rc.conf
mediatomb_enable=»YES»
mediatomb_flags=»-i 192.168.25.1″
Настраиваем, редактируем конфигурационный файл
/usr/local/etc/mediatomb/config.xml
Полную справку по всем опциям настройки можно посмотреть тут.
1) Меняем порт для веб-интерфеса (по умолчанию 49152), в секции
<port>49153</port>
2) Включаем доступ к web-интерфесу по логин/паролю.
<ui enabled=»yes» show-tooltips=»yes»>
<accounts enabled=»yes» session-timeout=»30″>
<account user=»user_name» password=»password«/>
</accounts>
</ui>
3) Меняем название медиасервера
<name>Name_Server</name>
4) Написано, что это нужно включить для PlayStation 3, но без этого у меня не заработала перемотка на телевизоре LG.
<protocolInfo extend=»yes»>5) Поддержка русских названий, при условии, что у вас локаль UTF-8 (как это сделать здесь)
<import hidden-files=»no»>6) Добавляем недостающие форматы
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<playlist-charset>UTF-8</playlist-charset>
…
</import>
<extension-mimetype ignore-unknown=»yes»>7) Включаем транскодирование
<map from=»mkv» to=»video/x-msvideo»/>
<map from=»mka» to=»audio/x-msaudio»/>
<map from=»mp3″ to=»audio/mpeg»/>
<map from=»ts» to=»video/mpeg»/>
<map from=»mp4″ to=»video/mpeg»/>
<map from=»jpg» to=»image/jpeg»/>
<map from=»jpeg» to=»image/jpeg»/>
<map from=»avi» to=»video/divx»/>
<transcoding enabled=»yes»>8) Показ кадра из фильма
<extended-runtime-options>Запускаем
<ffmpegthumbnailer enabled=»yes»>
<thumbnail-size>128</thumbnail-size>
<seek-percentage>5</seek-percentage>
<filmstrip-overlay>yes</filmstrip-overlay>
<workaround-bugs>no</workaround-bugs>
<image-quality>10</image-quality>
</ffmpegthumbnailer>
</extended-runtime-options>
# service mediatomb startТеперь можно перейти по адресу http://192.168.25.1:49153, ввести имя, пароль и приступить к наполнению медиатеки.
Здесь переходите на вкладку Filesystem, выбираете нужную папку, добавляете ее с автосканированием. И отмечаете параметры, сканировать по времени, рекурсивно и жмете кнопку Set.
Открываете в телевизоре SmartShare или AllShare и проверяйте — работает! Все легко и просто!
P.S.
Что бы отключить папку PC-directory в секции <server> добавляете опцию
<pc-directory upnp-hide=»yes»/>
Mediatomb — ALT Linux Wiki
Mediatomb (DLNA-сервер, протокол upnp) — система организации и хранения медийных форматов, медиатека; поддерживает просмотр видео, музыки и изображений. Клиентами сервера Mediatomb выступают DLNA-клиенты: проигрыватели, встроенные практически во все операционные системы, например, кроссплатформенный VLC, в ОС Windows — Windows Media, а также современные телевизоры с подключением к сети. С помощью Mediatomb можно организовать удобный сервис для обучения и просмотра различного рода видеоматериалов на предприятиях, в учебных и медицинских учреждениях с доставкой их непосредственно в медиапроигрыватели рабочих станций пользователей, без привлечения дополнительных средств для установки, обучения и работе пользователей с медио проигрывателями. В домашних условиях Mediatomb интересен для организации медийного сервера с раздачей медийного материала на домашние устройства: планшет, смартфон, ПК, телевизор. Таким образом, сервис DLNA Mediatomb может быть включён в портфель малого/домашнего офиса. Mediatomb обеспечивает работу двух режимах: без включения транскодера и с включеным транскодером «тяжёлый» режим.
- Режим транскодера, преобразует видеоформат в формат медиапроигрывателя пользователя «на лету».
- Основной материал взят отсюда: [1]]
Остановимся на особенностях установки, настройки и эксплуатации сервиса Mediatomb применительно к ALT Linux.
ПО:[править]
- ALT Linux Centaurus (рекомендуется x64) с последними обновлениями.
- MySQL [2]] (не обязательно)
Оборудование:[править]
- ОЗУ — от 4 Гб и выше (зависит от числа пользователей)
- Диск — выделенный массив RAID1 (не обязательно)
# apt-get install mediatomb
Основные файлы настройки mediatomb:
/var/lib/mediatomb/data/config.xml /etc/sysconfig/mediatomb
Создать каталог для медиафайлов, установив на него допуски:
# install -m 2755 -o _mediatomb -g _mediatomb -d /home/media
Внести изменения в конфигурацию /var/lib/mediatomb/data/config.xml (приведены блоки, которые правились):
... <ui enabled="yes" show-tooltips="yes"> // для подключения по HTTP <accounts enabled="yes" session-timeout="30"> <account user="mediatomb" password="mediatomb"/> // HTTP Пользователь и пароль </accounts> </ui> <name>Наше Media</name> // Название медиабиблиотеки, отображаемое у клиентов <udn>uuid:65999079-6aa9-429a-bcf6-419be2510e3d</udn> <home>/home/media/</home> // Каталог хранения файлов <webroot>/usr/share/mediatomb/web</webroot> <storage> <sqlite3 enabled="no"> // БД по умолчанию <database-file>mediatomb.db</database-file> </sqlite3> <mysql enabled="yes"> // БД сервера <host>localhost</host> <username>mediatomb</username> <password>mediatomb</password> <database>mediatomb</database> </mysql> </storage> ... <import hidden-files="yes"> // Поддержка кодировки. <filesystem-charset>UTF-8</filesystem-charset> <metadata-charset>UTF-8</metadata-charset> <playlist-charset>UTF-8</playlist-charset> <scripting script-charset="UTF-8"> ...
- Пояснения по БД: по умолчанию при установке mediatomb создаётся база данных sqlite3, но при желании можно перейти на MySQL, что и сделано в приведёном примере.
В файл сетевых настроек добавить сетевой интерфейс (замените eth0 на свой):
# sed -i 's/^MT_INTERFACE=.*$/MT_INTERFACE="eth0"/' /etc/sysconfig/mediatomb
Запустить сервис Mediatomb:
# service mediatomb start # chkconfig mediatomb on
Управление медиатекой сводится к простым дествиям: наполнению каталога контентом, добавлению каталога в список «видимых» для установленной БД и настройки прохождения сценария индексации при появлении новых файлов в хранилище. Медиатека не требует постоянного вмешательства в её настройки, достаточно однократно выставить нужные значения. Для примера выполним вход на наш DLNA сервер по ssh и выполним:
# mediatomb MediaTomb UPnP Server version 0.12.1 - http://mediatomb.cc/ Copyright 2005-2010 Gena Batsyan, Sergey Bostandzhyan, Leonhard Wimmer. MediaTomb is free software, covered by the GNU General Public License version 2 2015-11-17 15:26:27 INFO: Loading configuration from: /root/.mediatomb/config.xml 2015-11-17 15:26:27 INFO: Checking configuration... 2015-11-17 15:26:27 INFO: Setting filesystem import charset to UTF-8 2015-11-17 15:26:27 INFO: Setting metadata import charset to UTF-8 2015-11-17 15:26:27 INFO: Setting playlist charset to UTF-8 2015-11-17 15:26:27 WARNING: You enabled the YouTube feature, which allows you to watch YouTube videos on your UPnP device! Please check http://www.youtube.com/t/terms By using this feature you may be violating YouTube service terms and conditions! 2015-11-17 15:26:27 INFO: Configuration check succeeded. 2015-11-17 15:26:27 INFO: Initialized port: 50500 2015-11-17 15:26:27 INFO: Server bound to: 192.168.122.1 2015-11-17 15:26:28 INFO: MediaTomb Web UI can be reached by following this link: 2015-11-17 15:26:28 INFO: http://192.168.122.1:50500/
В браузере зарегистрироваться по выведенному адресу с логином и паролем, указанными в /var/lib/mediatomb/data/config.xml.
Откроется менеджер управления медиаконтентом с двумя панелями:
- левый имеет кнопки
- [Database]
- [Filesyste]
- правый имеет кнопки
- [X крестик]
- [X крестик в круге]
Краткий порядок таков: тыкаем кнопку [Filesystem]-левый фрейм, находим /home/media, тыкаем кнопу [X]-правый фрейм, добавляем все файлы в каталог /home/media для индексирования, тыкаем кнопку [X в круге]-правый фрейм, выбираем режим сканирования, здесь нам предлагается выбор способа сканирования папки медиатеки, мы выберем самый простой и надёжный сценарий индексации:
- [Timed],[Full],[Recursive], время исправляем на 600 сек, нажимаем [Set].
Нажимаем [Database](левый фрейм) и проверяем результат сканирования папки /home/media: всё в порядке, все файлы проиндексированы и видны. Следует отметить, что у каждого файла стоит кнопка [X крестик]-для удаления файла из медиатеки и кнопка [перо/блокнот]- для редактирования файла в медиатеке.
Предупреждение: не следует тиражировать несколько папок с файлами медиатеки — возможно дублирование названий в клиентской части.
Клиенты Mediatomb DLNA-сервера[править]
В качестве клиентов DLNA-сервера рассмотрим популярные проигрыватели VLC и Windows Media поддерживающих upnp протокол.
Надо отметить, что в VLC проигрывателе, plugin-upnp по умолчанию не установлен, выполним установку плагина:
# apt-get update && apt-get install vlc vlc-plugin-upnp
В качестве программ для записи экрана можно использовать входящий в KDE recordMyDesktop[3].
Основной сайт Mediatomb [4]
mig
Установка и настройка DLNA | UPnP медиасервера Gerbera (Mediatomb) в Ubuntu Linux 18.04
UPnP (он же DLNA) — это сетевой протокол, предназначенный для простого подключения устройств и упрощения обмена цифровыми мультимедийными данными между вашими устройствами в локальной сети. Существует множество программ для Linux, которые могут помочь вам настроить сервер UPnP у вас дома.
Среди этих программ есть новая программа под названием Gerbera на GitHub. Если быть совсем честным, то Gerbera — это форк всем известного медиасервера под Linux с веб-интерфейсом, который всем был известен как Mediatomb. Gerbera — это лучшая альтернатива простого и всем известного minidlna.
Gerbera — это медиасервер UPnP, который позволяет организовать потоковую передачу цифрового мультимедиа через домашнюю сеть. В этой статье я расскажу вам, как можно установить и настроить его в Ubuntu 18.04 или же kubuntu 18.04 (в общем, настройка будет аналогична на любом дистрибутиве, основанном на Debian).
1. Установка DLNA | UPnP медиасервера Gerbera через Терминал
Установить Gerbera можно через ppa, поддерживаемый Стивеном Четти
Наберите в Терминале для установки следующие команды:
sudo add-apt-repository ppa:stephenczetty/gerbera-updates
sudo apt-get update
sudo apt install gerbera
2. Запуск DLNA | UPnP медиасервера Gerbera и настройка автостарта службы
Следующие две команды в Терминале запустят медиасервер и настроят его автозапуск
sudo systemctl start gerbera
sudo systemctl enable gerbera
3. Запуск веб-интерфейса DLNA | UPnP медиасервера Gerbera
Медиасервер Gerbera использует номер порта 49152, поэтому убедитесь, что порт не используется. Теперь вы можете запустить медиасервер Gerbera при помощи соответствующего значка в Меню запуска приложений. Правда, скорее всего при запуске веб-интерфейса вы получите сообщение о том, что GUI отключен. Необходимо его включить.
4. Включение GUI интерфейса в DLNA | UPnP медиасервере Gerbera
Для включения GUI нужно отредактировать файл конфигурации по адресу /etc/gerbera/config.xml, установив значение параметра ui enabled = «yes». Удобнее всего это сделать через Терминал при помощи команды:
sudo vim /etc/gerbera/config.xml
Если редактор Vim не установлен в Ubuntu, то предварительно установите его командой:
sudo apt install vim
Немного о редактировании файла в Vim:
Нажмите клавишу «i», чтобы перейти в режим редактирования. Теперь можно редактировать файл так же, как и в любом текстовом редакторе. После того как завершите редактирование, нажмите Esc, чтобы перейти в командный режим и наберите «:wq», то есть «Записать и выйти». Все, готово.
5. Перезапуск службы DLNA | UPnP медиасервера Gerbera
После редактирования файла конфигурации или в случае возникновения каких-либо проблем с сервером следует перезапустить службу медииасервера при помощи команды в Терминале
sudo systemctl restart gerbera
Далее нужно обязательно закрыть страницу веб-интерфейса и открыть заново, нажатие кнопки Обновить в браузере может не помочь.
6. Добавление медиаконтента в потоковую передачу DLNA | UPnP медиасервера Gerbera
Для добавления файла в потоковую передачу необходимо щелкнуть по ссылке File System, найти директорию с файлами музыки, видео или фото, а затем просто нажать ссылку Add Item для ручного добавления файла или Add Autoscan Item для добавления автосканирования каталога, содержащего мультемедийный контент.
7. Просмотр содержимого DLNA | UPnP медиасервера Gerbera
Для просмотра добавленного на сервер контента необходимо щелкнуть по ссылке Database. При щелчке по указанной ссылке вы увидите все медиафайлы, которые были добавлены вручную или автоматически.
8. Переключение в старый интерфейс DLNA | UPnP медиасервера Gerbera, доставшийся от Mediatomb
Если вы привыкли к тому старому интерфейсу, который был ранее в Mediatomb, то нужно кликнуть по ссылке Revert to old UI, что приведет к желанному результату.
9. Проверка работоспособности DLNA | UPnP медиасервера Gerbera
Для проверки работоспособности медиасервера Gerbera удобнее всего использовать плеер VCL. Для этого выбираем команду Вид -> Плейлист, переходим в раздел Протокол UPnP и, если все хорошо, то мы должны увидеть наш медиасервер.
10. Решение проблемы доступа к файловой системе для DLNA | UPnP медиасервера Gerbera
Для корректного доступа к файлам видео том с медиаданными должен быть смонтирован в каталог /mnt, а не /media, иначе Gerbera выдаст ошибку. Перенастроить точку монтирования можно при помощи утилиты Disks (дисковая утилита Gnome).
Для установки дисковой утилиты в Kubuntu используйте команду Терминала
sudo apt install gnome-disk-utility
11. Удаление DLNA | UPnP медиасервера Gerbera
Если вы вдруг решите удалить Gerbera, то просто наберите в Терминале команду
sudo apt purge gerbera
sudo add-apt-repository —remove ppa:stephenczetty/gerbera-updates
На этом, собственно, все. Надеюсь, теперь настройка медиасервера в Linux у вас не должна вызвать вопросов. Ну а если вопросы есть, то для этого есть комментарии.
Upd 25.08.2020
Теперь медиасервер Gerbera нормально работает и в Ubuntu 20.04 / Kubunu 20.04.
Ранее в репозитории stephenczetty/gerbera-updates скомпилированной версии deb-пакета для Kubuntu 20.04 не было, поэтому при запуске отображался только устаревший веб-интерфейс для медиасервера (такой, как ранее был у Mediatomb). Да и сам медиасервер работал не очень стабильно.
Однако теперь всё хорошо. На новой версии 1.6.0 также возможно просматривать список подключенных пользователей.
Еще материалы о Linux
Понравилась статья? Не очень? Тогда возможно, что вы напишите свою гораздо лучше. Просто перейдите по ссылке Размещение статей и ознакомьтесь с правилами публикации статей на сайте MultiBlog67.RU.
дружим Mediatomb с телевизором Samsung / Песочница / Хабр
Долго я не мог прийти к общему знаменателю, выбирая решение для реализации домашнего медиа-сервера. В голову приходили различные идеи. Но в силу своего минимализма, было решено ограничиться тремя условиями:
- Медиа-сервер должен быть бесшумным
- Должен потреблять мало электроэнергии
- Способен воспроизводить все популярные форматы аудио/видео контента
Начну, пожалуй, с описания самого стандарта DLNA. Выдумывать тут нечего, процитирую Википедию:
DLNA (Digital Living Network Alliance) — стандарт, позволяющий совместимым устройствам передавать и принимать по домашней сети различный медиа-контент (изображения, музыку, видео), а также отображать его в режиме реального времени. Это технология для соединения домашних компьютеров, мобильных телефонов, ноутбуков и бытовой электроники в единую цифровую сеть. Устройства, которые поддерживают спецификацию DLNA, по желанию пользователя могут настраиваться и объединяться в домашнюю сеть в автоматическом режиме.
В качестве аппаратной части мой выбор остановился на Asus RT N-16. На данный момент это самый производительный linux-маршрутизатор для SOHO сетей. Надеюсь ни для кого не секрет, что установив на роутер альтернативную прошивку, можно значительно расширить стоковый функционал устройства. Воспользовавшись этой возможностью, я установил DLNA-сервер MediaTomb. Есть конечно и альтернативы, но самым стабильным приложением в моём случае оказался именно MediaTomb. Все настройки сервера хранятся в одном файле config.xml. С настройками по умолчанию телевизор даже не мог обнаружить DLNA-сервер. Приведу конкретные выдержки из конфига, которые помогли всё-таки подружить сервер с телевизором Samsung.
Для начало нужно добавить http-заголовки:
<custom-http-headers>
<add header="transferMode.dlna.org: Streaming"/>
<add header="contentFeatures.dlna.org:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000"/>
</custom-http-headers>
Добавляем перекодировки mime-типов для того, что бы телевизор понимал какого формата файл:
Для *.mkv файлов важно указать тип «video/mpeg», а не как пишут в некоторых howto «video/x-matroska».
<mappings>
<extension-mimetype ignore-unknown="no">
<map from="mp3" to="audio/mpeg"/>
<map from="ogg" to="application/ogg"/>
<map from="asf" to="video/x-ms-asf"/>
<map from="asx" to="video/x-ms-asf"/>
<map from="wma" to="audio/x-ms-wma"/>
<map from="wax" to="audio/x-ms-wax"/>
<map from="wmv" to="video/x-ms-wmv"/>
<map from="wvx" to="video/x-ms-wvx"/>
<map from="wm" to="video/x-ms-wm"/>
<map from="wmx" to="video/x-ms-wmx"/>
<map from="m3u" to="audio/x-mpegurl"/>
<map from="pls" to="audio/x-scpls"/>
<map from="ts" to="video/mpeg"/>
<map from="m2ts" to="video/mpeg"/>
<map from="vob" to="video/mpeg"/>
<map from="wav" to="audio/wav"/>
<map from="mpg" to="video/mpeg"/>
<map from="aac" to="audio/x-aac"/>
<map from="m4a" to="audio/mp4"/>
<map from="mkv" to="video/mpeg"/>
<map from="mov" to="video/x-quicktime"/>
<map from="flv" to="video/x-flv"/>
<map from="divx" to="video/divx"/>
<map from="avi" to="video/x-msvideo"/>
</extension-mimetype>
На этом настройка сервера закончена.
Запускаем сервер в режиме демона: mediatomb -d
Осталось подключить к USB-порту флэшку или винт и указать какие каталоги сканировать на наличие медиа-файлов. Для этого заходим в web-интерфейc по адресу «my_router:50500» и выбираем в древовидной структуре папку c фильмами. После непродолжительного сканирования можно включать телевизор и наслаждаться просмотром медиа-контента. При просмотре крупных файлов роутер совсем не нагружается т.к. транскодирование не используется. Мне повезло с моим телевизором — он воспроизводит большинство мультимедийных форматов.
В дополнение можно установить торрент-клиент Transmission, который будет качать видео из интернета для последующего просмотра на телевизоре.
Как видите, у меня получился вполне работоспособный медиа-сервер, тихий, всеядный и экономный.
Я специально не нагружаю пост информацией по перепрошивке роутера и установке optware софта — её достаточно много в интернете, в том числе и на Хабре. Спасибо за внимание.
Android + Mediatomb + UPnPlay = Музыка в любом месте — Codezen
29.06.2011
Джек
Для ясности, этот пост посвящен безопасному подключению к серверу UPnP (потокового мультимедиа) из-за пределов локальной сети. Если вам просто нужен доступ к локальной сети, все, что вам нужно, это MediaTomb и UPnPlay. Никакого особого конфига.
Кроме того, как указали некоторые Redditors, вы можете использовать Subsonic для более простого решения с открытым исходным кодом. У меня уже был MediaTomb, и я хотел его использовать.Кроме того, это решение должно работать со всеми другими устройствами UPnP (на которых не работает Subsonic / Google Music) и для потоковой передачи видео (с vPlayer или другим приложением, с которым UPnPlay может взаимодействовать).
КОРЕНЬ НЕ ТРЕБУЕТСЯ
Введение
Итак, Джульетта и я отказались от своих мобильных телефонов (у нее стареющий немой телефон LG Lotus, мой — тяжелый, но устаревший HTC Hero) на EVO3D, или 3VO, как их прозвали в Интернете. Телефоны действительно классные, но я также заметил, что HTC рекламировала их как поддерживающие DLNA.Эта поддержка не требуется для этих шагов, они должны работать везде, где работает UPnPlay (Android 1.6+ AFAICT), но это послужило источником вдохновения для идеи.
DLNA — это совокупность компаний, согласовывающих стандарты, а UPnP (Universal Plug ‘n Play) — их набор стандартов для взаимодействия устройств. За последние пару лет появилось много устройств, которые взаимодействуют друг с другом. Очень круто, хотя моя первая путаница с UPnP была с моей PS3 пару лет назад, и это было очень неприятно, потому что PS3 — это смесь плохих форматов и бессмысленных ограничений.К счастью, это означало, что когда я начал экспериментировать с возможностями UPnP 3VO, у меня были хорошие начальные знания. Тем не менее, мне потребовалось немного времени, чтобы понять, как быть настолько удаленным, насколько я хотел. MediaTomb и музыкальный проигрыватель HTC Sense довольно хорошо работают вместе по Wi-Fi, но у проигрывателя Sense есть некоторые недостатки.
- Не могу играть в Oggs . Это был главный WTF. Я не мог понять, почему там не было моей музыки. Одна из причин, по которой я купил Android (среди многих), заключалась в том, что он лучше поддерживал открытые форматы, особенно Ogg Vorbis, который, как было показано, имеет лучшее качество при более низких битрейтах (что очень важно при потоковой передаче), и, что еще лучше, это полностью бесплатный и свободный формат.В качестве временного в домашнем решении я остановился на MP3, который плеер Sense сразу взял.
- Нет встроенной поддержки WAN . Это типично для многих плееров, и плеер HTC (как и многие из них в Маркете) даже не позволит вам попытаться подключиться к удаленному серверу, если вы не подключены к Wi-Fi. Это все хорошо, но отстой, если вы планируете стримить во время вождения или в другом месте за пределами дома.
Учитывая эти разочарования, я перепробовал множество подходов для решения проблемы.Один из подходов, который предлагался на различных форумах, заключался в настройке VPN, которая позволила бы игроку Sense думать, что он находится в вашей домашней сети, и запускать такие вещи, как обнаружение серверов UPnP, из коробки. Это огромная головная боль в настройке, особенно если вы заботитесь о безопасности, и, что наиболее важно, не работает . Я не специалист по сетям, поэтому вполне возможно, что моя настройка VPN была облажена (хотя мой Android смог подключиться), но в конце концов это было достаточно сложно, и я все равно не хотел поддерживать это решение.Еще одно решение, о котором я подумал, — это просто запустить сервер NFS или другую удаленную файловую систему, но для этого требуется root, которого у 3VO в настоящее время нет, несмотря на обещание HTC вскоре разблокировать.
Итак, без лишних слов, без рут- способ безопасно передавать ваши мультимедиа куда угодно.
ПРИМЕЧАНИЕ: Пользователи, не использующие Linux, могут получить немного стратегии из этого поста, но не очень много деталей. Есть серверы Windows UPnP, которые будут работать таким образом небезопасно, но не MediaTomb, и есть несколько серверов Windows SSH, но я ничего о них не знаю.Если вы не думаете, что достаточно уверены в себе, чтобы перевести инструкции, вернитесь назад.
Первое, что вам нужно сделать, это настроить сервер для обслуживания вашего контента в стиле UPnP. Моя любимая программа для этого — MediaTomb. Это бесплатно, это открытый исходный код, и я уже знаком с ним, заставляя вышеупомянутую PS3 работать с ним. Он также имеет множество опций перекодирования, которые были бесценны для PS3, но, к счастью, не нужны для потоковой передачи файлов Ogg и MP3 таким образом.Если вы обслуживаете FLAC (которые имеют довольно высокий битрейт для потоковой передачи через 3G / 4G) или другой экзотический формат, который ваш телефон не поддерживает, я отсылаю вас к статье вики MediaTomb о перекодировании и предлагаю вам с разумом использовать Google.
Установка
Большинство современных дистрибутивов Linux имеют пакет mediatomb. В этом посте я буду предполагать Arch Linux, но перевод между pacman и apt-get или yum должен быть довольно простым. От терминала:
$ sudo pacman -S mediatomb
Конфигурация
Я решил запустить MediaTomb от имени своего пользователя, потому что это лучше, чем когда корневые демоны открывают порты, даже если они безопасны.Простой запуск mediatomb из командной строки заставит его сгенерировать пользовательскую конфигурацию по умолчанию (~ / .mediatomb / config.xml)
вместе с пустым файлом базы данных. Вывод демона весьма полезен, и конфигурация по умолчанию в основном подходит для наших целей. Есть только две предлагаемые настройки для изменения конфигурации по умолчанию:
Порт и интерфейс
Вам нужно будет указать порт, потому что Mediatomb будет использовать его случайным образом, если вы этого не сделаете. Обычно это не проблема, потому что обычно эти серверы «обнаруживаются» устройством потоковой передачи, но в нашем случае (использование из глобальной сети) мы должны выполнить этап обнаружения для приложения, а вы не хотите, чтобы порт менялся.Кроме того, вы хотите, чтобы этот контент передавался на внешнее сетевое устройство, в моем случае (и в большинстве случаев для проводных подключений) eth0
. Я добавил следующее в свою конфигурацию (~ / .mediatomb / config.xml)
:
Xml ...> <конфигурация ...> <сервер>49153 eth0 ...
Вот и все для config.xml
. Если вы стесняетесь открывать редактор или возиться с XML, оба этих параметра можно изменить с помощью переключателей командной строки при запуске сервера.Вам просто нужно использовать параметры -e
и -p
при вызове на следующем шаге. Знакомство с конфигурацией XML действительно необходимо только для более продвинутых опций, таких как перекодирование.
Запуск сервера
Запустить сервер так же просто, как вызвать MediaTomb с терминала:
$ медиатомб
Это выведет некоторую полезную информацию. В частности вы хотите увидеть:
ИНФОРМАЦИЯ: проверка конфигурации прошла успешно.ИНФОРМАЦИЯ: Инициализированный порт: 49153 ИНФОРМАЦИЯ: Сервер привязан к: [IP-адрес интерфейса] ИНФОРМАЦИЯ: перейти к веб-интерфейсу MediaTomb можно по этой ссылке: ИНФОРМАЦИЯ: http: // [IP-адрес интерфейса]: 49153 /
Где IP интерфейса, скорее всего, ваш IP-адрес в локальной сети. У меня, например, 192.168.1.25
.
Добавление медиа
Теперь самое важное (и, к счастью, самое простое): заставить MediaTomb обслуживать некоторый контент. MediaTomb имеет красивый и простой веб-интерфейс, который работает на том же порту, что и сервер.Как говорится в приведенном выше выводе, вы можете попасть в интерфейс по ссылке http: // [IP-адрес интерфейса]: 49153
. Просто вставьте это в адресную строку вашего любимого (с поддержкой Javascript, извините, lynx) браузера, и вы должны увидеть такой экран:
Пример интерфейса MediaTomb
Я не буду вдаваться в подробности (этот пост лишь косвенно касается MediaTomb), но вы сначала переходите в раздел файловой системы (тот, который я на скриншоте), просматриваете свои медиа, используя левое дерево, выберите корневой каталог, который вы хотите обслуживать (в моем случае music-ogg
), а затем нажмите кнопку добавления (выглядит как плюс в правом верхнем углу) и, при необходимости, сообщите MediaTomb, чтобы он смотрел (покажите параметры автосинхронизации с помощью плюс с кружком стрелок вокруг него).После настройки вы можете увидеть обслуживаемые файлы в разделе «База данных». Раздел базы данных иногда бывает полезен, поскольку он может дать вам подробную информацию о том, как MediaTomb использует файл. В частности, это MIME-тип, с помощью которого клиенты UPnP определяют, какие файлы они могут воспроизводить.
Я настроил свой так, чтобы он рекурсивно контролировал мою музыкальную директорию с помощью inotify, что означает, что я могу перетаскивать файлы в директорию, и они автоматически обслуживаются. Вероятно, это лучший способ, если только вы не хотите более избирательно подходить к тому, что подаете.
Может потребоваться немного времени, чтобы добавить весь ваш каталог в базу данных, но сервер фактически работает, когда он добавляет каталог, поэтому не позволяйте этому удерживать вас от продолжения.
SSH
Следующий шаг — безопасность при подключении к MediaTomb. Вам следует установить сервер OpenSSH. Скорее всего, в вашей установке он уже есть, но может не работать. Если его нет, то следует установить и запустить:
$ sudo pacman -S openssh $ sudo / etc / rc.d / sshd start
Если вы используете практически любой другой дистрибутив, кроме Arch, вы должны установить openssh
или openssh-server
и вместо этого использовать другой сценарий /etc/init.d/
. Найдите sshd
или openssh-server
. Если вам нужна помощь в запуске демона SSH, загляните в вики вашего дистрибутива или в Google.
По умолчанию сервер SSH работает на порту 22.
Мы подключимся к MediaTomb через SSH позже в этом посте.
KeepAlive
Есть одна проблема с SSH, которую тоже нужно устранить.Мы собираемся установить долгосрочное соединение с сервером через SSH, но многие маршрутизаторы и оборудование прерывают соединение, если оно не используется слишком долго. Это не проблема, если вы собираетесь все время вести потоковую передачу через соединение, но что, если вы остановитесь и начнете снова? Ответ — KeepAlive, который, как следует из названия, поддерживает соединение, периодически отправляя пустой трафик, чтобы информировать оборудование о том, что соединение все еще необходимо.
ОБНОВЛЕНИЕ : Я считаю, что ошибся при первоначальной публикации.Чтобы реализовать это на стороне сервера, а не на стороне клиента (на что влияет ~ / .ssh / config
), вам необходимо добавить следующее в / etc / ssh / sshd_config
ClientAliveInterval 60 ClientAliveCountMax 3
Это будет посылать клиенту некоторый трафик каждую минуту, чтобы поддерживать соединение, и тайм-аут соединения на стороне сервера после потери 3 пакетов, в общей сложности 3 минуты, когда клиент не отвечает (то есть не возвращает пакеты, которые отличается от того, чтобы просто сидеть без дела).
Настройка внешнего подключения
Если вы уже знакомы с открытием портов на маршрутизаторе и адресацией локальной сети извне, просто перенаправьте свой SSH-порт на нужную машину и пропустите эту часть.
Во-первых, вам понадобится способ адресации домашних компьютеров. Я использую DynDNS для бесплатного динамического имени хоста и ddclient для автоматического обновления динамического имени хоста.
Также необходимо настроить маршрутизатор для автоматической пересылки трафика, получаемого через порт SSH (22, если вы не изменили его), на ваш сервер.Поищите параметры в конфигурации вашего маршрутизатора, такие как «Приложения и игры» (это дурацкое название, но это было в моем Linksys) или, проще говоря, «Перенаправление портов». Настройте пересылку TCP на ваш компьютер, на котором запущены MediaTomb и SSH. Это становится намного проще, если вы настроили свой компьютер для статического IP-адреса в локальной сети или настроили маршрутизатор для передачи согласованного IP-адреса с DHCP на MAC-адрес сервера, чтобы переадресация порта всегда направлялась на правильный компьютер.
Это довольно стандартный тариф для домашних серверов, но если этого недостаточно, чтобы понять, что вам нужно делать, у DynDNS есть небольшое пошаговое руководство, которое должно помочь вам в настройке.Они направляют вас на portforward.com, который попытается продать вам какой-нибудь BS-инструмент, чтобы сделать это автоматически, но как только вы пропустите их рекламу, они действительно получат достойную информацию о многих моделях маршрутизаторов. Для всех этих шагов вам понадобится только браузер, так что не отчаивайтесь при просмотре снимков экрана IE =).
UPnPlay
Я долго искал приложение, которое поддерживало WAN-подключения к MediaTomb, и UPnPlay — единственный вариант, который я нашел. Интерфейс немного неуклюжий, но функциональный.Вы можете получить его, выполнив поиск UPnPlay на рынке или используя этот QR-код через Appbrain:
QR-код UPnPlay
Тестирование MediaTomb по локальной сети
Это необязательно, но получение UPnPlay для обнаружения через LAN значительно упростит настройку WAN
Первое, что вы должны сделать после установки UPnPlay, это проверить, работает ли ваша установка MediaTomb через локальную сеть. Подключитесь к своему Wi-Fi, запустите UPnPlay, и он должен автоматически обнаружить MediaTomb. Под ним вы должны иметь доступ к своим медиафайлам в различных формах, либо по пути к файлу, либо по ряду предопределенных групп (например, Аудио> Альбом и т. Д.). Если UPnPlay не распознает MediaTomb, значит, у вас проблемы, я бы посоветовал проверить вывод mediatomb
или запустить mediatomb --debug
и посмотреть, распознает ли сервер, что он подключен. Если нет, то ваш первый шаг — это выяснить.
Если вам нужно отладить этот шаг, я предлагаю выйти (нажмите еще раз в списке библиотек, и он подтвердит выход) и перезапускать UPnPlay каждый раз, когда вы проверяете изменение. Предположительно вы можете обновить устройства из меню, но мне это не удалось.
Каталоги, но без носителей
Если вы можете просматривать свои каталоги, но ни в одном из них нет файлов, то, скорее всего, UPnPlay не распознает формат мультимедиа. Как я уже упоминал выше, MediaTomb имеет множество хороших опций перекодирования, которые я здесь не буду описывать, но их можно использовать для представления любых странных файлов как файлов, которые может воспроизводить ваш телефон, и перекодирования этого файла на лету, когда это потребуется. . Чтобы проверить, работает ли все остальное, я предлагаю взять несколько обычных MP3 / Ogg и добавить их в MediaTomb.Они должны появиться без каких-либо специальных настроек.
Настройка WAN-сервера
Если все вышеперечисленное было сложным, и вы можете получить доступ ко всем своим мультимедиа через Wi-Fi, отлично. На этом этапе мы собираемся подготовить определение сервера WAN для UPnPlay, которое не будет использоваться сразу, но в несколько шагов упростит вашу жизнь.
Сначала включите сервер WAN:
Меню> Настройки> Источники мультимедиа> Сервер WAN
Затем, пока UPnPlay обнаружит ваш сервер MediaTomb, нажмите и удерживайте элемент MediaTomb в списке библиотек и выберите « Clone WAN Server ». Вам не нужно вносить никаких изменений, кроме изменения первого поля после «Host» на «localhost» или «127.0.0.1 ”вместо имеющегося там IP-адреса. Нажмите ОК, и мы оставим это на потом. Идите вперед и выйдите из UPnPlay (вернитесь на главный экран, вам будет предложено выйти).
Безопасное соединение через SSH с ConnectBot
На этом этапе у вас должна быть работоспособная установка MediaTomb и работающий UPnPlay (на данный момент через WiFi). Теперь мы собираемся выключить WiFi и использовать отличный SSH-клиент Android, ConnectBot, для безопасного подключения к серверу. Перво-наперво установите ConnectBot, выполнив поиск на Маркете или используя следующий QR-код:
QR-код ConnectBot
Используя ConnectBot, вы должны иметь доступ к своему серверу, с отключенным Wi-Fi , используя динамическое имя хоста или IP-адрес, который вы установили выше.На начальном экране необходимо выбрать «ssh» в поле со списком и указать user @ external-hostname
для подключения. Когда вы вводите, что он должен попытаться подключиться, запрашивает пароль вашего пользователя и бросает вас в оболочку. С оболочкой ничего делать не нужно.
Если вы не можете подключиться, скорее всего, ваше имя хоста / IP неправильное (или не настроено), или порт, перенаправляемый от вашего маршрутизатора на ваш сервер, испорчен.
Настройка переадресации портов
Вот самое интересное.Мы собираемся перенаправить трафик сервера MediaTomb (порт 49153 в моем примере) прямо на ваш телефон. Трафик будет хорошо зашифрован, и, очевидно, вы должны пройти аутентификацию, чтобы настроить его, так что намного безопаснее , чем просто позволить MediaTomb принимать чье-либо соединение. Не говоря уже о том, что оставлять MediaTomb незашифрованным и доступным для всех, скорее всего, незаконно, в зависимости от того, как ваша страна относится к обмену файлами.
Для этого, глядя на оболочку домашнего сервера, наберите:
Меню> Переадресация портов
И затем, чтобы добавить один:
Меню> Добавить переадресацию порта
Псевдоним не имеет значения.Тип переадресации порта — « Local » (т.е. на телефоне), а исходный порт должен быть 49153 . Пункт назначения немного сложнее. Это должно быть то, как сервер будет обращаться к порту, если вы вошли в него. Обычно вы хотите установить для него значение «[IP-адрес сервера в локальной сети]: 49153», где этот IP-адрес должен соответствовать IP-адресу в выходных данных MediaTomb, когда вы его вызывали. В моем случае значение «192.168.1.25:49153». Если вы правильно настроили / etc / hosts, это также может быть hostname: 49153.
После настройки переадресации портов из браузера телефона вы сможете получить доступ к экрану мультимедиа MediaTomb без Wi-Fi, перейдя по адресу http: // localhost: 49153
. Это переводится как «порт 49153 этого устройства (локального хоста, телефона)» и будет работать, если активна пересылка. ПРИМЕЧАНИЕ: Убедитесь, что вы добавили «http: //»! Если вы просто введете «localhost: 49153», браузер будет интерпретировать это как поиск Google!
Наконец, UPnPlay WAN
Чтобы еще раз проверить, на этом этапе вы должны иметь возможность:
- Используйте UPnPlay по локальной сети
- Настройте порт SSH для перенаправления на ваш сервер, без WiFi
- См. Веб-интерфейс MediaTomb, перейдя по адресу «http: // localhost: 49153» (с http-частью!)
Если вы можете делать все это, вы в основном это получили! Теперь вам просто нужно запустить UPnPlay, когда вы не подключены к Wi-Fi.В списке библиотек вы не увидите свой сервер MediaTomb. Если вы выполнили описанный выше шаг клонирования, вы увидите «MediaTomb (WAN)». Ударьте по нему, он должен подключиться и вызвать появление элемента «MediaTomb». Затем вы просто получаете доступ к своей музыке через обычный элемент «MediaTomb». Золотой!
Если вы не клонировали / не смогли клонировать
Если вы пытаетесь настроить опцию WAN-сервера, но по какой-то причине вы находитесь вне локальной сети и не можете выполнить описанный выше шаг клонирования, вы можете вручную добавить WAN-сервер.
Сначала включите сервер WAN (это тоже было описано на этапе клонирования):
Меню> Настройки> Источник мультимедиа> Сервер WAN
А затем из списка библиотек (начальный экран):
Меню> Сервер WAN
Тогда заполните поля:
Имя Должно быть таким же, как у LAN-сервера (по умолчанию MediaTomb) Хост localhost: 49153 Описание /description.xml UDN uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Описание — это путь к XML-описанию сервера, поэтому он одинаков для всех серверов MediaTomb.UDN — это настоящая заноза в заднице, и почему клонирование намного удобнее. Вы можете найти значение для своего сервера в файле config.xml MediaTomb , где все между тегами UDB , включая uuid: part.
Устранение неполадок UPnPlay
UPnPlay немного привередлив. Как я упоминал ранее, интерфейс неуклюжий, но функциональный. Вот несколько советов:
- UPnPlay, похоже, не знает об изменениях в сети. Если ваше соединение изменилось (например, с WiFi на 3G, с 4G на 3G и т. Д.), Выйдите из UPnPlay (нажимайте до тех пор, пока не появится запрос на выход) и перезапустите. Обновление устройства кажется немного странным, и я потратил немного времени, пытаясь подключиться через 3G, только чтобы понять, что, когда я нажал «MediaTomb», он все еще пытался подключиться к версии LAN. По существу, вариант с сервером WAN просто порождает что-то, что выглядит как вариант LAN, который вы действительно используете, очень сбивает с толку.
- Если вы можете просматривать медиафайлы удаленно, у вас все готово. Запуск песни может занять некоторое время, чтобы действительно добиться сцепления (т. Е. Несколько раз не удается воспроизвести первые пять секунд), но будьте терпеливы. Хотя после первой песни у меня обычно не возникает проблем с переходом к следующему треку. Кроме того, я не тестировал опцию «Воспроизведение почти без пауз», но это может помочь между дорожками.
- Если вы потеряете соединение без переключения сетей , убедитесь, что ваш сеанс ConnectBot все еще активен. Если он закрыт, порт вперед явно не будет работать.
Заключительные комментарии
Я не рассматривал автоматический запуск их при загрузке. В настоящее время я запускаю SSH с Arch /etc/rc.conf
. Затем из /etc/rc.local
я использую sudo jack -c mediatomb
для запуска сервера MediaTomb от имени моего пользователя. rc.local
универсален, насколько мне известно, но для запуска демонов проверьте вики вашего дистрибутива.
Я немного проверил это в Остине. Мне не очень повезло (в общем, на Sprint) с 4G, но 3G, похоже, работает стабильно и транслирует файлы Ogg, не занимая слишком много пропускной способности для загрузки или заикания.Я также протестировал его при подключении к зарубежному Wi-Fi, и UPnPlay кажется достаточно умен, чтобы использовать определение WAN, даже если вы подключены к Wi-Fi (к счастью).
Очевидно, что это будет сильно зависеть от вашей пропускной способности на сервере. Если у вас низкая пропускная способность, вы можете попробовать перекодировать в поток более низкого качества, но вам может быть лучше купить SD-карту большего размера =).
Я не пытался заставить работать обложку. Я также не пробовал видео, хотя UPnP (и UPnPlayer с некоторыми сторонними видео-приложениями) поддерживает его.Однако я не вижу причины, по которой это не сработает. Я могу сказать, что потоковая передача удаленно, поиск обложек Amazon, похоже, не работает. У меня нет проблем с этим, так как меня больше интересует пропускная способность и производительность, но я не ожидаю, что это будет работать из коробки.
Наконец, Bebopfreak, разработчик UPnPlay, не принимает запросы на поддержку этой функции. Я, с другой стороны, был бы рад попытаться дать указатели в комментариях и дополнить это небольшое пошаговое руководство любыми тонкостями.
Удачи!
.
Mediatomb DLNA + телевизор Samsung
cat /etc/mediatomb/config.xml
xml version = "1.0" encoding = "UTF-8"?>
Прочтите /usr/share/doc/mediatomb-common/README.gz раздел 6, чтобы получить дополнительную информацию о создании и использовании файлов конфигурации config.xml. -> Раскомментируйте строки ниже, чтобы избавиться от прерывистого воспроизведения файлов avi на DSM320 или включить поддержку субтитров на модулях DSM -> custom-http-headers > -> -> < thumbnail-size> 128 <общий-сценарий> / usr / share / mediatomb / js / common.js virtual-layout> < map from = "ogg" to = "application / ogg" /> < map from = "wm" to = "video / x-ms-wm" /> -> - > < рассматривать mimetype = "image / jpeg" как = "jpg" /> profile > < first-resource> да
.
проблемы с mediatomb + Samsung ...
victorvas, вот что он отдает:
Xml version = "1.0"?>
1
1
корень>
.