=====Iptv===== Модуль Iptv предназначен для организации платных телевизионных трансляций в режиме групповых рассылок Multicast. Модуль Iptv обеспечивает автоматическую блокировку/разблокировку доступа клиентов к платным телевизионным трансляциям. С этой целью на сетевых коммутаторах, к которым непосредственно подключены клиенты, устанавливаются фильтры IGMP-сообщений. =====Возможности===== * Доступ клиентов только к подписанным каналам средством фильтрации IGMP на управляемых коммутаторах * Ведение абонентских счетов * Установка количества каналов на определённую тарифную модель * Выбор Тарифных моделей абонентом. * Включение дополнительных каналов из пользовательского интерфейса * Возможность установки цены на каждый отдельный канал * [[abills:docs:modules:iptv:ru?&#middleware_stalker|Middleware Stalker]] =====Как работает===== =====Установка===== Заведение таблиц # mysql -D abills < abills/db/Iptv.sql подключение модуля\\ **abills/libexec/config.pl** @MODULES = ( 'Iptv' ); =====Настройка===== **abills/libexec/config.pl**\\ ^ $conf{IPTV_ALLOW_GIDS}='1,23,56'; | Разрешить использование сервиса только определённым группам пользователей. | ^ $conf{IPTV_CLOSE_PERIOD}=1; | Снимать месячную абон. плату только после установки флага период закрыт. \\ Флаг устанавливается в меню / System configuration/ Television/ Closed Period/ | ^ $conf{IPTV_USER_CHG_TP}=1; | Изминение тарифного плана на следующий учётный период | ^ $conf{IPTV_USER_CHG_CHANNELS}=1; |Выбор каналов из интерфейса пользователя. Администратор может назначать дневную и месячную цену за просмотр каналов. | ^ $conf{IPTV_USER_EXT_CMD}='iptv_access_ctl.pl %LOGIN%'; | Внешняя программа которая выполняется при добавлении и изменении данных по сервису для пользователя \\ Программе передаются следующие данные: \\ %LOGIN% \\ %TP_ID% \\ %CID% \\ %STATUS% \\ | =====Работа с системой====== ====Каналы===== (**/ System configuration/ IPTV/ Channels/**)\\ Заведение каналов ^Number: | Номер канала | ^Name: | Название канала | ^Port: | Порт трансляции потока | ^Disable: | Отключить | ^Describe:| Описание канала | ====Тарифные планы==== (**/ System configuration/ IPTV/ Tarif plans/**)\\ заведение тарифных планов ^# | Ид тарифного плана | ^Name: | Название тарифного плана | ^Alert: | Предупреждение об исчерпании баланса | ^Day fee: | Дневная абон. плата | ^Month fee: | Месячная абон. плата | ^Activation: | Сумма активизации ТП | ^Change: | Сумма изменения ТП | ^Age (Days): | Время существования сервиса | ^Payment type: | Тип оплаты | (**/ System configuration/ Television/ Tarif plans/ Intervals/**)\\ Заведение временных интервалов использования сервиса и каналов предоставляемых пользователям.\\ Также указывается месячная и дневная плата за предоставление каналов. ====Флаг закрытия периода==== При использовании данной функции абон. плата снимается с аккаунтов только после его установки. (Данный флаг можно использовать только при включении опции $conf{IPTV_CLOSE_PERIOD}=1;) При установке влага система оповещает что следующее действие будет снятие абон. платы, а после снятия в поле статус заноситься дата снятия абон. платы. ====Пользователи==== (** / Customers/ Logins/ Information/ Services/ Television/ **) Активизация пользовательских сервисов ^Tarif plan: | Тарифный план | ^Filter-ID: | ИД фильтра | ^Disable: | Отключить | ** Каналы ** - Выбор каналов абонента. администратор может назначить каналы немедленно или включить в расписание измнение каналов на следующий учётный период. Для модуля Iptv учётный период, кроме периода 1 день, всегда считается с начало до конца месяца и не учитывается дата активизации. ^# | Статус канала. Текущий и если стоит расписание то тот что после применения расписания. | ^Number | Номер канала | ^Name | Название канала | ^Description | Описание канала | ^Month Price | Месячная абон. плата | ^Day Price | Дневная абон. плата | ^Port | Порт, если используется Iptv. | ====VLC==== Установка VLC 1.0.5 cd /usr/ports/multimedia/vlc make WITH_DEBUG=yes WITHOUT_QT4=--disable-qt4 DEBUG=--enable-debug DEBUG=--enable-release WITH_AALIB=--enable-aa WITH_FAAC=--with-ffmpeg-faac WITHOUT_DBUS=--disable-dbus WITHOUT_NLS=--disable-nls WITHOUT_GNOMEVFS=--disable-gnomevfs WITHOUT_SKINS=--disable-skins2 WITH_WIN32_CODECS=--enable-loader WITH_REMOTE_OSD=--disable-remoteosd WITHOUT_PULSEAUDIO=--disable-pulse WITHOUT_HAL=--disable-hal WITHOUT_AVAHI=--disable-bonjour WITHOUT_CDPARANOIA=--disable-cdda WITHOUT_CDPARANOIA=--disable-cddax WITHOUT_DVBPSI=--disable-dvbpsi WITHOUT_DVDNAV=--disable-dvdnav WITHOUT_FLAC=--disable-flac WITH_FRIBIDI=--enable-fribidi WITHOUT_DIRAC=--disable-dirac WITHOUT_SCHROEDINGER=--disable-schroedinger WITH_LUA=--enable-lua WITHOUT_CACA=--disable-caca WITHOUT_DTS=--disable-dca WITHOUT_VLC_MOZILLA_PLUGIN=yes WITH_SHOUT=--enable-shout WITHOUT_TAGLIB=--disable-taglib WITHOUT_MODDEMUX=--enable-mod WITHOUT_MPCDEMUX=--enable-mpc WITHOUT_SAMBA=--disable-smb WITHOUT_XOSD=--disable-xosd WITHOUT_V4L=--disable-v4l WITHOUT_V4L=--disable-dvb WITHOUT_X11=--disable-x11 && make install ===UDP-unicast=== ==На сервере== $ cvlc -vvv /usr/home/test/Amon_Amarth.avi --sout '#std{access=udp,mux=ts,dst=192.168.0.1:1234}' или *.avi $ cvlc -vvv /usr/home/test/Amon_Amarth.avi --sout '#transcode{vcodec=h264,vb=800,scale=1,acodec=mp4a,ab=128 ,channels=2,samplerate=44100}:std{access=udp,mux=ts,dst=192.168.0.1:1234} ==На клиенте== Открываем Медиа/открыть URL/ Выбираем Протокол UDP, вводим наш IP адрес, Порт 1234 Пример 192.168.0.1:1234 ===NVOD=== ==На сервере== 1. С управлением и выбором файлов через веб интерфейс $ cvlc -vvv --extraintf http --http-host 192.168.0.1:8080 Войдя в веб интерфейс выбираем VLM interface > broadcast Name имя Enable Loop Input: избираем файл Output: UDP адрес из которого будем пересматривать, порт не задаем НАЖИМАЕМ PLAY *.mp4 #transcode{vcodec=mp2v,vb=128,scale=1}:std{access=udp,mux=ts,dst=192.168.0.1:1234} #transcode{vcodec=mp4v,vb=256,scale=1}:std{access=udp,mux=ts,dst=192.168.0.1:1234} очень плохо #transcode{vcodec=DIV2,vb=256,scale=1}:std{access=udp,mux=ts,dst=192.168.0.1:1234} очень плохо #transcode{vcodec=DIV3,vb=256,scale=1}:std{access=udp,mux=ts,dst=192.168.0.1:1234} очень плохо #transcode{vcodec=WMV1,vb=256,scale=1}:std{access=udp,mux=ts,dst=192.168.0.1:1234} плохо #transcode{vcodec=WMV2,vb=256,scale=1}:std{access=udp,mux=ts,dst=192.168.0.1:1234} очень плохо #transcode{vcodec=MJPG,vb=256,scale=1}:std{access=udp,mux=ts,dst=192.168.0.1:1234} квадратики 2. Из конфигурационного файла $ cvlc -vvv -I telnet --telnet-password "12345" --vlm-conf=/usr/home/test/vlc.streaming2.conf $ vim /home/vlc/vlc.streaming2.conf new Amon broadcast enabled setup Amon input file:////usr/home/test/Amon_Amarth.avi loop setup Amon output #rtp{access=udp,mux=ts,dst=192.168.0.1,port=1234} new channel2 broadcast enabled setup channel2 input file:////usr/home/test/Six_Feet_Under-Deathklaat.m2v loop setup channel2 output #rtp{access=udp,mux=ts,dst=192.168.0.1,port=1234} control Amon play control channel2 play Также для есть возможность задавать график Для этого заходим в schedule ==На клиенте== Открываем Медиа/открыть URL/ Выбираем Протокол UDP, вводим IP адрес из которого будет прием : порт тот что на сервере избрали или 1234/ имя файла Пример 192.168.0.1:1234/Amon ===VOD=== ==На сервере== 1. Из конфигурационного файла $ cvlc -vvv --vlm-conf=конфигурационный файл --rtsp-host ИР сервера:порт пример $ cvlc -vvv --vlm-conf=/usr/home/test/VOD.conf --rtsp-host 192.168.0.2:5554 --rtsp-caching=3000 2. Из веб интерфейса Убедимся что наша внешняя ИР есть в /usr/local/share/vlc/http/.hosts $ cvlc -vvv --extraintf http --http-host 10.0.0.1:8080 --rtsp-host 10.0.0.1:5554 --rtsp-caching=3000 3. Из конфигурационного файла + добавление вручную через telnet $ cvlc -vvv --color -I telnet --telnet-password "12345" --vlm-conf=/usr/home/test/vlcVOD.conf --rtsp-host 192.168.0.3:5554 --rtsp-caching=3000 Конфигурационный файл vim /usr/home/test/vlcVOD.conf new Amon_Amarth vod enabled setup Amon_Amarth input Amon_Amarth.avi setup Amon_Amarth new Moonspell vod enabled setup Moonspell input Moonspell.mpg setup Moonspell new Six_Feet_Under-Deathklaat vod enabled setup Six_Feet_Under-Deathklaat input Six_Feet_Under_Deathklaat.m2v setup Six_Feet_Under-Deathklaat new Spineshank vod enabled setup Spineshank input Spineshank.mpeg setup Spineshank new Alice_Cooper_Poison.avi vod enabled setup Alice_Cooper_Poison.avi input Alice_Cooper_Poison.avi setup Alice_Cooper_Poison.avi ==На клиенте== Открываем Медиа/открыть URL/ Выбираем Протокол RTSP вводим наш IP адрес : порт тот что на ВОД сервере выбрали / имя файла Пример 192.168.0.3:5004/Moonspell ===HTTP=== ==На сервере== 1. Из веб интерфейса $ cvlc -vvv --extraintf http --http-host 10.0.0.1:8080 Войдя в веб интерфейс выбираем VLM interface > broadcast Name имя Enable Loop Input: выбираем файл Output: HTTP адрес сервера, порт больше 1024 например 8082 2. Из конфигурационного файла $ cvlc -vvv --vlm-conf=/usr/home/test/httpbroadcast.conf $ vim /usr/home/test/httpbroadcast.conf new channel1 broadcast enabled setup channel1 input Moonspell.mpg setup channel1 output #standard{mux=ts,access=http,url=10.0.0.1:8082/stream1} new channel2 broadcast enabled setup channel2 input Amon_Amarth.avi setup channel2 output #standard{mux=ts,access=http,url=10.0.0.1:8082/stream2} control channel1 play control channel2 play ==На клиенте== Открываем Медиа/открыть URL/ Выбираем Протокол HTTP вводим IP адрес сервера : порт тот что на HTTP сервере выбрали Пример 10.0.0.1:8082 ===MULTICAST=== ==На сервере== 1. Из веб интерфейса $ cvlc -vvv --extraintf http --http-host 10.0.0.1:8080 --rtsp-host 10.0.0.1:5554 --rtsp-caching=3000 --ttl=12 $ cvlc -vvv /usr/home/test/Amon_Amarth.avi --sout '#std{access=udp,mux=ts,dst=239.255.1.1:1234}' --ttl=12 --udp-caching=3000 2. Из командной сроки $ vlc -vvv /usr/home/test/Amon_Amarth.avi --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}: rtp{mux=ts,dst=239.255.12.42,port=1234,sap,name="TestStream"}' --ttl=12 3. Из конфигурационного файла $ cvlc -vvv --vlm-conf=/usr/home/test/test --ttl=12 vim /home/test/test new channel1 broadcast enabled setup channel1 input /usr/home/test/Amon_Amarth.avi setup channel1 output #rtp{mux=ts,dst=239.255.1.1,sap,name="Channel1"} new channel2 broadcast enabled setup channel2 input /usr/home/test/Amon_Amarth.avi setup channel2 output #rtp{mux=ts,dst=239.255.1.2,sap,name="Channel2"} control channel1 play control channel2 play setup channel1 loop setup channel2 loop ==На клиенте== запускаем vlc выбираем «Настройки» -> «Настройки» -> раскрываем «Выведение потока», а там ищем «Модули вывода», в поле «Интерфейс выведения Ipv4 multicast» пишем IP-адрес который прописан на вашей сетевой карте ( что смотрит в сторону сервера того, которое вещает поток), жмем «Сохранить» После того, как выполнили настройки: «Файл» ->«Открыть URL» в строке MRL пишем: udp://@239.255.1.1 (что бы посмотреть видео из файла file_1.avi) или udp://@239.255.1.2 (что бы посмотреть видео из файла file_2.avi соответственно) ===Трансляция на веб странице в флеш плеере=== Нужно установить Flowplayer в папку вебсервера и создать страничку примерно как эта vim /usr/local/www/apache22/data/web/webvlc.html test
1. Из веб интерфейса $ cvlc -vvv --extraintf http --http-host 192.168.0.3:8080 --rtsp-host 192.168.0.3:5554 --rtsp-caching=3000 --ttl=12 Войдя в веб интерфейс выбираем VLM interface > broadcast Name имя Enable Loop Input: избираем файл Output: HTTP адрес сервера, порт больше 1024 например 8082 #transcode{vcodec=FLV1,acodec=mp3,sameplerate=44100}:std{access=http{mime=video/x-flv},mux=ffmpeg{mux=flv},dst=192.168.0.3:8082/stream.flv} #transcode{vcodec=FLV1,acodec=mp3,vb=200,deinterlace,fps=25,samplerate=44100,ab=32}: std{access=http,mux=ffmpeg{mux=flv},dst=192.168.0.3:8082/stream.flv} ====Контроль доступа и управление абонентов==== В системе сделан контроль доступа абонентов к услугам сервиса телевидение. контроль осуществляется в зависимости от: - тарифного плана (предоплата/послеоплата) и сумы на счету абонента - Статуса абонента (активно, блокировано, приостановлено ) - Разрешенных каналов Для контроля доступа используются данные подключения абонента Порт, Коммутатор из сервиса [[abills:docs:modules:dhcphosts:ru|IP/DHCP]], сами коммутаторы заводятся в секции ''/ Система / Сервера доступа /''. Для серверов достпа обязательно нужно указывать данные управления ими: IP Доступа, логин или пароль в зависимости от типа управления оборудованием. Данные о разрешённых пользователю портах, IP адресах серверов вещания берутся из настроек тарифного плана абонента \\ Для управления абонентами используется программа iptv_access_ctl.pl, программа является универсальной, может вызывать внешние программы контроля доступа. Параметры: |ACTION | действие \\ up - Поднять интерфейс \\ down - опустить интерфейс\\ | |LOGIN |Логин для контроля | |NAS_ID |Сервер доступа (В большинстве случаев єто коммутатор к которому подключён абонент) | |TP_ID |Тарифный план | |UP_CMD= |Внешняя команда для предоставления доступа | |DOWN_CMD= |Внешняя команда для блокирования доступа | |DEBUG=... |Режим отладки | |ROWS=.. |Количество строк | |help |Меню помощи | Внешним программам передаются следующие параметры.\\ # iptv_access_ctl.pl UP_CMD="/usr/abills/Abills/modules/Iptv/enable up NAS_IP=%NAS_IP% NAS_PORT=%NAS_PORT% TP_ID=%TP_ID%" \ DOWN_CMD="/usr/abills/Abills/modules/Iptv/enable down NAS_IP=%NAS_IP% NAS_PORT=%NAS_PORT% TP_ID=%TP_ID%" список параметров |%LOGIN% | Логин абонента | |%TP_ID% | Тарифный план | |%NAS_IP% | IP коммутатора к которому подключён абонент | |%NAS_LOGIN% | Пароль доступа к коммутатору | |%NAS_PASSWORD% | Пароль доступа к коммутатору | |%NAS_TYPE% | Пароль доступа к коммутатору | |%NAS_PORT% | Порт подключения абонента. | Информация о оборудовании к которому подключён абонент берётся с сервиса IP/DHCP ====MIDDLEWARE STALKER==== {{http://i-s.od.ua/stalker/logo.jpg|http://i-s.od.ua/stalker/index.html}} \\ Модуль работает с v 4.8.42 версией stalker middleware. Работа производиться напрямую с базой данных и для корректной работы нужно размещать базу данных Stalker на том же сервер что и ABillS. Для работы с удалённым сервером Stalker нужно использовать модуль взаимодействия с API\\ Возможности:\\ * Регистрация Set-top box в билинге * Определение незарегистрированных * Отключение по признаку баланса или статуса акаунта или сервиса * Управление каналами в тарифном плане * Управление дополнительными каналами абонентов * Отправка сообщений через биллинг абонентам * Оповещение о израсходованном депозите (в разработке) Дополнительные параметры ^$conf{IPTV_STALKER_DB}='stalker_db'; | База STALKER | ^$conf{STALKER_TP_ID}=1000; | Нумерация экспортированных тарифных планов будет начинаться с заданного числа | [[abills:docs:manual:iptv_stalker|Настройка STALKER MIDDLEWARE]] ==== Экспорт каналов с Stalker'a ==== **Система -> Телевидение -> Каналы** {{:abills:docs:modules:iptv:channels_export.png?200|Меню}} Внизу под таблицей есть кнопка "Экспорт Stalker" которая импортирует все каналы с базы данных stalker'a. {{:abills:docs:modules:iptv:channels_export_button.png?200|кнопка "Экспорт Stalker" которая импортирует все каналы с базы данных stalker'a}} === Добавление каналов === **Система -> Телевидение -> Каналы** Заполняем форму добавления канала:\\ {{:abills:docs:modules:iptv:stalker_add_channel_form.png?200|Форма добавление канала}}\\ Канал успешно добавлен. === Редактирование канала === Нажимаем на кнопку редактировать:\\ {{:abills:docs:modules:iptv:stalker_channel_change_button.png?200|Кнопка редактирования канала}}\\ Редактируем нужные данные и жмем кнопку изменить:\\ {{:abills:docs:modules:iptv:stalker_channel_change_form.png?300|Форма редактирования канала}}\\ === Удаление канала === Возле нужно канала жмем кнопку удалить: {{:abills:docs:modules:iptv:stalker_del_channel_button.png?200|Кнопка удаления канала}} ===== Экспорт тарифный планов с базы данных Stalker ===== В **config.pl** нужно **добавить обязательный параметр**:\\ ^$conf{STALKER_TP_ID}=10400; | Нумерация экспортированных тарифных планов будет начинаться с заданного числа (В этом примере это 10400). | **Система -> Телевидение ->Тарифные планы** Перед экспортом тарифных планов нужно сначала **экспортировать каналы с базы Stalker**(см. раздел "Экспорт каналов с Stalker'a")\\ После экспорта каналов, внизу под таблицей тарифных планов жмем кнопку "Stalker Экспорт тарифных планов":\\ {{:abills:docs:modules:iptv:stalker_export_tp_button.png?200|кнопка "Stalker Экспорт тарифных планов"}} ==== Заведение тарифного плана ==== **Система -> Телевидение ->Тарифные планы -> Добавить** {{:abills:docs:modules:iptv:tariff_plan_add.png?200|Меню добавления тарифного плана}} Заполняем форму и нажимаем кнопку добавить. \\ {{:abills:docs:modules:iptv:stalker_add_tp_form.png?|Форма добавления тарифного плана}} Тарифный план создан. \\ Для активации тарифного плана нужно создать пакет каналов, для этого нужно зайти в интервалы выбранного тарифного плана:\\ {{:abills:docs:modules:iptv:intervals.png?200| Кнопка "интервалы"}} и нажать кнопку каналы :\\ {{:abills:docs:modules:iptv:channels_button.png?200|Кнопка каналы}} в открывшимся списке каналов отметить нужные каналы и нажать кнопку изменить:\\ {{:abills:docs:modules:iptv:channels_list.png?200|в открывшимся списке каналов отметить нужные и нажать кнопку изменить}} ==== Изменение пакета каналов для тарифного плана ==== Для изменения каналов в выбранном тарифном плане нажимаем кнопку интервал:\\ {{:abills:docs:modules:iptv:intervals.png?200| Кнопка "интервалы"}} и нажать кнопку каналы :\\ {{:abills:docs:modules:iptv:channels_button.png?200|Кнопка каналы}} в открывшимся списке каналов отметить нужные каналы и нажать кнопку изменить:\\ {{:abills:docs:modules:iptv:channels_list.png?200|в открывшимся списке каналов отметить нужные и нажать кнопку изменить}} ==== Активация телевидения у пользователя ==== **-> Клиенты**\\ Выбираем нужного пользователя. \\ В правом меню выбираем пункт Телевидение:\\ {{:abills:docs:modules:iptv:menu_tv.png?200|В правом меню выбираем пункт Телевидение}}\\ В открывшейся форме выбираем поля **Тарифный план**, а также **Set-top box**(MAC адрес оборудования которое нужно привязать к этому пользователю):\\ {{:abills:docs:modules:iptv:activation_form.png?200|В открывшейся форме выбираем поля **Тарифный план**, а также **Set-top box**}} После чего, нажимаем кнопку активации. При повторном заходе в данное меню, под формой будет отображаться таблица с доступными каналами. Количество каналов зависит от установленного тарифного плана. ==== Отправка сообщений пользователю ==== Выбираем нужного пользователя. \\ В правом меню выбираем пункт Телевидение или \\ **Клиенты -> Логины -> Информация -> Сервисы -> Телевидение**\\ Если пользователь активирован(выбран тариф. план телевидения и привязан Set-top box) то отправить сообщение можно при помощи кнопки:\\ {{:abills:docs:modules:iptv:send_msg_button.png?200|Отправить сообщение}}\\ откроется форма, в которую нужно ввести текст сообщения и нажать кнопку отправить:\\ {{:abills:docs:modules:iptv:send_msg_form.png?200|Форма отправки сообщений}}\\ =====Stalker API===== **Установка** cp Stalker_api.pm /usr/abills/Abills/modules/Iptv/ **Параметры настройки**\\ **config.pl** $conf{IPTV_STALKER_API_LOGIN}='stalker'; $conf{IPTV_STALKER_API_PASSWORD}='secret_pass'; $conf{IPTV_STALKER_API_HOST}='192.168.1.5/stalker_portal/api/'; $conf{IPTV_STALKER_DEBUG}=0; **Включение на Stalker API** \\ **server/config.ini** [server_api] enable_api = true api_auth_login = stalker api_auth_password = secret_pass enable_api_log = true узнать версию портала можно в файле stalker_portal/c/version.js переменная var ver = '4.8.57'; ====Экспорт данных с Stalker==== **/ Настройка / Телевидение/ Stalker/** Данное меню разрешает просматривать данные с middleware и экспортировать их в биллинг ===Экспорт тарифных планов=== При заведении тарифных планов в middleware Stalker обязательно укажите external_id так как по этому полю будут синхронизироваться ТП с MIddleware Stalker. Для экспорта тарифных планов в билинг нужно выбрать под меню **Тарифные планы** (''/ Настройка / Телевидение/ Stalker/'') и нажать на кнопку добавить нужного тарифного плана. ====Агент контроля Stalker==== # /usr/abills/libexec/billd stalker_online Данный агент контролирует состояние Stalker и управляет аккаунтами абонентов заведёнными в middleware. \\ **Возможности** \\ * Получает данные о активных приставках и сообщает об этом биллингу (журнал / Мониторинг / Телевидение). * Выключает не зарегистрированные в билинге приставки * Привязывает мак адреса приставок к аккаунтам абонентов при первом подключении * Отключает на middleware Stalker абонентов отключенных в биллинге * Следит за состоянием счета абонента и отключает должников * Устанавливает дату окончания пакета при первом подключении приставки * Отключает абонентов с истекшим пакетом Данную программу стоит запускать через cron с интервалом 5 минут **/etc/crontab** */5 * * * * root /usr/abills/libexec/billd stalker_online