Разное

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»> 
   <filesystem-charset>UTF-8</filesystem-charset> 
   <metadata-charset>UTF-8</metadata-charset>
   <playlist-charset>UTF-8</playlist-charset>
… 
</import>
6) Добавляем недостающие форматы
<extension-mimetype ignore-unknown=»yes»>
  <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»/>
7) Включаем транскодирование
<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