Правильно настраиваем DLNA-сервер для телевизоров Samsung

    Здравствуйте, уважаемые хабравчане! Я являюсь счастливым обладателем телевизора Samsung с функцией AllShare. Для удобства просмотра видео по сети со своего домашнего сервера я поднял minidlna. Однако за несколько месяцев мне так и не удавалось добиться стабильной работы связки Samsung+minidlna: проигрывание по сети внезапно прерывалось через разные промежутки времени и сам сервер далеко не всегда и не сразу обнаруживался телевизором. Перерыв кучу форумов и перепробовав множество различных опций и вариантов (в том числе сервер mediatomb), я таки нашел рабочее решение.


    1. Проблема с недоступностью сервера


    В этом посте уже приводилось решение обозначенной проблемы: автор предлагает уменьшить notify_interval, потому как телевизор не хочет сам опрашивать сеть на наличие DLNA-серверов. Однако в моем случае tcpdump честно выводил кучу ssdp пакетов при включении телевизора, но сервер телевизором не обнаруживался. Погуглив, я обнаружил, что на сетевом интерфейсе, на котором висит minidlna, нужно включить мультикаст и задать бродкаст адрес, что я и сделал:
    ip link set br0 multicast on
    ip link set br0 broadcast 192.168.1.255

    Вуаля! После перезапуска сети телевизор спокойно обнаружил minidlna!

    2. Проблема с прерыванием видео по сети


    А вот тут нам и пригодится notify_interval. Только его нужно не уменьшать, а увеличивать. Все дело в том, что, насколько я понял, протокол SSDP подразумевает отправку сервером alive-пакетов, в заголовке которого передается параметр max-age. И если по истечении времени, указанного в max-age, новый alive-пакет не приходит, телевизор разрывает соединение.
    Отрывок кода из файла minissdp.c из состава minidlna, из которого видно, что параметр max-age берется как notify_interval+10:
    Скрытый текст
    l = snprintf(buf, sizeof(buf), "HTTP/1.1 200 OK\r\n"
                    "CACHE-CONTROL: max-age=%u\r\n"
                    "DATE: %s\r\n"
                    "ST: %s%s\r\n"
                    "USN: %s%s%s%s\r\n"
                    "EXT:\r\n"
                    "SERVER: " MINIDLNA_SERVER_STRING "\r\n"
                    "LOCATION: http://%s:%u" ROOTDESC_PATH "\r\n"
                    "Content-Length: 0\r\n"
                    "\r\n",
                    (runtime_vars.notify_interval<<1)+10,
                    szTime,
                    known_service_types[st_no], (st_no>1?"1":""),
                    uuidvalue, (st_no>0?"::":""), (st_no>0?known_service_types[st_no]:""), (st_no>1?"1":""),
                    host, (unsigned int)port);

    Таким образом, если по какой-то причине новый alive пакет не дошел до телевизора за заданное в max-age время, то вещание прервется. Используем простой workaround — увеличиваем notify_interval до нескольких часов:
    notify_interval=10000

    После этого лично у меня разрывов больше не наблюдалось. Надеюсь, что данная информация пригодится кому-нибудь еще.

    P.S. Для mediatomb нужно поправить параметр alive в config.xml.

    UPD: Нашел в сети отличный совет: для решения проблем с мультикастом советуют отключить multicast_snooping:
    echo 0 > /sys/devices/virtual/net/$BRIDGE/bridge/multicast_snooping

    Возможно это решит все проблемы, и задавать огромный notify_interval окажется лишним. Потестирую — отпишусь.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 78

      0
      Кстати, у кого-нибудь получалось по DLNA в Самсунгах пятой серий 2012 года, смотреть MKV?
        +2
        Да. Транслирую с помощью serviio.
          0
          +1 тоже использую serviio. Только вот хочу еще разобраться как IPTV через него передавать. Не пробовали?
            0
            PS3MS еще точно работает. А прямо сейчас вещаю с ноутбука через minidlna и слушаю музыку через телевизор.
              0
              Предпочитаю смотреть IPTV с помощью smart-tv-home.ru/ посредник в качестве компьютера потребуется лишь раз — для установки виджета и заливки списка каналов
                0
                Оно не требует постоянно включенного компьютера/сервера? А то смутил экран настроек программы.
                  0
                  Я ведь написал — для IPTV лишь раз
            0
            Да, транслирую mindlna. Кстати у меня проблем, описанных автором поста, не наблюдается. Minidlna с дефолтными настройками.
              0
              По wifi он его не запускает, если по eth то все Ok!
                0
                А вот это странно. Телевизору по сути должно быть все равно, как он подключен к сети. Разве что WiFI не хватает пропускной способности?
                  0
                  Думаю что из за скорости. Не помню только к 2.4g или к 5n он подключен. Думаю, что все же g.
                  У меня он был подключен к wifi, пытался проиграть с nas mkv он не играл, хотя я точно помнил что смотрел его. Оказалось я его с usb запускал. В итоге переключил на кабель.
                    0
                    Так это две разные вещи. С USB телевизор может играть, а по сети тот же самый файлик — нет. Какие-то там ограничения встроенного DLNA-плеера.
                      0
                      Где-бы почитать про эти ограничения? Еще интересно почему плейер не видит (или DLNA не транслирует) вторую звуковую дорожку.
                        0
                        После подключения к eth все ok.
                        0
                        2.4n нормально работает. Если в телевизоре нет wifi но есть ethernet, можно взять вот такую штуку www.google.com/shopping/product/2931959410917714340
                          0
                          Если вы внимательно читали, то на wifi не запускается mkv, как только этот mkv оказывается на eth или на usb, все ставновится хорошо!
                            0
                            тут важно что является DLNA сервером а не клиентом,
                            с встроенным windows сервером действительно практически не возможно произрать MKV, но если к примеру вы поставите самсунговский DLNA сервер, то проблем с MKV не будет совсем
                              0
                              Сервер у меня twonky.
                                0
                                Скорее всего нужно в настройках twonky выбрать IP телевизора и указать, что на нем стоит телевизор Самсунг.
                                Ну или поменять твонки на minidlna или ещё что-то.
                                  0
                                  попробую сегодня поставить twonky
                                  до этого пытался стандартный виндоус DLNA сервер конфигурировать и самсунговский и какой-то еще не помню. Нигде не было переключения языков почему-то
                    +1
                    с plex смотрю, полет нормальный.
                      0
                      Да Plex очень удобно. Там есть даже виджет для телевизора plex.tv/downloads Выводит все фильмы, сам находит обложки к фильмам и описание, но на английском. Есть оди минус, через виджет как то неправильно передает телевизору 3D фильмы. Телевизор не понимает их. Но если заходить через внешние ресурсы, то все работает, хотя визуальное не очень.
                    +1
                    Да прекрасно работает с samsung allshare media server
                      0
                      Смотрю с внешнего жесткого диска. 90% идут нормально, остальные — либо не играются, либо сильно лагают.
                        0
                        я просто переименовываю mkv в avi. В качестве сервера стандартный WindowsMediaPlayer в Win7 + K-lite Codec pack full
                        0
                        А у мня другая проблема — периодически повисает и ребутается телевизор при листании списка фильмов по dlna. С чем это может быть связано?
                          0
                          да и у меня такая штука встречется при количестве фильмов около 100 в папке, крешу на пререндеринг иконок фильмов. Решаю путем хранения не мбольше 50 файлов в папке пока. Не самая лучшая идея конечно
                          0
                          У меня тоже ТВ от Самсунга и прочитав про DNLA, всё таки решился пойти путём PC — HMDI — TV.
                          Лучше я извращённо запущу VLC с выводом аудио и видео на ТВ, но пока мой комп «показывает» фильм, телевизор всегда будет его отображать.

                          Я боялся, что если ТВ «не потянет» кодек, то мой комп-сервер-DNLA будет вынужден на лету конвертить фильм, а это напряжно.
                          Топикстартер, как вы решаете или планируете решать такую проблему?
                            0
                            Лично у меня таких проблем не возникало. Телевизор играет все форматы по сети, которые мне нужны. Что касается транскодинга, то minidlna его не умеет, но умеет mediatomb, но я настройкой этого всего не занимался. А HDMI хорош только при наличии ПК/сервера рядом с телевизором, ну и пока телевизор только один.
                              0
                              А в арчлинуксовском AURе вот что есть:
                              aur/minidlna-transcode-hg 46-1 (5)
                              A DLNA/UPnP-AV Media server with transcode support

                              Ну, и, в основном, транскодить нужно только звук, т.к. мой телек, например, не поддерживает FLAC и Vorbis, приходится транскодить в mp3.
                            0
                            Купил Synology DiskStation хранилище, там есть DLNA сервер внутри и без глюков стримит любой кодек почти по сетке, а там и по wifi до телека. Роутер у меня Netgear WNDR4500, пробивает HD видео через 3 стенки до телека.
                              0
                              вы купили писюк с линукс и minidlna. поздравляю! :)
                                0
                                только в 4 раза меньше :)
                                  0
                                  ну вот это не факт. сейчас корпусов-то всяких полно.

                                  на самом деле я, конечно, иронизирую. Synology делают ОЧЕНЬ хорошие продукты. И самостоятельно такое собирать можно, разумеется, но надо обладать временем и знаниями.
                              0
                              LG телики себя ведут так же с minidlna. :(
                              Спасибо.
                                0
                                Угу, а еще Philips. Кстати, где-то на их форуме я и откопал инфу про max-age и начал думать, как же мне теперь заставить телевизор видеть сервер сразу, а не через 10000 секунд.
                                  0
                                  У меня LG, всё отлично показывает по dlna. И 3D и 2D.
                                    0
                                    Какой LG, какой DLNA? Как подключены друг к другу?
                                      0
                                      minidlna, версию не помню, LG 42LM660T

                                      Всё подключено к роутеру проводами.
                                        0
                                        LG 50PK760 — провод — ADSL модем (он же роутер) выданный провайдером — провод — Raspberry Pi c miniDLNA.

                                        Проблем нет.
                                    0
                                    На всяк случай, может кто не знает:
                                    1. Телеки Самсунг прекрасно работают со встроенным в Windows DLNA-сервером. Бросаете видюшку в папку «Видео», нажимаете на пульте телевизора «AllShare», выбираете свой комп, видюшку — и вперёд. Тут, я так понимаю, видео будет играть только если телек поддерживает кодек. Т.е. могут быть нюансы.
                                    2. У Самсунга есть родная программа, которая позволяет транслировать видео на телевизор. Тут уже работает принцип «если компьютер смог проиграть видео — значит сможет и транслировать на телевизор». Прога не очень удобна, но вполне стабильна.
                                      0
                                      не прекрасно работают со встроенным — MKV не играют
                                      +1
                                      может кто-нибудь знает простой (или хотябы работающий) способ переключасть в MKV звуковые дорожки при проигрывании через DLNA? Может какой-нибудь DLNA сервер это позволяет?
                                        0
                                        DLNA транслирует поток. Если телевизор умеет переключать звуковые дорожки, значит где-то есть переключатель. Читайте инструкцию.
                                          0
                                          таким образом серваер должен засширять DLNA протокол для поддержки разных звуковых дорожек. отсюди и вопрос — кто-нибудь знает такой сервер?
                                            0
                                            При работе с minidlna мой телек прекрасно может переключать звуковые дорожки. Прям с пульта.
                                          +1
                                          У телевизоров Самсунг при просмотре нажимаете на пульте не то Tools не то Options и выбираете номер звуковой дорожки.
                                            0
                                            с DLNA это не работает, описал почему выше
                                              +1
                                              Где именно описали?
                                              У меня twonky, прошлогодний самсунг 500 серии, переключение дорожек на mkv работает нормально даже если их штук шесть.
                                                +1
                                                Аналогично, телевизор UE40ES6307.
                                                Нажимаете tools, листаете вниз, меняете дорожку. Только имен не показывает, только номера.
                                                  0
                                                  UE46C6700 полный ноль, через USB все показывает, по DLNA перепробовал Allshare, twonky, mezzmo — ничего, до дорожек никак не добраться, все перепробовал
                                            0
                                            А почему вообще minidlna, а не например родной Samsung PC Share Manager? Пару слов о причинах выбора бы
                                              0
                                              Скажу за себя — у меня Share Manager ни в какую не хочет добавлять папку с видео. Вот хоть тресни. Win7 x64.
                                              Сейчас пользую HMS, но возможно попробую minidlna или serviio

                                              > Поправлены грамматические ошибки
                                                0
                                                А Samsung ваш, когда играет видео с HMS, умеет проигрывать с того места, где остановился в прошлый раз? Я в свое время смотрел несколько альтернатив Share Manager-у, и никого из фриварных не нашел, кто умеет, включая serviio. По крайней мере для моего C-Series. Из мной отсмотреного, умели делать «resume» только Share Manager и mezzmo (но он платный).
                                                +1
                                                Хотя бы потому что minidlna работает где угодно, от компьютера до роутера.
                                                0
                                                Использую twonkymediaserver на windows home server уже больше года — никаких нареканий. 2 самсунга подключены по wifi (802.11n). У одного родной плеер, второй через WD Live.
                                                  0
                                                  юзал я этот minidlna — все работало четко, разве что иногда падало все из-за того, что связь между minidlna сервером и телевизором была через маршрутизатор, а он иногда тупил. Эту проблему решил покупкой простого свича. Дальше — minidlna не умеет транслировать mkv, по крайней мере я не смог его настроить. Третья проблема — умеет шарить только 3 папки. Например у меня hd фильмы валяются на отдельном hdd и в такой конфигурации они не видны… хотя и не транслируются, но это отдельная история.

                                                  В общем заменил я этот minidlna на ps3 media server. Под убунту есть репозиторий. Вот эта штука решила все мои проблемы. HD почти все транслирует, любое количество папок шарит, индексация мгновенная. В общем рекомендую. Единственное, что очень тяжелые 1080p фильмы не всегда идут плавно, но мне кажется это больше проблема моего телевизора, потому что во время проигрывания такого фильма тупит все — регулировка громкости, перемотка, смена звуковых дорожек.
                                                    0
                                                    1) Папок можно задавать сколько хочется. Просто их содержимое всё будут слито в корень одной виртуальной.
                                                    пример у меня:
                                                    # set this to the directory you want scanned.
                                                    # * if have multiple directories, you can have multiple media_dir= lines
                                                    # * if you want to restrict a media_dir to a specific content type, you
                                                    # can prepend the type, followed by a comma, to the directory:
                                                    # + «A» for audio (eg. media_dir=A,/home/jmaggard/Music)
                                                    # + «V» for video (eg. media_dir=V,/home/jmaggard/Videos)
                                                    # + «P» for images (eg. media_dir=P,/home/jmaggard/Pictures)
                                                    media_dir=V,/raid/ftp/Video
                                                    media_dir=A,/raid/ftp/Music
                                                    media_dir=/data/Torrent

                                                    2) У меня с mkv никаких проблем с minidlna, телевизор UE40ES6307. Если есть проблемы — можно попробовать mediatomb, он позволяет переопределять mime-type видео.
                                                    3)Индексация только первоначальная долгая. Дальше при включенном inotify всё почти мгновенно.
                                                    inotify=yes

                                                      0
                                                      И да, на linux это точно работает. Что касается порта на windows не уверен.
                                                        0
                                                        mediatomb пробовал. Как не шаманил, его так телевизор и не увидел.
                                                          0
                                                          Вроде после данного шаманства в конфиге всё видит, а это шаманство легко ищется в поисковиках:
                                                          <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=01500000000000000000000000000000"/>
                                                              </custom-http-headers>
                                                          ..........
                                                          
                                                            0
                                                            понимаю, тоже гуглил, но не работало.
                                                              0
                                                              Странно, но на вскидку сложно что-то еще сказать… Ну с ps3 заработало и хорошо )
                                                                0
                                                                да согласен. Вообще удобная штука этот dlna :)
                                                      0
                                                      То что в инструкции используется notify_interval=10000 — чистой воды костыль.
                                                      В 99% случаев проблема в том, что не ходят multicast пакеты SSDP. Соответственно включаем мультикаст и проверяем что через ваш роутер нормально ходит multicast трафик по локальной сети.
                                                      Пакеты идут на адрес 239.255.255.250:1900.
                                                        0
                                                        Ходят мультикаст пакеты, ходят. Между телевизором и сервером никакого роутера нет. Тем не менее, соединение все же рвется. notify_interval=10000 костыль, да, но работает.
                                                          0
                                                          А вы уверены что они уходят с интерфейса? Если воткнуть в тот же свич компьютер, на его интерфейс они приходят?
                                                          Я понимаю что вопросы могут показаться глупыми и слегка оскорбительными, но все же чудес не бывает.
                                                            0
                                                            tcpdump, а также лог minidlna говорит о том, что пакеты ssdp и приходят, и уходят. Для интереса решил поставить notify_interval в дефолтное значение, может быть первый пункт из поста окажется достаточным. Проверю — отпишусь.
                                                        0
                                                        Раз уж заговорили про DLNA-серверы скажите, какой сервер предпочтительнее под MacOSX?
                                                        Сейчас сам пользуюсь TVMobili.
                                                        Это единственный сервер который позволяет перематывать контент и запоминает место на котором остановился просмотр на телевизоре Samsung. Но есть и ложка дегтя, хоть и заявлено, что он должен автоматический индексировать содержимое папок при их изменении приходиться его перезапускать вручную.
                                                          0
                                                          Plex. А на телевизоре клиент к нему. Умеет всё.
                                                          0
                                                          (runtime_vars.notify_interval<<1)+10 это не просто notify_interval+10. Еще на два умножить забыл.
                                                            0
                                                            Хм, только не умножить на два, а сдвинуть влево на один разряд. Это все же разные вещи.
                                                              0
                                                              Ах ну да, одно и тоже же. Не сообразил сразу.
                                                            0
                                                            В mediatomb <alive\> добавляется в раздел <server\> файла config.xml:

                                                            <alive\>180</alive\>
                                                            Optional
                                                            Default: 180, this is according to the UPnP specification.
                                                            Interval for broadcasting SSDP:alive messages
                                                              0
                                                              Естественно без \ перед >
                                                              Пока искал как правильно отобразить, закончилось время изменения комментария…
                                                              0
                                                              Пользуюсь mediatomb. Все работает просто чудесно. Попробуйте запустить mediatomb вот с этим конфигом: zalil.ru/34219270
                                                                0

                                                                Была проблема: телевизор Philips наотрез отказывался отображать сервер(minidlna) и его список файлов.
                                                                Хотя если запустить медиаконтент с внешнего контроллера, то тв его проигрывает. На android клиенте сервер нормально отображается.


                                                                Перепробовал всё — и фаервол, и мультикаст, и настройки роутера, и notify_interval. Пакеты ходят, мультикаст работает, телек не работает!


                                                                Решение пришло в момент когда анализировал логи — заметил, что в ответ на http-запрос minidlna шлет одним из заголовков
                                                                Date: Пн, 18 июл 2016 16:23:27.


                                                                В системе стояла локаль ru_RU. Смена локали на en_US полностью решила проблему.
                                                                Надеюсь кому-нибудь поможет. Убил 6 часов.

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

                                                                Самое читаемое