Пытаемся смотреть IPTV на Raspbian.

  • Автор

Я решил закончить свои эксперименты по поводу просмотра IPTV на Raspberry Pi.

Представляю полученные результаты.



И так, имеем в наличии:

-Raspberry Pi с установленной ОС Raspbian сборки от 16.08.2012;

-подключенная лицензия на кодеки MPEG2 и VC1;

-штатный медиаплеер OMXplayer;

-установленные медиаплееры XINE-UI и VLC-player;

-провайдерская мультикаст-трансляция каналов IPTV (простые и FULL-HD каналы).


Хотя видеопоток успешно подхватывался всеми  перечисленными медиаплейерами, XINE и VLC оказались на данный момент абсолютно непригодные для этой задачи в виду того, что пока их сборки не используют GPU. Трансляция велась со скоростью не более 1-5 кадров в секунду при 100% загрузке процессора. Даже если эти плееры запускать не из LXDE.


Консольный OMXplayer гораздо лучше справился с этой задачей. Благо его научили работать с GPU.

Но всё равно, его работу можно назвать удовлетворительной лишь с натяжкой.

Первая проблема- у меня неполучилось скормить ему плейлист. Пришлось каждый канал запускать в ручную. Но это в принципе не так критично. Гораздо более критичным оказался недостаток памяти в Raspberry Pi. 

Каналы в формате FULL-HD, транслирующиеся в формате h.264, оказались ему не по зубам.

Картинка возникает на 1-2 секунды (правда картинкой её назвать сложно- более половины экрана разбито на кубики), после этого плеер вылетает с пожеланиями "всего хорошего".

С обычными каналами, транслирующимися в формате MPEG2, плеер в общем-то справляется более-менее. Но опять же, относительно чистой картинки получилось добиться лишь на каналах, которые транслируются с уменьшенным разрешением. На каналах, транслирующихся в обычном разрешении (720 точек), по экрану периодически пробегают квадратики. Т.е. Raspberry не успевает уверенно декодировать этот поток налету. 

Увеличение частоты процессора до 800МГц абсолютно никак не влияет на качество картинки. HD-каналы так-же вылетают, а простые- всё так же квадратятся.

Играться с оверклокингом GPU и памяти я не стал. Ибо сильно сомневаюсь, что прирост производительности в 10% исправит ситуацию.

На этом я свои эксперименты завершил. На данный момент Raspberry Pi невозможно использовать для нормального просмотра IPTV используя штатные средства ОС Raspbian. Остаётся надеяться на то, что кто-нибудь напишет специализированный плагин для просмотра IPTV под XBMC, или создаст оптимизированную сборку, выделив максимум ресурсов IPTV-плееру.


Для тех, кто хочет попробовать посмотреть IPTV на своей "Малинке" дам пару советов.

1. Перераспределите память в пользу GPU, через raspi-config.

2. OMXplayer запускайте из терминала, не запуская LXDE.

3. Чтобы плеер увидел мультикаст-поток, адреса нужно изменять.

Например, в плейлисте моего провайдера адреса каналов представлены в таком виде:

rtp://@239.1.1.24:1234

Для плеера этот адрес должен выглядеть так:

udp://239.1.1.24:1234

Т.е. чтобы посмотреть этот канал, я ввожу следующую команду:

omxplayer 
udp://239.1.1.24:1234

Далее плеер задумывается на 5-10 секунд, потом выводит информацию о найденном потоке и его характеристиках и ещё секунд через 5 начинается трансляция.

Выйти из трансляции можно нажатием клавиши Q


Вот в общем то и всё, что я хотел сказать.

Попробуйте сами, может вы добъётесь  более положительных результатов.

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

OPERATOR2
"Увеличение частоты процессора до 800МГц абсолютно никак не влияет на качество картинки. HD-каналы так-же вылетают, а простые- всё так же квадратятся."
Вообщем ждем-с RasPi с 512 Мб ОЗУ и не рвемся покупать в Маркете кодеки, наверно.
RomanNV5
Ну вобще то кодеки нужны, если вы смотрите видео.
Проблема с воспроизведением только потоковых мультикастовых трансляций. Видеофайлы воспроизводятся нормально и без лагов.
Тут похоже дело именно в неоптимизированном под IPTV софте.
OPERATOR2
Кстати считаю продажу кодеков совершенно неэтичным и не соответствующим духу открытого ПО делом. Разработали плату для школьников - предусмотрите возможность бесплатного использования ВСЕХ аппаратных возможностей платы. Иначе это уже антиморально. ИМХО.
Resp4
Это уже политика броадкома, очень уж они жадные на полное описание своих микросхем. В открытом доступе можно найти только огрызки с техданными.
passkeykz5
так же решил произвести эксперимент, купил кодеки, запускал все на арче, в raspberry pi воткнул EDUP EP-MS8511, на роутере установлен openwrt + udpxy. в /boot/config.txt -> gpu_mem=128
запускал так
omxplayer -o hdmi -d -r http://192.168.1.1:4022/udp/238.1.1.5:1234
ключ -d включает Деинтерлейсинг, устранение чересстрочности
ключ -r подгоняет видео под экран (если без этого ключа, видео идет в квадрате, а по бокам черные полосы, экспериментировал на телевизоре через hdmi)
каналы mpeg2 вещаются замечательно, без квадратиков, зависаний нет.
каналы mpeg4 по началу начинает показывать, потом видео замирает и идет только звук (хорошо что у моего провайдера всего 2-3 канала в mpeg4)

Если смотреть каналы напрямую, не через udpxy, то смотреть каналы невозможно, есть квадраты.
Осталось прикрутить пульт к малине и научить щелкать каналы.
Joes5
Наконец приехала мне RPi и решил из нее сделать замену Popcorn Hour A200 который уже вкрай задолбал.

Есть:
1. Провайдер, подключение по ethernet. Отдает ТВ по мультикасту (IGMP+UDP). SD потоки в MPEG2, HD потоки в MPEG4. EPG, каналы и так далее отдаются каким-то самописным сервисом провайдера, который я расковырял благодаря плагину для плеера Dune.
2. Телевизор с поддержкой CEC (управление с пульта по HDMI) и аппаратным декодированием звука (включая DTS)
3. Роутер ASUS rt-n16 с прошивкой TomatoUSB
4. Raspberry Pi model B

Сразу скажу - я делал из RPi медиацентр, потому мне не нужны X. Посему выбор был простой - взять готовый дистрибутив с XBMC и допилить его под себя.

Начал с Raspbmc и понял что оно не работает. При стриминге SD xvid потока он захлебывается с 90% нагрузкой на процессор (который был разогнан до 900 МГц).

Вторая попытка была OpenELEC. Если что, OpenELEC это жутко обрезанный и жутко оптимизированный дистрибутив линукса с XBMC на борту. Тот же поток, который тормозил в Raspbmc без проблем воспроизводился в OpenELEC и средняя нагрузка на процессор была в районе 20% (если верить top). Откуда такая разница - я не знаю.

После тестирования видео потоков, решил проверить что у нас с iptv и оказалось что все плохо. XBMC не умеет играть udp стримы (хотя omxplayer умеет).

Решение - udpxy. Сначала я кросс-компильнул udpxy под OpenELEC, а потом решил и запустил его на роутере. И так и так все работало хорошо.

Из впечатлений:
1. Для декодирования MPEG2 потока нужно купить ключ. Иначе будет только звук.
2. HD MPEG4 каналы в 720p играются без тормозов при нагрузке на процессор в ~65%
3. Перемотки (понятное дело) нет, но пауза работает
4. Переключение звуковых дорожек (если есть) и остальной функционал работает

Пока все еще тестирую, но пока все хорошо.
Добрый день. Не подскажите как можно скомпилировать и запустить udpxy для openELEC ??

ps. жалко на форуме нет ЛС =(
protheme7
По мне так проще заплатить небольшую сумму и смотреть в свое удовольствие, сейчас смотрю IPTV онлайн черезBilink, говорят он только на территории Украины работает, но я пока лучше сервиса по стоимости не находил

Для написания комментариев необходимо зарегистрироваться