В современной бытовой технике, например в телевизоре Samsung LE32B652T4W, поддерживается протокол DLNA (http://ru.wikipedia.org/wiki/DLNA), позволяющий организовать обращения к контенту других устройств. Было решено расшарить мультимедиа контент через DLNA-сервер под Linux.
Исследуем вариантыСудя по [[http://elinux.org/DLNA_Open_Source_Projects статье]] на elinux.org существует 3 реализации DLNA сервера под Linux:
1. [[http://ushare.geexbox.org/ uShare]]
2. [[http://live.gnome.org/Rygel Rygel]]
3. [[http://sourceforge.net/projects/minidlna/ minidlna]]Не буду писать много про преимущества и недостатки каждого. Скажу просто, Rygel у меня вылетел и высыпал в консоль кучу отладочной информации. 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# 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/binset -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
;;
esacexit 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 и перезапустить сервер.
И напоследок, телевизор и сервер подключены через WiFi маршрутизатор D-Link DIR-300.
URL: http://karapuzz.blogspot.com/2010/03/dlna.html
Обсуждается: http://www.opennet.me/tips/info/2328.shtml
mediatomb наше все
Спасибо, прилечу домой попробую.
Поищите в гугле универсальный не по названию а по возможностям Playstation Media Server. Поддерживает плагины, профили под разные устройства, транскодирование на лету при необходимости и стримминг.
Использую год mediatomb - просто работает.
Жалко, что этот minidlna только под Линукс собран. Запускать линуксулятор во Фряхе ради одной программы - явный оверкилл.
а сделатьcvs -d :pserver:anonymous@minidlna.cvs.sourceforge.net:2401/cvsroot/minidlna checkout minidlna
религия не позволяет или что?
А в Винде рулит Homemediaserver, написанный российским программистом и распространяющийся бесплатно. По функциям уделывает все виндовые аналоги.Для транскодинга на лету 1080p-контента нужен быстрый винт (читай SSD) и LAN-подключение.
>А в Винде рулит Homemediaserver, написанный российским программистом и распространяющийся бесплатно. По
>функциям уделывает все виндовые аналоги.
>
>Для транскодинга на лету 1080p-контента нужен быстрый винт (читай SSD) и LAN-подключение.
>заступлюсь за ps3 ))
кроссплатформенная штука, которая много чего умеет и как демон работает тоже.
http://code.google.com/p/ps3mediaserver/
>>А в Винде рулит Homemediaserver, написанный российским программистом и распространяющийся бесплатно. По
>>функциям уделывает все виндовые аналоги.
>>
>>Для транскодинга на лету 1080p-контента нужен быстрый винт (читай SSD) и LAN-подключение.
>>
>
>заступлюсь за ps3 ))
>кроссплатформенная штука, которая много чего умеет и как демон работает тоже.
>http://code.google.com/p/ps3mediaserver/Пробовал - не умеет и десятой того, что предлагает HMS.
Сейчас HMS научился кэшировать в оперативную память и теперь можно смотреть с транскодингом на лету, используя обычный HDD.
>Пробовал - не умеет и десятой того, что предлагает HMS.
>Сейчас HMS научился кэшировать в оперативную память и теперь можно смотреть с
>транскодингом на лету, используя обычный HDD.Что значит с транскодингом на лету? (интересуюсь только потому, что уж 1,5 года юзаю с ПС3 и не чешусь, включая транскодинг "на лету".
>>Пробовал - не умеет и десятой того, что предлагает HMS.
>>Сейчас HMS научился кэшировать в оперативную память и теперь можно смотреть с
>>транскодингом на лету, используя обычный HDD.
>
>Что значит с транскодингом на лету? (интересуюсь только потому, что уж 1,5
>года юзаю с ПС3 и не чешусь, включая транскодинг "на лету".
>Ну раньше у меня тормозило, так как диск не успевал читать и писать один и тот же файл одновременно.
>Ну раньше у меня тормозило, так как диск не успевал читать и
>писать один и тот же файл одновременно.Когда искал под приставку медиа-сервер пробовал hms, но остановился на pms ))
В общем, pms открывает fifo и транскодит "туда" поток, без сохранения на диск. Очень удобно ))
>>Ну раньше у меня тормозило, так как диск не успевал читать и
>>писать один и тот же файл одновременно.
>
>Когда искал под приставку медиа-сервер пробовал hms, но остановился на pms ))
>
>В общем, pms открывает fifo и транскодит "туда" поток, без сохранения на
>диск. Очень удобно ))Аа. Ну я говорю - HMS тоже научился это делать.
Сейчас там даже с меню можно пульта/геймпада управлять полностью сервером - настраивать сдвиг аудио, субтитры, и т.д.Так или иначе, для меня это в прошлом - купил 7-метровый HDMI-HDMI и смотрю напрямую с ПК.
Напрямую неудобно. Если хочется включить что-нибудь на тв, а самому продолжать комп использовать.
>Напрямую неудобно. Если хочется включить что-нибудь на тв, а самому продолжать комп
>использовать.А я использую в винде "Расширение экрана" и настраиваю в плеере MPC чтобы он при фулскрине отображал на второй экран и выставлял частоту вывода равную частоту кадрам (чтобы не было т.н. "тирринга").
вот все, что я получил от minidlnaFeb 9 23:09:44 localhost abrt[17568]: not dumping repeating crash in '/usr/sbin/minidlna'
Feb 9 23:09:44 localhost abrt[17569]: not dumping repeating crash in '/usr/sbin/minidlna'
Feb 9 23:09:44 localhost kernel: minidlna[17524]: segfault at 84 ip 0813fdc3 sp bf8b5560 error 4 in minidlna[8048000+246000]
Feb 9 23:09:47 localhost kernel: minidlna[17564]: segfault at 84 ip 0813fdc3 sp bfa63570 error 4 in minidlna[8048000+246000]
Feb 9 23:09:47 localhost abrt[17573]: not dumping repeating crash in '/usr/sbin/minidlna'
Feb 9 23:09:53 localhost kernel: minidlna[17525]: segfault at 84 ip 0813fdc3 sp b6a7fd40 error 4 in minidlna[8048000+246000]
Feb 9 23:09:54 localhost abrt[17579]: saved core dump of pid 17520 (/usr/sbin/minidlna) to /var/spool/abrt/ccpp-1297282193-17520.new/coredump (23769088 bytes)
Feb 9 23:09:54 localhost abrtd: Directory 'ccpp-1297282193-17520' creation detected
Feb 9 23:09:54 localhost abrtd: Executable '/usr/sbin/minidlna' doesn't belong to any package
Feb 9 23:09:54 localhost abrtd: Corrupted or bad crash /var/spool/abrt/ccpp-1297282193-17520 (res:4), deleting
Часто пользуюсь этой статьей, когда надо настроить minidlna на новом сервере.Но одного не могу понять: нафига афтор за***дюхал такой нев**бенный скрипт?
Ведь всего навсего надо было сделать автозапуск!
Афтор решил повыпендриваться и показать свою храмотность там, где не надо?