Поднимаем DLNA сервер.

Не так давно стал счастливым обладателем телевизора SONY BRAVIA. HD проигрывателя у меня нет, но в телевизоре есть usb порт, и понимает телевизор много видео форматов. Только вот постоянно таскать флэшку к телевизору не очень удобно. Тем более если речь идет об HD фильмах 1080p. Ни каких флэшек не хватит. Благо телевизор поддерживает DLNA протокол. Было решено расшарить мультимедиа контент через DLNA сервер под Linux.
Исследуем варианты

Судя по статье на elinux.org существует 3 реализации DLNA сервера под Linux:

1. uShare
2. Rygel
3. minidlna

Не буду писать много букв про преимущества и недостатки каждого. Скажу просто, Rygel у меня вылетел и высыпал в консоль кучу debug информации. uShare заработал, но остановился на сканировании первого же каталога. Не понимает он кириллицу. Проблема известная и вроде как не решена, впрочем я сильно не исследовал этот вопрос, потому могу ошибаться. Остался minidlna. И он у меня заработал на ура.

Настраиваем и поднимаем

Скачиваем последнюю версию сервера и распаковываем архив. Внутри не будет исходников, там лежит бинарник minidlna и файл конфигурации minidlna.conf. Файл конфигурации копируем в /etc, а бинарник в /usr/sbin.

Приступим к конфигурированию сервера. Ни чего сложного в этом нет. Приведу часть моего конфига, ту, которую я изменил.

media_dir=V,/media/hdd/Медиа/Видео
media_dir=A,/home/user/Моя музыка
media_dir=P,/home/user/Мои рисунки

notify_interval=60

То есть я указал путь для контента (media_dir=). При этом буквы V, A и P указывают на характер контента. V — видео, A — аудио и P — картинки. Можно без этих букв, просто после знака равно сразу указать путь. Обратите внимание, название некоторых каталогов у меня просто ужасны. Мало того, что там кириллица, так еще и пробелы. Но minidlna все кушает на ура, даже пробелы не нужно экранировать, и это приятно меня удивило.
Параметром notify_interval я указал интервал в секундах для автоматического обнаружения новых файлов. Тут по вкусу. Иногда, после копирования нового фильма, хочется сразу его посмотреть, и не ждать 900 секунд, которые установлены по умолчанию.

Запускаем

Все просто

minidlna -d -f /etc/minidlna.conf

и можно идти и смотреть фильмы. Но как быть с автозапуском? Можно конечно поместить команду в стандартный гномовский или кдешный автозапуск. Но на мой взгляд лучше воспользоваться init.d скриптом.

#! /bin/sh

# chkconfig: 345 99 10
# description: Fedora Startup/shutdown script for MiniDLNA daemon

# If you have chkconfig, simply:
# chkconfig —add minildna

# Proper init scripts on Linux systems normally require setting lock
# and pid files under /var/run as well as reacting to network
# settings, so you should treat this with care.

# Original author: Perry Clark

### BEGIN INIT INFO
# Provides: minidlna
# Required-Start: $local_fs $remote_fs $syslog $network
# Should-Start:
# Required-Stop: $local_fs $remote_fs $syslog $network
# Should-Stop:
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Minidlna
# Description: DLNA Media Server
### END INIT INFO

## EDIT FROM HERE

# Installation details
MINIDLNA=»/usr/sbin/minidlna»
ARGS=»/etc/minidlna.conf»

# Where to keep a log file
MINIDLNA_LOG=»/var/log/minidlna.log»

# Where the PID lives
PID_FILE=»/var/run/minidlna.pid»

## STOP EDITING HERE

# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

set -e

# Only start if we can find the minidlna.conf.
test -x $MINIDLNA || exit 0

# Parse command line parameters.
case $1 in
start)
echo -n «Starting MiniDLNA: »
$MINIDLNA -f $ARGS -P $PID_FILE >> $MINIDLNA_LOG 2>&1
echo «ok»
;;
stop)
echo -n «Stopping MiniDLNA: »
for pidf in `/bin/ls $PID_FILE 2>/dev/null`; do
if [ -s $pidf ]; then
kill `cat $pidf` >/dev/null 2>&1
fi
rm -rf $PIF_FILE
done
echo «ok»
;;
restart|reload|force-reload)
echo «Restarting MiniDLNA: »

$0 stop
sleep 2
$0 start

;;
*)
# Print help
echo «Usage: /etc/init.d/minidlna {start|stop|restart|       reload|force-reload}»
exit 1
;;
esac

exit 0

Подглядел тут. Называем скрипт minidlna, копируем в /etc/init.d, присваиваем права 755 и добавляем в автозапуск.

chmod 755 minidlna
sudo chkconfig minidlna on

Запускать и останавливать minidlna вручную можно командами:

sudo /etc/init.d/minidlna start
sudo /etc/init.d/minidlna stop

После запуска minidlna будет сканировать каталоги с контентом. Это может занят несколько минут. За ходом сканирования можно следить в файле /tmp/minidlna/minidlna.log. Если после изменения путей в файле конфигурации телевизор не видит новых каталогов, попробуйте удалить /tmp/minidlna/files.db и перезапустить сервер.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Закончите арифметическое действие * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.