Модуль Iptv предназначен для организации платных телевизионных трансляций в режиме групповых рассылок Multicast.
Модуль Iptv обеспечивает автоматическую блокировку/разблокировку доступа клиентов к платным телевизионным трансляциям. С этой целью на сетевых коммутаторах, к которым непосредственно подключены клиенты, устанавливаются фильтры 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 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
$ 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
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
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
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
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}