=====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
*/5 * * * * root /usr/abills/libexec/billd stalker_online