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

Mediatomb

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

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

Содержание

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

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

Официальный сайт проекта mediatomb.cc

Установка

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

По окончании установки медиа-сервер автоматически стартует.

Некоторые часто используемые команды

  # /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
  • открывается web-интерфейс управления DLNA-сервером:
  либо на локальной машине (где запущен сервер) открывается файл /var/lib/mediatomb/mediatomb.html
  либо в веб-браузере открывается URL http://localhost:49152/ (в этом случае на DLNA-сервере должен быть установлен и веб-сервер)
  • добавление каталогов и файлов осуществляется путём нажатия кнопки "плюс" на вкладке "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. При использовании данного движка для поддержки кириллицы в именах воспроизводимых файлов требуются дополнительные усилия по настройке. Кроме того следует учитывать что у 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>
  • выполняются команды
  # su                                                                              - получение прав суперпользователя
  # mysql -uroot -p                                                                 - подключение к командной строке управления базами MySQL
    Enter password:
  mysql> CREATE DATABASE `mediatomb` CHARACTER SET utf8 COLLATE utf8_general_ci;    - создание базы mediatomb
  mysql> GRANT ALL PRIVILEGES ON mediatomb.* TO mediatomb@localhost;                - создание пользователя mediatomb
                                                                                      со всеми привилегиями и возможностью доступа к своей базе без пароля
  # mysql -p mediatomb </usr/share/mediatomb/mysql.sql                              - создание таблиц в базе

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

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

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

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

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

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

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

  • создаётся в доступном для пользователя mediatomb месте скрипт Bash /usr/local/bin/transcoder
  • скрипт обозначается как выполняемый
  • в секции <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>

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

Профиль транскодирования это именованная секция с правилами транскодирования, начинающаяся словом <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. В зависимости от размера памяти, мощности процессора, желаемого поведения программы эти правила могут быть изменены.

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

   <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 на загрузку файлов через кеширующий прокси-сервер
  Для этого в файл конфигурации 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>
  ...

Ссылки

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

Mediatomb позволяет осуществлять просмотр роликов с YouTube. Поддержку воспроизведения роликов можно обеспечить как средствами файла конфигурации через добавление соответствующей секции, nак и с помощью регистрации специфичного расширения файлов и программы 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 на момент написания статьи этот список выглядит так:

  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
Личные инструменты