Posted By: tdr (smrt trotlum) on 'CZtv'
Title:     TV na Popcornu WAS: Re: Kombo STB a prepinani programu
Date:      Tue Jan  6 14:53:11 2009

Na jetpacovu zadost pisu, jak dostat TV nebo jine streamovane video do Popcorn 
Hour A-110. Myslim, ze i treba Sarta by to mohlo zajimat.

Mam na serveru s DVB tunery pusteny www server a na nem HTML stranku se 
seznamem programu, kterou mam na Popcornu pridanou do Media Sources treba jako 
http://192.168.125.1/pvr/tv.html. Osvedcila se mi tabulka s ikonkami danych 
TV, rozmer ikony 50x50 nebo 75x50 bodu, max. 4 ikony na jeden radek v tabulce 
na klasicke PAL televizi. Na HD to bude chtit asi vytunit. ;-) Pokud je na 
kabelu programu opravdu hodne, neni problem tridit programy tematicky do 
podstranek, Popcorn v tom umi hezky chodit. 

1) Pokud je dana televize na serveru permanentne streamovana napr. 
Getstreamem z DVB-T, staci odkaz
<a href="http://192.168.125.1:8101/ct1" vod>
<img src="http://192.168.125.1/pvr/ct1.gif"><br>CT 1</a>

2) Pokud jde o kabelovku, nemuzu streamovat vsechny programy naraz, tolik 
karet nemam. Tam jsem si pomohl timhle:
<a href="http://192.168.125.1/cgi-bin/tv.cgi?kanal=csfilm" vod>
<img src="http://192.168.125.1/pvr/csfilm.gif"><br>CS Film</a>

V obou pripadech je dulezite mit to "vod" (video-on-demand) v A tagu, aby 
Popcorn vedel, ze nema odkaz otevirat jako HTML stranku, ale zacit prehravat 
stream.

Aby se mi snadneji rozpoznaval vlc proces spusteny z CGI skriptu, udelal jsem 
si symbolickou linku vlc-tv ukazujici na vlc. Kostra CGI skriptu pak vypada 
takto: 

#!/usr/bin/perl
{

# prvni cislo je PID v ramci muxu, druhe cislo frekvence muxu v Hz
...
  $kanaly{'noe'}="1,242000000";
  $kanaly{'cnn'}="2,242000000";
  $kanaly{'nasn'}="3,242000000";
  $kanaly{'axncrime'}="4,242000000";
  $kanaly{'axnscifi'}="5,242000000";
  $kanaly{'history'}="6,242000000";
  $kanaly{'markiza'}="1,250000000";
  $kanaly{'joj'}="2,250000000";
  $kanaly{'axn'}="3,250000000";
  $kanaly{'filmp'}="4,250000000";
  $kanaly{'hallmark'}="5,250000000";
  $kanaly{'csfilm'}="6,250000000";
  $kanaly{'jimjam'}="7,250000000";
  $kanaly{'filmbox'}="1,258000000";
  $kanaly{'mgm'}="2,258000000";
  $kanaly{'mtv'}="3,258000000";
  $kanaly{'vh1'}="4,258000000";
  $kanaly{'vh1classic'}="5,258000000";
  $kanaly{'jetix'}="6,258000000";
  $kanaly{'minimax'}="7,258000000";
...

  @ARGS=split('&',$ENV{'QUERY_STRING'});
  $kanal="ct1";

...

  foreach (@ARGS)
  {
    ($key,$value)=split('=',$_);
    if ($key eq "kanal") { $kanal=$value; }
...
  }

  @pid=split / +/,`ps -ef|grep vlc-tv|grep -v grep`;
  if ($pid[1]) { `kill $pid[1]`; sleep 1; }
 
  if ($kanaly{$kanal} ne "")
  {
    ($program,$freq)=split /,/,$kanaly{$kanal},2;
    `vlc-tv -I dummy --ts-es-id-pid --program=$program 
      --dvb-adapter=0 dvb: --dvb-frequency=$freq --dvb-srate=6900000 
      --dvb-modulation=64 --sout '#standard{access=http,mux=ts,dst=:8102}' 
      > /dev/null 2>&1 &`;
  }
  sleep 2; # aby melo vlc cas nabehnout
  print "Location: http://192.168.125.1:8102nn";
}

Parametry --dvb-modulation a --dvb-srate samozrejme zalezi na tom, co dava 
kabelovka.

Enjoy!

 


Nejlepsi polevka je pivo !!!
                                           _______________________________
                                                       tdr, v.r.
          

Search the boards