- Почему именно серверная схема и где здесь боль
- Что нужно для Flussonic
- 1) Готовим плейлист .txt
- 2) Конфиг flussonic.conf для запуска IPTV
- 3) Роль плагина iptv в программе передач
- 4) HTTP API Flussonic: как получить текущую медиа-строку
- 5) Аутентификация к API через HTTP
- 6) База данных media для программы передач
- 7) Как извлечь данные текущего эфира и обработать
- 8) Как посчитать оставшееся время и начало следующей
- 9) Динамическое обновление на странице через JavaScript и AJAX
- 10) На чём обычно показывают расписание
- 11) Субтитры closed captions в программе передач
- 12) Как связать Flussonic с вашей системой контента
- Блок для абонента ЛИНК ТВ
- Как активировать IPTV в личном кабинете
- Как получить логин и пароль
- Как оформить подписку на пакеты ТВ программ
- Какие действия с подпиской
- Если услуга IPTV не поддерживается тарифом
- Куда обращаться за поддержкой
- Где смотреть TVIP media
- На TV приставках и SMART TV Android
- На SMART TV LG
- На SMART TV Samsung
- На мобильных устройствах iOS и ANDROID
- Через интернет браузер на PC
- Чек-лист, чтобы программа передач работала у пользователя
- Итог
Ниже — практичный разбор, как собрать программа передач для IPTV на базе Flussonic и как потом это показать на экране пользователя. А ещё — как абоненту подключить и смотреть TVIP media, чтобы всё заработало в реальности, а не только на бумаге.
Почему именно серверная схема и где здесь боль
Представьте: вы подключили iptv, а в интерфейсе видите «канал и всё». Вы не понимаете, передача идёт сейчас или что будет дальше, а пользователь постоянно переключает каналы и просит “поставьте точное расписание”.
Серверные плейлист-подходы исторически решают главную задачу оператора: показывать пользователю “что идёт прямо сейчас”. Но у них есть минусы — например, сложнее управлять рекламной логикой и некоторыми “эфирными” сценариями. Поэтому обычно в интернете и рекомендуют клиентские плейлисты, а для “программы передач” берут то, что проще связать с media-логикой и временем.
Главная идея поста такая:
программа собирается на стороне сервера по данным текущего воспроизведения (media, позиция во времени) и таблице расписания (передача).
Что нужно для Flussonic
Вам понадобятся 4 блока:
- Файл плейлист (.txt) для Flussonic
- Глобальные настройки
flussonic.conf - Плагин iptv (чтобы Flussonic умел работать с IPTV-данными)
- Веб-страница, которая:
- берёт данные через HTTP API,
- обновляет расписание,
- считает оставшееся время и время следующей передачи.
Слово “правильно” тут не абстрактное: оно значит, что Flussonic будет возвращать JSON с current_entry и position, а вы сможете сопоставить это с вашими записями в базе.
1) Готовим плейлист .txt
Формат прост: перечисляете медиофайлы по одному в строке.
Пример (как в логике “server playlist”):
liv/i_out.mp4
liv/ss1.mp4
liv/c1g.mp4
liv/vv.mp4
liv/tr1be.mp4
Важно: пути должны соответствовать тому, где лежат media-файлы на сервере (или тому, как Flussonic их ожидает).
2) Конфиг flussonic.conf для запуска IPTV
Ниже — каркас, в котором ключевые элементы такие:
- порты http,
- подключение
playlist://..., - гео-ограничения (allowed/disallowed),
- stream-настройки,
- plugin iptv и база.
Пример каркаса:
## Global settings:
http 80;
http 8080;
rtsp 554;
rtmp 1935;
loglevel error;
logrequests true;
auth http://yourchannel.ru:8080/tv/auth;
pulsedb /var/run/flussonic;
edit_auth login password;
## Ingest streams:
stream playlist1 {
url playlist://http://yourchannel.tv/pls/playlist.txt;
auth false;
allowed_countries ru;
disallowed_countries us;
domains yourchannel.tv;
meta comment "yourchannel.tv server channel";
}
stream tunneling {
url rtmp://yourchannel.tv:1935/static/playlist1;
auth false;
allowed_countries ru;
disallowed_countries us;
domain yourchannel.tv;
transcoder vb=copy;
}
## Plugins:
plugin iptv {
database sqlite:///opt/flussonic/priv/iptv.db;
}
Зачем тут география
Чтобы один и тот же media-поток не работал там, где это запрещено договором. Flussonic умеет это ограничивать на уровне stream.
3) Роль плагина iptv в программе передач
Плагин iptv нужен не “для красоты”. Он помогает связать IPTV-данные и логику Flussonic с тем, как вы дальше будете строить программу передач.
По сути вы используете связку:
- Flussonic создаёт поток из плейлист,
- Flussonic понимает, что сейчас играет (какой media файл),
- вы через HTTP API забираете current_entry и position,
- по этому определяете, какая передача идёт в эфире.
4) HTTP API Flussonic: как получить текущую медиа-строку
Когда поток запущен, Flussonic отдаёт JSON, например через эндпоинт вида:
/flussonic/api/playlist/playlist1
Пример ответа:
{"current_entry":"liv/c1g.mp4","current_type":"file","duration":null,"position":1739946.5416666667}
Нас интересуют:
current_entry— что сейчас играет (текущий файл media)position— где мы по времени в этом файле (в секундах/доле времени; в зависимости от реализации)
5) Аутентификация к API через HTTP
Обычно доступ к HTTP API Flussonic защищён. Поэтому напрямую браузером можно упереться в авторизацию.
Типовая практика: сделать небольшой серверный скрипт, который:
1. хранит логин/пароль,
2. запрашивает API,
3. возвращает JSON в ваш backend/шаблон.
Идея уровня примера:
<?php
$contents = file_get_contents(
'http://login:password@yourchannel.tv:8080/flussonic/api/playlist/playlist1'
);
print $contents;
Дальше именно этот JSON вы используете для расчётов время.
6) База данных media для программы передач
Для программы передач вам нужна таблица, где каждая запись соответствует передача.
Структура из примера логики:
CREATE TABLE IF NOT EXISTS `media` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`media` varchar(50) NOT NULL,
`duration` time NOT NULL,
`next_duration` varchar(20) NOT NULL,
`description` text NOT NULL,
`cc` enum('yes','no') NOT NULL,
`shedule_time` varchar(20) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
Как читать поля по-человечески:
| Поле | Что означает |
|---|---|
name |
Название передача |
media |
Какой файл (media) соответствует этому выпуску |
duration |
Длительность передачи |
description |
Короткое описание |
cc |
Наличие субтитров closed captions |
shedule_time |
Время начала в расписании |
7) Как извлечь данные текущего эфира и обработать
Схема такая:
- Скрипт берёт JSON из API:
current_entryиposition. - Он сопоставляет
current_entryс полемmediaв таблицеmedia. - Если совпало — вы считаете, что сейчас “в эфире”.
- Если не совпало — показываете будущие записи.
Практически удобный приём: обрезать liv/ и оставить имя файла, чтобы оно совпадало со значением media.
8) Как посчитать оставшееся время и начало следующей
Теперь главное “почему программа передач полезна”.
Если сейчас играет передача с длительностью duration, а текущая позиция position — вы можете:
- вычислить elapsed = сколько прошло
- остаток = длительность − прошедшее
- следующая передача начинается через остаток
Мини-схема расчёта
total = duration (в секундах)
nowPos = position (в секундах)
remaining = total - nowPos
nextStart = nowTime + remaining
На веб-странице это превращается в “Осталось до конца” и “Время начала следующей”.
9) Динамическое обновление на странице через JavaScript и AJAX
Чтобы программа не “застывала”, обновляйте её периодически, например каждые 15 секунд.
Логика:
- есть контейнер
#info - по таймеру вызываете загрузку
data.php(или вашего endpoint) - вставляете обновлённый HTML/данные
Схема:
setInterval(function () {
$("#info").load("data.php");
}, 15000);
10) На чём обычно показывают расписание
В типовой реализации используют:
- Bootstrap — сетка и стили карточек
- Font Awesome — иконки часов, воспроизведения, субтитров
- jQuery — обновление через AJAX
И да, “div” и “кнопка” появляются не из воздуха: это разметка интерфейса.
11) Субтитры closed captions в программе передач
Важно различать две вещи:
- Отображение наличия субтитров в списке
- по полю
cc(yes/no) - Фактический показ субтитров
- это зависит от того, как клиент воспроизводит поток и какие треки переданы
На уровне интерфейса вы можете рядом с время и названием показывать значок:
- если cc = yes → рисуем иконку closed captions
- если cc = no → не показываем
Так пользователь сразу понимает, где есть “перевод в текст”.
12) Как связать Flussonic с вашей системой контента
Практический подход такой:
- Источник расписания может лежать в:
- вашей БД,
- CRM,
- CMS,
- таблицах (например, Excel/Google Sheets → выгрузка → загрузка в MySQL)
- Скрипт обновляет таблицу
media - Затем веб-страница читает её и сравнивает с
current_entryиз Flussonic
С точки зрения “модернизации и расширения” полезны идеи:
- добавить категории,
- добавить “жанр”,
- поддержать несколько каналов (отдельные playlist1, playlist2),
- хранить версии субтитров (язык RU/EN),
- вести историю “что показывали” (для отчётности).
Блок для абонента ЛИНК ТВ
Поисковая фраза про “как сделать программу передач на линк тв” обычно подразумевает не только технику Flussonic, но и то, как реально включить услуга IPTV и смотреть TVIP media.
Как активировать IPTV в личном кабинете
- Войдите в личный кабинет на сайте оператора по вашим логин и пароль (они указаны в договоре).
- В меню выберите действие «Дополнительные действия».
- Нажмите «Активировать IPTV» и затем «Выполнить».
Если действия нет, значит тарифный план может не поддерживать услугу IPTV — в этом случае нужно менять тариф или обращаться в поддержку.
Как получить логин и пароль
Данные для подключения ТВ приставки/проигрывателя (обычно это login/пароль) появляются после активации IPTV. Если в договоре указан email, их могут отправить туда.
Как оформить подписку на пакеты ТВ программ
- После повторного входа в личный кабинет перейдите в раздел IPTV подписки.
- Нажмите «Активировать подписку».
- Выберите пакет и вариант активации (например, тестовый день).
Какие действия с подпиской
- Деактивировать подписку можно в списке подписок (кроме тестовых — по логике примера).
- После активации состояние может обновиться не мгновенно, а в течение минут — это нормально.
Если услуга IPTV не поддерживается тарифом
Здесь решение одно: сменить тариф или обратиться в техподдержку по услуге ТВ. Иначе приставка/приложение не получат доступ.
Куда обращаться за поддержкой
Поддержка оказывается через контактные номера компании (на сайте обычно указаны телефон и форма обращения).
Где смотреть TVIP media
Ниже — именно “где смотреть”, без технических глубин, чтобы у пользователя всё заработало быстро.
На TV приставках и SMART TV Android
- Установите приложение «TVIP media для ТВ»
- Авторизуйтесь логином и паролем из личного кабинета
- Важно: не ставьте версию для смартфонов на ТВ приставку. Для некоторых устройств установка возможна только через APK (пример: Eltex NV-501 — через ручную установку).
На SMART TV LG
- Поддерживаются телевизоры LG 2016 года и новее
- Скачайте «TVIP media» из магазина приложений
- Выберите оператора «ЛИНК» и авторизуйтесь.
На SMART TV Samsung
- Поддерживаются SAMSUNG 2017 года и новее
- Аналогично: установка приложения TVIP media, выбор оператора «ЛИНК», вход.
На мобильных устройствах iOS и ANDROID
- Установите TVIP media
- Выберите оператора «ЛИНК»
- Авторизуйтесь логином и паролем из личного кабинета.
Через интернет браузер на PC
Обычно есть веб-плеер по ссылке на странице оператора. Его используют, когда хочется смотреть без установки приложений.
Чек-лист, чтобы программа передач работала у пользователя
Коротко, чтобы ничего не забыть:
| Этап | Что проверить |
|---|---|
| Плейлист | .txt реально доступен Flussonic и пути к media корректные |
| Flussonic | Включён plugin iptv, правильно задан stream и гео |
| API | В ответе есть current_entry и position |
| БД | Таблица media заполнена и совпадает по имени файла |
| UI | Есть обновление через JS/AJAX и верные расчёты время |
| Субтитры | В БД cc стоит правильно и в плеере субтитры включаются |
Итог
“Сделать программу передач на ЛИНК ТВ” — это соединить два мира:
1) технический — Flussonic, HTTP API, media-таблица и расчёты “в эфире / осталось / следующее”;
2) пользовательский — корректная активация IPTV, подписка и запуск TVIP media на нужном устройстве.
Если любой из блоков ломается, интерфейс теряет смысл: пользователю показывается не та передача и не то время. Поэтому важно тестировать от плейлиста до экрана пользователя.