Кухонный телевизор ленивого человека

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

ТЗ

Все очень просто: на кухне должно быть некое устройство, которое показывает фильмы в 720р (идеально 1080р) популярных форматов в популярных контейнерах. Специальных требований 3: выбор звуковой дорожки по запросу пользователя, наличие беспроводного интерфейса и все богатство должно продаваться в этой стране, с ebay и почтой я не дружу.

Проект

Я планировал пойти по легкому и универсальному пути: панель + компьютер. Преимущества очевидны: гибкость и всеядность компьютера как плеера + возможность пользоваться им для других целей. Недостатки тоже есть: обилие не уместных проводов, наличие клавиатуры и мышки, нетривиальность подключения “телевизионного” пульта ДУ, невозможность совершенно бесшумного решения, цена.

Кандидатом выходил Eee Box (или аналогичный Acer) на nVidia ION, но от него пришлось отказаться оп совершенно неожиданной причине: предложений его продать совершенно не было. Плюс пришлось бы решать что-то для замены интерфейса 802.11g на n. Идея поставить mac mini была признана упаднической, так как его цена слишком высокая. На помощь пришли производители телевизора, которые вроде как встроили все необходимое прямо в него.

Телевизор

Посмотрев на то, что предлагают сегодня разные производители, я решил, что телевизор должен поддерживать 1080р, быть с LED-подсветкой и 100Гц разверткой. LED считаю необходимым качеством, если телевизор висит на стене, иначе он сильно из нее выделяется, это не красиво. Был выбран Samsung 6й серии 2010 модельного года, привезен домой и повешен на стену. Встроенный плеер прекрасно открывает с накопителя любой файл (народ говорит, что не такой уж он всеядный, но я не нашел среди своих файлов того, что он не ест), позволяет выбирать звуковую дорожку. Отлично, подумал я, а теперь давайте устроим все то же самое, но по сети. И тут начались проблемы.

Медиасерверы

Я никогда не был поклонником велосипедостроения ради упрощения жизни “обычным пользователям”, я считаю такой подход глубоко порочным. В первую очередь потому, что никто не занимается вопросом “что нужно обычному пользователю” кроме пары компаний, а остальные лепят это так как увидел программист глядя на ТЗ, которе сделал маркетолог глядя в исследование рынка, которое сделали инопланетяне. В телевизоре Samsung у них получилось так, что плеер может ходить в сеть только по протоколу DLNA, а по CIFS или NFS не может.

В чем проблема сходить в сеть и взять там видеофайл? Пользователю надо ввести пароль! А еще ему, возможно, понадобится информация об именах ресурсов и путях в них. Плюс неплохо было бы не показывать медиаплееру файлы, которых он не поймет, можно логически отделить музло от киношек и предусмотреть возможность перекодировать видео-аудио, если сеть не поспевает или клиент не понимает формат. Отличные идеи, которые реализовали в стандарте DLNA (uPnP самсунгом не поддерживается, по этому ничего не могу сказать об этом типе серверов, но предполагаю, что проблемы те же и они тоже не нужны).

Первым мне попался Twonky Media Sever, который уже работал на моем файловом сервере WD Share Space. Некоторые файлы телевизор проигрывал без проблем, некоторые не воспринимал. MKV не воспринимал все. Так как файлсервер маломощный, то опция transcode была не доступна, переустановил Twonky на большой компьютер. Результат ровно такой же, транскодинг не помог.

Далее был Elgato eyeconnect с тем же результатом: часть файлов проигрывсется, часть нет.

Далее выясниласть глобальная засада на уровне протокола DLNA: невзможность выбора звуковой дорожки. Решение было в виде PS3Mediaserver, который виртуально размножал файл на несколько (по одному на дорожку) и умел транскодировать фильмы в нужном для телевизора формате. Очень круто, но есть 1 проблема: сколько я ни бился и не читал форумы, сколько бы я не пробовал настроек, телевизор файлы не воспринимал.

По инерции попробовал Mediatomb с таким же результатом.

Стало ясно, что без внешнего плеера никуда.

Плеер

Свой выбор я остановил на WD TV Live. Во-перывх, он умеет все, что мне нужно. Во-вторых, в отличие от того же Попкорна, он не стоит как крыло Боинга. В третьих, WiFi-донгл с поддержкой n, который у меня был, подходит к нему без проблем (Trendnet, выбран, потому что подходил к телевизору, так как Samsung не поставляет собственные WiFi-донглы в Россию, а с Амазона он приедет еще не скоро). В четвертых, WD TV маленький и поддерживает HDMI, что позволяет скрыть его с глаз долой на холодильник, а к телевизору пойдет всего 1 провод.

Плеер решил все проблемы совместимости, но вылезли еще 2 проблемы:

– VOB’ы по сети заикаются. Это признанная проблема прошивки, которую должны были решить в текущей прошивке (и так написано в релизноте), но не решили.

– остальные фильмы тоже инода заикаются.

Вторая проблема оказалась немного более сложной. Дело в том, что роутер у меня Asus WL-500W с прошивкой “от последователей Олега” и передача данных по WiFi – не самая сильная его сторона. Я решил выделить отдельный WiFi-сегмент, который будет обслуживать только телевизор при помощи Apple Airport Express (он гарантированно поддерживает n). Результат вышел почти отличный, но совсем все проблемы прошли когда я сделал 2 вещи:

– У WiFi есть такой неочевидный параметр Multicast Rate. Подсказка в настройках по нему невнятная (мол, данный параметр определяет Multicast Rate, выбирайте по умолчанию), но на самом деле он очень важен. Это минимальная пропускная способность, которая выделяется на клиента. Чем больше величина, тем меньше радиус покрытия, тем меньше возможное число клиентов, но и тем большая стабильность скорости у каждого клиента. По умолчанию там настройка как для интернет-кафе, 2 мегабита.

– В smb.conf файлового сервера надо было прописать socket options = IPTOS_LOWDELAY TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536socket options = TCP_NODELAY SO_RCVBUF=65536 SO_SNDBUF=65536, который говорит серверу, что у нас быстрая сеть и нам нужны минимальные задержки.

Заключение

По какой-то тайной причине производители, которые делают просто отличное железо (Samsung, WD) по прежнему выпускают очень странные прошивки, а написанное в рекламном буклете может не соответствовать реальности.