Първоначално публикувано от
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');