Translations of this page:

Iptv

Модуль Iptv предназначен для организации платных телевизионных трансляций в режиме групповых рассылок Multicast.

Модуль Iptv обеспечивает автоматическую блокировку/разблокировку доступа клиентов к платным телевизионным трансляциям. С этой целью на сетевых коммутаторах, к которым непосредственно подключены клиенты, устанавливаются фильтры IGMP-сообщений.

Возможности

  • Доступ клиентов только к подписанным каналам средством фильтрации IGMP на управляемых свичах
  • Ведение абонентских счетов
  • Установка количества каналов на определённую тарифную модель
  • Выбор Тарифных моделей абонентом.
  • Включение каналов из пользовательского интерфейса
  • Возможность установки цены на каждый отдельный канал

Как работает

Установка

Заведение таблиц

# 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; Выбор каналов из интерфейса пользователя. Администратор может назначать дневную и месячную цену за просмотр каналов.

Работа с системой

Каналы

(/ 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/pigich/Amon_Amarth.avi --sout '#std{access=udp,mux=ts,dst=192.168.0.1:1234}'

или *.avi

$ cvlc -vvv /usr/home/pigich/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/pigich/vlc.streaming2.conf
$ vim /home/vlc/vlc.streaming2.conf
new Amon broadcast enabled 
  setup Amon input file:////usr/home/pigich/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/pigich/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/pigich/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/pigich/vlcVOD.conf --rtsp-host 192.168.0.3:5554 --rtsp-caching=3000

Конфигурационный файл

vim /usr/home/pigich/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/pigich/httpbroadcast.conf
$ vim /usr/home/pigich/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/pigich/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/pigich/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/pigich/test --ttl=12
vim /home/pigich/test
new channel1 broadcast enabled
  setup channel1 input /usr/home/pigich/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/pigich/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


  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
      <title>test</title>
      <script type="text/javascript" src="flowplayer-3.1.4.min.js"></script>  
      <!-- some minimal styling, can be removed -->
      <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
      <center>
              <!-- this A tag is where your Flowplayer will be placed. it can be anywhere -->
              <a href="http://192.168.0.3:8082/stream.flv"
                       style="display:block;width:320px;height:256px"
                       id="player">
              </a>
              <!-- this will install flowplayer inside previous A- tag. -->
              <script>
                      flowplayer("player", "flowplayer-3.1.5.swf");
              </script>
      </center>
</body>
</html>

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/iptv/ru.txt · Последние изменения: 2010/06/03 18:06 От pigich
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki