"Смысл всякой деятельности лежит вне ее пределов" В. Тарасов Технология жизни: книга для героев

Mediatomb

Материал из Пингвиньи радостей

Перейти к: навигация, поиск

Содержание

Статья о dlna медиа сервере Mediatomb

Mediatomb это пакет создающий в сети DLNA-сервер, с поддержкой воспроизведения медиа-файлов на DLNA-клиенте, в том числе с возможностью транскодирования на лету.
Официальный сайт проекта http://mediatomb.cc/.
Примеры создания домашнего мультимедиа-центра на базе программы Mediatomb с/без транскодирования на лету приведёны в статье .

Установка

Пакет присутствует в хранилище пакетов debian.
Для установки пакета

По окончании установки медиа-сервер 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. Для его редактирования требуется получение прав суперпользователя.

Настройка

Для включения автозапуска пакета при старте системы

  INTERFACE="eth0"
  ROUTE_ADD="/sbin/route add -net 192.168.0.0 netmask 255.255.255.0"
  ROUTE_DEL="/sbin/route del -net 192.168.0 netmask 255.255.255.0"

Для открытия доступа к веб-интерфейсу управления dlna-сервером

  В секции <server> устанавливаем параметры:
  <name>HOME DLNA SERVER</name>                                        # установка отображаемого имени dlna-сервера
  <ui enabled="yes" show-tooltips="yes">
  <accounts enabled="yes" session-timeout="30">
  <account user="mediatomb" password="mediatomb"/></accounts></ui>
  • перезапускаем медиа-сервер

Наполнение сервера

Для начала использования медиа-сервера его необходимо наполнить контентом - добавить в базу данных программы файлы которые будет демонстрировать Dlna-сервер.
Для добавления медиа-файлов через веб-интерфейс

  • открываем доступ пользователю (группе) Mediatomb к ресурсам с медиа-файлами
  • открываем панель управления dlna-сервером через web-интерфейс: для этого
  либо на локальной машине открываем файл /var/lib/mediatomb/mediatomb.html
  либо в веб-браузере открываем URL http://localhost:49152/ (должен быть установлен веб-сервер например 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 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 как описано в статье Mysql-server
  • редактируем секцию <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
  • перезапускаем медиа-сервер

Отключение транскодирования на лету

При установке пакет по умолчанию настроен на осуществление транскодирования на лету. В качестве агента-транскодера по умолчанию указана программа Vlc. Отключение транскодирования на лету может быть полезно при отсутствии запаса мощности в системном блоке DLNA-сервера. В этом случае декодирование воспроизводимого файла ложиться на DLNA-клиента, а DLNA-сервер выступает как простой файловый ресурс. Загрузка DLNA-сервера при "показе" медиа-файлов в этом случае крайне мала.

Для отключения транскодирования на лету

  • заменяем в файле конфигурации
  строку      <transcoding enabled="yes">
  на          <transcoding enabled="no">
  • перезапускаем медиа-сервер
  Внимание!
  Транскодирование на лету может быть фактически "отключено" и путём замещения агента-транскодера на операцию копирования cp.
  Пример такого замещения приведён в следующем разделе.

Создание скрипта-транскодера

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

Для создания скрипта-транскодера

  • создаём файл /usr/local/bin/transcoder
  • делаем скрипт выполняемым и обеспечиваем его доступность пользователю mediatomb
  • в секции <mimetype-profile-mappings> файла конфигурации для всех файлов требующих транскодирования указываем профиль "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="14400000" chunk-size="512000" fill-size="120000"/>
      </profile>
  • перезапускаем медиа-сервер

Последняя версия скрипта-транскодера приведена в статье Bash-скрипты.

Профили транскодирования

Профиль транскодирования это именованная секция с правилами транскодирования, начинающаяся словом <profile и заканчивающаяся словом /profile>.

Структура профиля транскодирования

<profile name="videompeg" enabled="yes" type="external">                 - имя профиля с опциями
                                                                           например enabled="yes" указание включения данного профиля
   <mimetype>video/mpeg</mimetype>                                       - тип видеопотока формируемого на выходе 
   <accept-url>yes</accept-url>                                          - передача URL агенту транскодирования
                                                                           если указано "no" то передача потока осуществляется через FIFO и только для HTTP протокола
   <first-resource>yes</first-resource>                                  - указание размещать транскодированные ресурсы сначала (перед оригинальными ?)
   <hide-original-resource>yes</hide-original-resource>                  - указание показывать только транскодированные ресурсы (скрывать оригинальные)
   <avi-fourcc-list mode="ignore">                                       - изменение режима транскодирования avi контейнеров с нестандартными кодаками через ffmpeg
      <fourcc>XVID</fourcc>
      <fourcc>DX50</fourcc>
   </avi-fourcc-list>
   <accept-ogg-theora>yes</accept-ogg-theora>                            - поддержка транскодирования кодека Theora в OGG контейнере
   <agent command="transcoder" arguments="%in %out"/>                    - агент транскодирования с аргументами
   <buffer size="14400000" chunk-size="512000" fill-size="120000"/>      - параметры буфера транскодирования
</profile>

Буфер транскодирования

При осуществлении транскодирования Mediatomb выделяет буфер и организует способ работы агента с ним. Набор правил работы с буфером устанавливается для каждого профиля транскодирования после ключевого слова <buffer size. В зависимости от размера памяти, мощности процессора, желаемого поведения Mediatomb эти правила могут быть изменены.

Например на следующие

   <buffer size="256000000" chunk-size="26214" fill-size="52428"/>
   где параметры
   size="256000000"     - устанавливает общий размер буфера для выборки входного потока, теоретически чем больше тем лучше
   chunk-size="26214"   - задаёт размер куска которыми передаётся входной поток из буфера агенту,
                          чем меньше тем плавнее воспроизведение, но слишком маленькие могут наоборот замедлить
   fill-size="52428"    - размер данных в буфере когда будет отдан первый кусок chunk-size, чем меньше тем быстрее будет получено воспроизведение на dlna-клиенте

Настройка транскодирования на лету

Подключение транскодирования "на лету" на медиа-сервере может быть необходимо для тех DLNA-клиентов у которых отсутствует встроенная поддержка воспроизведения некоторых (например mkv) файлов. Транскодирование "на лету" может осуществляться на основе программ-декодеров Mencoder, Ffmpeg, Vlc.

Для включения транскодирования на лету

  • заменяем в файле конфигурации
  строку      <transcoding enabled="no">
  на          <transcoding enabled="yes">
  • добавляем в файл конфигурации профили трансокодирования
  • в секции <mimetype-profile-mappings> файла конфигурации для всех файлов требующих транскодирование указываем необходимый профиль
  • перезапускаем медиа-сервер

Транскодирование "на лету" mkv/m2ts-файлов

Транскодирование "плотных" (mkv/m2ts) видео-файлов "на лету" требуется для расширения возможностей воспроизведения контента на DLNA-клиенте. Эта задача идентична задаче конвертирования mkv-файлов в avi.

Для настройки транскодирования mkv на лету

  • регистрируем расширение и профиль транскодирования, для этого в файл конфигурации добавляем строки
   в секцию <extension-mimetype ignore-unknown="no">
      <map from="mkv" to="video/x-matroska"/>
   в секцию  <mimetype-contenttype>
      <treat mimetype="video/x-matroska" as="mkv"/>
   в секцию <mimetype-profile-mappings>
      <transcode mimetype="video/x-matroska" using="video-generic"/>
  • добавляем в файл конфигурации отвечающую за транскодирование, например следующие строки с использованием транскодера mencoder
      <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="mencoder" arguments="
	-oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -msglevel all=5
        -aid 4352 -alang ru
	-vf expand=:::::16/9,scale,spp=6,harddup
	-af lavcresample=48000,volnorm,extrastereo -srate 48000 -channels 2
	-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=25000:vbitrate=15000:keyint=15:vstrict=0:acodec=ac3:abitrate=384:autoaspect=yes:threads=3
	 -ofps 24 -o %out %in"/>

	<buffer size="10485760" chunk-size="131072" fill-size="2621440"/>
      </profile>
  • перезапускаем медиа-сервер

Настройка файлов конфигурации для транскодирования m2ts-файлов на лету осуществляется аналогично описанию для mkv.
Пример опций транскодирования m2ts-файлов на лету (для просмотра на DLNA-клиенте) без лагов и заметной потери качества

-aid 4352 -alang ru -channels 2 \
-vf expand=:::::16/9,scale=768:-1,spp=6,harddup \
-af lavcresample=48000,volnorm,extrastereo -srate 48000 \
-lavdopts skiploopfilter=nonref:skipframe=default:threads=8 \
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=25000:vbitrate=16000:keyint=15:vstrict=0:acodec=ac3:abitrate=384:autoaspect=yes:threads=8 \
-oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -ofps 24
  Внимание!
  Последняя версия опций транскодирования mkv/m2ts находится в примере скрипта-транскодера.

Поддержка воспроизведения avi-файлов

(Как не странно но) С воспроизведением avi-файлов при включённом транскодировании на лету иногда возникают проблемы. Например в случае, если контейнер avi закодирован неподдерживаемым на DLNA-клиенте кодаком. В связи с этим получается, что эти avi-файлы должны быть транскодированы, а другие - поддерживаемые DLNA-клиентом - транскодировать практического смысла не имеется.

Для обеспечения (корректной) поддержки воспроизведения/транскодирования avi,(divx)-файлов

  • регистрируем расширение и профиль транскодирования, Для этого в файл конфигурации добавляем строки
   в секцию <extension-mimetype ignore-unknown="no">
        <map from="avi" to="video/divx"/>
   в секцию  <mimetype-contenttype>
        <treat mimetype="video/divx" as="avi"/>
   в секцию <mimetype-profile-mappings>
      <transcode mimetype="video/divx" using="videodivx"/>
   Внимание!
   мы video/divx
  • создаём (указанный) профиль транскодирования videodivx
      <profile name="videodivx" enabled="yes" type="external">
        <mimetype>video/divx</mimetype>             - сообщаем dlna-клиенту тип потока divx
        <accept-url>yes</accept-url>
        <first-resource>yes</first-resource>
        <accept-ogg-theora>yes</accept-ogg-theora>
	<avi-fourcc-list mode="ignore">             - отключение транскодирования '''avi'''-файлов с отдельными кодаками: ...
	  <fourcc>XVID</fourcc>                     - далее указываются кодаки поддерживаемые dlna-клиентом по его спецификации
	  <fourcc>DIVX</fourcc>                     - кодаки указываются (маркируются) по стандарту
	  <fourcc>DIV3</fourcc>                     - описание стандартов маркировки кодаков приведено на сайте http://www.fourcc.org/codecs.php
	  <fourcc>DIV4</fourcc>
	  <fourcc>DX50</fourcc>
	</avi-fourcc-list>
        <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>
  • перезапускаем медиа-сервер

"Нулевое" транскодирование

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

Для "отключения" транскодирования путём замещения агента

  • заменяем в файле конфигурации
  строку      <agent command="vlc" arguments=...аргументы..."/>
  на          <agent command="cp" arguments="%in %out"/>
  • перезапускаем медиа-сервер

Воспроизведение потокового видео

(Не претендуя ни на точность ни на верность будем считать что) Потоковое видео это видео "не имеющее конца" на момент начала его воспроизведения. Например это воспроизведение из интернет источников: интернет-ТВ, YouTube, SopCast, trailers.apple.com. Воспроизведение потокового видео это часть возможности Mediatomb осуществлять транскодирование на лету. Но в силу выделения этой способности в файле конфигурации в отдельную секцию и в связи с некоторыми особенностями в настройке, данная функция будет рассмотрена отдельно в настоящем разделе.

Воспроизведение роликов с trailers.apple.com

Для настройки воспроизведения роликов с trailers.apple.com

    <online-content>
      <AppleTrailers enabled="yes" refresh="43200" update-at-start="yes" resolution="640"/>
    </online-content>
    <!-- опция resolution устанавливает качество ролика и его размер
         Если используется resolution="640" то ролики будут расширения .mov
         Если используется resolution="720p" то ролики будут расширения .m4v  -->
  • регистрируем соответствующее расширение и профиль транскодирования, Для этого в файл конфигурации добавляем строки
   в секцию <extension-mimetype ignore-unknown="no">
        <map from="mov" to="video/x-quicktime"/>
   в секцию  <mimetype-contenttype>
        <treat mimetype="video/x-quicktime" as="mov"/>
        <treat mimetype="video/x-quicktime" as="mov"/>
   в секцию <mimetype-profile-mappings>
      <transcode mimetype="video/x-quicktime"	using="video-generic"/>
      <transcode mimetype="video/quicktime"	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>
  VIDEO_FILTERS="-vf expand=:::::16/9,scale,spp=7,harddup"
  AUDIO_FILTERS="-af lavcresample=48000,volnorm -srate 48000"
  LAVC_OPTIONS="-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=192:autoaspect=yes:threads=3"
  arguments="-oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -aid 4352 -alang ru $VIDEO_FILTERS $AUDIO_FILTERS $LAVC_OPTIONS -ofps 24 -o $OUTPUT "
  wget -U QuickTime/7.6.2 "$INPUT" -O - | mencoder $arguments -
  • переключаем работу программы-качалки wget на загрузку файлов через кеширующий прокси-сервер например squid (Подключение кэширующего прокси-сервера позволит исключить загрузку ролика при его повторном воспроизведении.)
  Для этого добавляем в файл конфигурации wget (например в общесистемный /etc/wgetrc) строки
     use_proxy = on
     http_proxy = http://IP-PROXY:PORT-PROXY
  увеличиваем в файле конфигурации размер кешируемого объекта. Например для squid добавляем строку
     maximum_object_size 51200 KB

Для просмотра роликов

  • активизируем DLNA-клиента
  • выбираем папку Online services \ Apple Trailers
  • запускаем трейлер

Ретрансляция интернет-телевидения (IPTV)

Некоторые провайдеры интернет в качестве общедоступного сервиса локальной сети предоставляют возможность просмотра телевизионных каналов. В связи с этим может быть полезно осуществить ретрансляцию потока телеканала в локальную сеть через Mediatomb. Это разрешает просмотр канала для всех DLNA-клиентов домашней сети. Допустим что на сайте www.video37.ru по адресу http://youlike.video37.ru:2103/video/kultura.ts доступен для просмотра телеканал “Россия Культура”.

Для настройки ретрансляции телеканала

  • регистрируем соответствующее расширение и профиль транскодирования, Для этого в файл конфигурации добавляем строки
   в секцию <extension-mimetype ignore-unknown="no">
        <map from="ts" to=""video/ts-avi"/>
   в секцию  <mimetype-contenttype>
        <treat mimetype="video/ts-avi" as="ts"/>
   в секцию <mimetype-profile-mappings>
      <transcode mimetype="video/ts-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 месте файл например с именем <Телеканал “Россия К”.ts> содержащий строку-url
  http://youlike.video37.ru:2103/video/kultura.ts
  TRANSCODER_OPTIONS="-threads 3 -i $(cat $INPUT) -vf crop=in_w:9/16*in_h,scale=1920:-1 -muxpreload 5 -muxdelay 10 -r 25 -target dvd -ac 2"
  ffmpeg $TRANSCODER_OPTIONS $OUTPUT

Для просмотра роликов

  • активизируем DLNA-клиента
  • выбираем файл с расширением .ts
  • просматриваем телеканал

Воспроизведение видео SopCast

(незавершенный раздел)
Для настройки воспроизведения видео SopCast

    <online-content>
        <SopCast enabled="yes" refresh="43200" purge-after="50000" update-at-start="yes"/>
    </online-content>
  • перезапускаем медиа-сервер
  • создаём скрипт /usr/local/bin/transcoder с включением примерно таких строк
  ...

Для получения дополнительной информации смотри статью Sopcast.

Ссылки

Ретрансляция роликов YouTube

Mediatomb позволяет осуществлять просмотр роликов с YouTube. Поддержку воспроизведения роликов можно обеспечить как средствами самого Mediatomb через добавление соответствующей секции в файл конфигурации. Так и с помощью регистрации специфичного расширения файлов и программы clive. В последнем случае список порталов с которых могут быть воспроизведены ролики существенно расширяется.

через регистрацию секции в разделе <online-content>

Для настройки воспроизведения роликов с www.youtube.com через регистрацию секции в разделе <online-content>

  • редактируем секцию в разделе <online-content> файла конфигурации /etc/mediatomb/config.xml
<online-content fetch-buffer-size="262144" fetch-buffer-fill-size="0">
   <YouTube enabled="yes" refresh="28800" update-at-start="yes" purge-after="604800" racy-content="exclude" format="flv" hd="no">
       <favorites user="NationalGeographic"/>
       <playlists user="PlayStation"/>
       <uploads user="Google"/>
       <standardfeed feed="most_viewed" region-id="ru" time-range="all_time" start-index="1" amount="all"/>
   </YouTube>
</online-content>
  • регистрируем соответствующее расширение и профиль транскодирования для файлов flv, Для этого в файл конфигурации добавляем строки
   в секцию <extension-mimetype ignore-unknown="no">
        <map from="flv" to=""video/x-flv"/>
   в секцию  <mimetype-contenttype>
        <treat mimetype="video/x-flv" as="flv"/>
   в секцию <mimetype-profile-mappings>
      <transcode mimetype="video/x-flv"	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>
  TRANSCODER_OPTIONS="\
  -channels 2 -ofps 24 -o $OUTPUT -oac lavc -ovc lavc -mpegopts format=dvd:tsaf \
  -vf expand=:::::$VIERA_ASPECT,scale,spp=6,harddup -af lavcresample=48000,volnorm -srate 48000 \
  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:acodec=ac3:abitrate=256:autoaspect=yes:threads=8
  wget -U QuickTime/7.6.2 "$INPUT" -o $WGET_LOG -O - | mencoder $TRANSCODER_OPTIONS - >"$MENCODER_LOG"

Для просмотра роликов

  • активизируем DLNA-клиента
  • открываем вкладку Online Service \ YouTube
  • просматриваем ролик
  Внимание!
  В настоящий момент не реализовано отображение полного списка роликов с плей-листов YouTube в меню Mediatomb.
  В список попадает только один ролик из плей-листа.

через создание файла описания ролика

Механизм просмотра ролика через создание файла описания ролика аналогичен например механизму воспроизведения интернет-телевидения описанному в разделе Ретрансляция интернет-телевидения. Задача просмотра ролика с www.youtube.com в данном случае сводится к загрузке ролика с помощью специальных программ, например clive и последующему декодированию. Достоинством данного метода явлется расширение списка порталов с которых может быть просмотрен ролик.
Например для программы clive на момент написания статьи этот список выглядит так:

  youtube.com     flv|3gp|mp4|hq|hd
  video.google.   flv|mp4
  sevenload.com   flv
  break.com       flv
  liveleak.com    flv
  evisor.tv       flv
  dailymotion.com flv|hq|hd
  tv.cctv.com     flv
  vimeo.com       flv|hd
  spiegel.de      flv|vp6_928|vp6_576|vp6_64|h264_1400
  golem.de        flv|ipod|high
  ehrensenf.de    flv
  clipfish.de     flv
  funnyhub.com    flv
  myubo.com       flv
  buzzhumor.com   flv

Для настройки воспроизведения роликов с www.youtube.com через создание файла описание ролика

  • создаём в доступном для Mediatomb месте файл с расширение ypl вида
  url="http://www.youtube.com/watch?v=jQsNt2GXaLo"
  opts="--format=best"
  • регистрируем соответствующее расширение и профиль транскодирования для файлов ypl, Для этого в файл конфигурации добавляем строки
   в секцию <extension-mimetype ignore-unknown="no">
        <map from="ypl" to=""video/x-ypl"/>
   в секцию  <mimetype-contenttype>
        <treat mimetype="video/x-ypl" as="ypl"/>
   в секцию <mimetype-profile-mappings>
      <transcode mimetype="video/x-ypl"	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>
  • создаём скрипт-транскодер с включением в него функции скачивания и транскодирования ролика
   transcode_ypl() { # функция транскодирования файлов ypl
   # файлы формата ypl - это специфические файлы содержащие информацию для показа роликов с сайта yuotube и ему подобных
   # файл представляет собой список переменных bash
   # минимально необходимо определение url на ролик

    fifo_file="$LOG_DIR/ffmpeg-clive.pipe";          # имя файла именованного канала
    url=$(grep "url=" $INPUT | awk -F '"' '{print $2}');	# получение URL ролика
    opts=$(grep "opts=" $INPUT | awk -F '"' '{print $2}');	# дополнительные опции транскодирования, например "--format=best"

    mkfifo $fifo_file;                                          # создание именованного канала
    chmod 777 "$fifo_file";
    TRANSCODER_OPTIONS="-y -i $fifo_file -r 25 -target dvd -loglevel debug";
    DOWNLOADER_OPTIONS="--output-file="$fifo_file" --stderr --debug";
    ffmpeg $TRANSCODER_OPTIONS "$OUTPUT" 2>"$log_transcoder" &	# запуск декодера в фоне с чтением из именованного канала
    clive $DOWNLOADER_OPTIONS $opts "$url" 2>"$log_downloader"	# запуск загрузчика с извлечением ролика в именованный канал
   }
  Внимание!
  Последняя версия опций транскодирования находится в примере скрипта-транскодера.

Для просмотра роликов

  • активизируем DLNA-клиента
  • открываем раздел содержащий файл описания ролика
  • просматриваем ролик

Ссылки

Литература

Справочная информация

  • 25.12.2010: Mediatomb: создание статьи в википедии на примере debian squeeze amd64
  • 31.01.2011: Mediatomb: добавлено описание отключение транскодирования на лету
  • 25.05.2011: Mediatomb: добавлено описание переключения движка хранения информации о файлах на mysql
  • 20.06.2011: Mediatomb: добавлено описание поддержки транскодирования avi,(divx)-файлов
  • 13.07.2011: Mediatomb: добавлено описание воспроизведения роликов с trailers.apple.com
  • 02.10.2011: Mediatomb: добавлено описание ретрансляции интернет-телевидения
  • 05.11.2011: Mediatomb: добавлено описание правильного отражения русских букв в именах файлах
  • 22.06.2012: Mediatomb: добавлено описание исключения транскодирования avi-файлов известных кодаков
  • 25.04.2013: Mediatomb: добавлено описание ретрансляции роликов YouTube
Личные инструменты