
 Първоначално публикувано от 
portokala123    Здравейте, наскоро забелязах в темата за Samsung, че поляците са направили плеарче през RSS. Много удобна програмка като цяло и дота бързо я развиват и й добавят функционалност. Та като я видях си помислих дали не мога да направя каналите на iptv.bg да се гледат. След доста ручкане и псуване успях да ги подкарам през плеарчето. Естесвено не мина без главоболия и псуване по адрес на iptv.bg, като основния проблем естесвено е малоумния кодек който ползват за стрийма - asf контейнер с wmv кодек 

 Естествено плеара упорито отказа да го пусне и се наложи да преконвертира стрийма през vlc. В крайна сметка всичко тръгна, но пък се получи доста сложно 
 
 
Процедурата е доста сложна! Да не кажете, че не съм продопредил 
 
 
Така ето софтуера, който се използва:
1. 
http://www.wampserver.com/ -това е сървар с поддръжка на PHP, MySQL и рани други благинки.
2. 
http://www.videolan.org/ - през този плеар се конвертира стрийма към нещо което телевизора може да пусне.
3. Самия NetPlayer инсталиран на телевизора 
Исталация на vlc
1. Изтеглете vlc от 
http://sourceforge.net/projects/vlc/...2.exe/download
2. Инсталирайте го в папка c:\VLC а не в стандартнат 
Инсталация на 
http://www.wampserver.com/:
1. Изтегляте пакета от 
http://www.wampserver.com/en/download.php съответно за 32 или 64 бит според Window-са ви.
2. Инсталирате пакета
3. Пускате го
4. Понже стандартната конфифурация е доста "затегната" трябва да я смените с тази. Цъкате на иконката на wamp -> Apache -> httpd.conf  
 Код:
 ServerRoot "c:/wamp/bin/apache/apache2.2.17"
Listen 80
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule php5_module "c:/wamp/bin/php/php5.3.5/php5apache2_2.dll"
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon
Group daemon
</IfModule>
</IfModule>
ServerAdmin admin@localhost
ServerName *:80
DocumentRoot "c:/wamp/www/"
<Directory />
  Options FollowSymLinks
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>
<Directory "c:/wamp/www/">
  Options Indexes FollowSymLinks
  AllowOverride all
  Order Allow,Deny
  Allow from all
</Directory>
<IfModule dir_module>
  DirectoryIndex index.php index.php3 index.html index.htm
</IfModule>
<FilesMatch "^\.ht">
  Order allow,deny
  Deny from all
  Satisfy All
</FilesMatch>
ErrorLog "c:/wamp/logs/apache_error.log"
LogLevel warn
<IfModule log_config_module>
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  LogFormat "%h %l %u %t \"%r\" %>s %b" common
  <IfModule logio_module>
   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
  </IfModule>
  CustomLog "c:/wamp/logs/access.log" common
</IfModule>
<IfModule alias_module>
  ScriptAlias /cgi-bin/ "cgi-bin/"
</IfModule>
<IfModule cgid_module>
</IfModule>
<Directory "cgi-bin">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>
DefaultType text/plain
<IfModule mime_module>
  TypesConfig conf/mime.types
  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php .php3
</IfModule>
Include conf/extra/httpd-autoindex.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
Include "c:/wamp/alias/*"  5. Понеже ще се налага да се изпълняват команди като taskkill трябва да на сървиса на апачето да смени потребителя с някой администраторски. Win + R -> services.msc -> намирате wampapache -> десния бутон properties -> Log On -> This account -> въвеждате админиски акаунт с парола (паролата е задължителна) -> ОК -> десния бутон restart на сървиса.  
Пускане на php-то, което обработва каналите:
1. Влизате в C:\wamp\www 
2. Създавате папка tv
3. Създавате файл index.php
4. Съдържанието на index.php 
 Код:
 <?php
define('SERVICE_URL', $_SERVER['HTTP_HOST'].':8888/tv/');
define('SITE_URL', $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
define('SITE_PATH', str_replace('\\', '/', dirname(__FILE__)));
define('TASK_KILLER', 'C:\Windows\System32\taskkill.exe /IM vlc.exe /F');
define('VLC_PATH', 'C:\VLC\vlc.exe');
define('PHP_PATH', 'C:\wamp\bin\php\php5.3.5\php.exe');
$login   = ''; // Сменете с вашия логин
$pass    = ''; // Сменете с вашата парола
$cont = URL_get('http://iptv.bg/watch');
preg_match_all("/challenge\s+=\s+'([a-z0-9]+)'/", $cont, $matches);
if(isset($matches[1][0])) {
  ## Трябва да се логнем
  
  $challenge = $matches[1][0];
  $password_md5 = md5($pass);
  $password_hash = md5($challenge.'/'.$password_md5.'/'.$login);
  
  URL_get('http://iptv.bg/login?save=1&hash=1&login='.$login.'&password='.$password_hash.'&go=index.php');
  $cont = URL_get('http://iptv.bg/watch');
}
preg_match_all('/<li[^>]+>.*<b>([^<]+)<\/b>.*<em>(.*)<\/em>.*<a\s+id="[^"]+"\s+href="([^"]+\/([^\/]+)\.asx)"/', $cont, $links);
$list = '';
if(isset($_GET['tv'])) {
  
  foreach($links[1] as $key => $link) {
    $channel = $links[4][$key];
    if($channel != $_GET['tv']) continue;
    
    $title = $links[1][$key].(!empty($links[2][$key]) ? ' - ' : '').str_replace('<br />', ' » ', $links[2][$key]);
    
    PLAY_url($links[3][$key]);
    
    $list .= '
    <item> 
    <title><![CDATA[ '.$title.' ]]></title> 
    <description><![CDATA[ <img src="http://i.iptv.bg/logos/'.$channel.'.png" /> '.$title.' ]]></description> 
    <enclosure url="http://'.SERVICE_URL.'" type="video/mpeg" /> 
    </item>';
  }
  
} else {
  $list = '<title>IPTV.BG</title>';
  foreach($links[1] as $key => $link) {
    $channel = $links[4][$key];
    $title_short = $links[1][$key];
    $title = $title_short.(!empty($links[2][$key]) ? ' - ' : '').str_replace('<br />', ' » ', $links[2][$key]);
    
    $list .= '
    <item>
    <title><![CDATA[ '.$title.' ]]></title> 
    <description>
      <![CDATA[ <img src="http://i.iptv.bg/logos/'.$channel.'.png" /> ]]>
    </description> 
    <enclosure url="http://'.SITE_URL.'?tv='.$channel.'" type="text/xml" />
    <icon url="http://i.iptv.bg/logos/'.$channel.'.png" />
    </item>';
  }
}
print '<?xml version="1.0" encoding="UTF-8" ?><rss version="2.0"><channel>';
print $list;
print '</channel></rss>';
function URL_get($url) {
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_COOKIEJAR, SITE_PATH."cookie.txt");
  curl_setopt($ch, CURLOPT_COOKIEFILE, SITE_PATH."cookie.txt");
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  $res = curl_exec($ch);
  curl_close($ch);
  
  return $res;
}
function PLAY_url($url) {
  $cont = URL_get($url);
  
  preg_match_all('/<REF\s+HREF\s+=\s+"([^"]+)/', $cont, $matches);
  
  if(isset($matches[1][0])) {
    ## Пускаме плеара
    $link = $matches[1][0];
    $fuck_winboz = @exec(TASK_KILLER);
    RUN_asynchronously(VLC_PATH.' -vvv '.$link.' --sout=#transcode{vcodec=h264,vb=0,scale=0,acodec=mp4a,ab=128,channels=2,samplerate=44100}:http{mux=ffmpeg{mux=flv},dst=\''.SERVICE_URL.'\'} --no-sout-rtp-sap --no-sout-standard-sap --ttl=1 --sout-keep');
  }
}
function RUN_asynchronously($path) { 
  $WshShell = new COM("WScript.Shell"); 
  $spustec = getcwd()."\\_".uniqid().".php";
  
  #Generate PHP code to run app and save it into file $spoustec 
  fwrite(($fp = fopen($spustec,"w+")),"<?php chdir(dirname(__FILE__));\$command = \"".addcslashes($path, '"\\')."\";echo \"Now running external program...\n\n\";system(\$command);echo \"Now deleting...\";unlink(__FILE__); ?>"); 
  fclose($fp);
  # Now run $spoustec -> it will start $path
  $oExec = $WshShell->Run(PHP_PATH.' -q '.$spustec, 7, false); 
  unset($WshShell,$oExec); 
} 
?>  5. Сменяте $login = ''; и $pass = ''; с вашия email и парола за влизане във сайта на iptv.bg. Примерно $login = 'alabala@abv.bg'; $pass = '123456';  
Инсталация на NetPlayer на телевизор Samsung с Internet@TV: 
След като инсталирате NetPlayer 2.55 (текущата версия е тази).
1. Пускате плеара
2. Избирате Video
3. Натискате жълтото C на дистанционното
4. Въвеждате 
http://ип_на_вашия_сървар/tv/  
Ако сте стигнали до тази стъпка вече би трябвало да може да гледате без проблеми всички безплатни канали на iptv.bg. Предполагам, че и платените ще могат да се гледат, но не съм го пробвал. 
Edit: 
Лек пач. Подобрена скороста на транскодиране и CPU натоварване за сметка на леко влошаване на качеството.
Трябва да се подмени този ред: 
 Код:
 RUN_asynchronously(VLC_PATH.' -vvv '.$link.' --sout=#transcode{vcodec=mp4v,vb=2200,scale=1,acodec=mpga,ab=128,channels=2,samplerate=44100}:http{mux=ts,dst=\''.SERVICE_URL.'\'} --no-sout-rtp-sap --no-sout-standard-sap --ttl=1 --sout-keep --http-caching=500');