stebasha Опубликовано 17 января, 2014 (изменено) · Жалоба Всем привет такая вот проблема запустил с помощью черри епг, на приставки показывает на телевизорах нет, подскажите куда копать, данные вроде все прописаны прикладываю кусок скрипта Данные брал прям с QAM потока анализатором Promax. <? // ловим ошибки ini_set('log_errors', 1); ini_set('error_log', 'error_log'); ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); // увеличиваем время работы скрипта до 120 сек (по умолчанию на сервере 30 сек - недостаточно для парсинга большого количества каналов) ini_set('max_execution_time', 120); $dtime = 0; // коррекция $networkID = "0xb807"; // id сети $channels = array( // sid - serviceID, tsid - transportstreamID "viasat-tv1000" => array('sid' => 6400, 'tsid' => 3), "viasat-action" => array('sid' => 1950, 'tsid' => 3), "tv3russia" => array('sid' => 840, 'tsid' => 1004) ); $uid = 1; $includeEITreq = ""; $includeIFreq = array(); $buf = ""; foreach($channels as $ch=>$val){ $includeEITreq .= "\$myEpg->addEit( 18, {$val['sid']}, {$networkID}, {$val['tsid']}, {$uid}, 3*8, 1, \"{$ch}\") || die( \"Adding of rule failed\");\n"; $includeIFreq[] = "if( \$program eq \"{$ch}\") {\n\$event->{uid} = {$uid}; \n\$event->{service_id} = {$uid};\n}"; $page = file_get_contents("http://www.programma.tv/3.001/day/{$ch}/" . date("Ymd")); $page = str_replace(array("\r", "\n", "\t"), " ", $page); preg_match_all("/<p:item(.*?)timeOrigin=\"(.*?)\"(.*?)title=\"(.*?)\"/i", $page, $match); $data = array_combine($match[2], $match[4]); $i = 0; foreach($data as $time=>$title){ $ftime = isset($match[2][$i+1]) ? $match[2][$i+1] - $time : 1800; $title = str_replace(array("„","“","«", "»", """), "'", $title); $title = str_replace(array("–","—"), "-", $title); $title = str_replace("…", "...", $title); $buf .= "\"{$ch}\",\"" . date("d.m.Y H:i:s",$time-3600) . "\",{$ftime},\"{$title}\",\"\"\n"; $i++; } $uid++; } echo iconv("UTF-8", "ISO-8859-5", $buf); $cherryfile = file_get_contents("cherryEPG.tmp"); // открываем шаблон файла cherryEPG.pl $cherryfile = str_replace("<includeEITreq>", $includeEITreq, $cherryfile); $cherryfile = str_replace("<includeIFreq>", implode("els", $includeIFreq), $cherryfile); file_put_contents("/usr/src/cherryepg/cherryEPG.pl", $cherryfile); Изменено 17 января, 2014 пользователем stebasha Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shaytan Опубликовано 17 января, 2014 (изменено) · Жалоба CherryEPG генерирует только данные EIT таблицы. Как вам удалось эти данные добавить в поток на станции, у нас EMR 3.0 поток 233.171.254.254 с EIT видит, но не позволяет ничего из него выбрать. Скриншот: Изменено 17 января, 2014 пользователем shaytan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zedsh Опубликовано 19 января, 2014 (изменено) · Жалоба Откройте файл cherryEPG.pl, или шаблон, из которого он формируется. Найдите там бесконечный цикл отправки. В нём есть инструкция sleep(интервал). Уменьшите интервал. Изменено 19 января, 2014 пользователем zedsh Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stebasha Опубликовано 20 января, 2014 (изменено) · Жалоба Откройте файл cherryEPG.pl, или шаблон, из которого он формируется. Найдите там бесконечный цикл отправки. В нём есть инструкция sleep(интервал). Уменьшите интервал. нашел только в ringelspiel.pl такие строки # calculate the waiting time between playing chunks of 7 packets in micro seconds my $gap = ceil( $interval / $mtsCount * 7 * 1000); # play packets of 7 x 188bytes while ($packetCounter < $mtsCount) { my $chunkCount = $mtsCount-$packetCounter; $chunkCount = 7 if $chunkCount > 7; send( $target, substr( $mts, $packetCounter * 188, $chunkCount * 188), 0, $portaddr); $packetCounter += $chunkCount; usleep( $gap); Как понимаю вот это уменьшать my $gap = ceil( $interval / $mtsCount * 7 * 1000); вопрос только на сколько ? Данные формулы interval = 30000 mtsCount = 231 gap = 909091 CherryEPG генерирует только данные EIT таблицы. Как вам удалось эти данные добавить в поток на станции, у нас EMR 3.0 поток 233.171.254.254 с EIT видит, но не позволяет ничего из него выбрать. Скриншот: данные NIT я вещаю отдельно другим софтом там передаются таблицы SID NIT и так далее они работают точно. все телевизоры нормально с ними справляются Изменено 20 января, 2014 пользователем stebasha Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zedsh Опубликовано 20 января, 2014 · Жалоба usleep( $gap); попробуйте менять $gap, прописав его просто числом. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stebasha Опубликовано 20 января, 2014 · Жалоба usleep( $gap); попробуйте менять $gap, прописав его просто числом. А сколько он должен быть ? по формуле получается 909191 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
digi Опубликовано 20 января, 2014 · Жалоба Странно. У меня с дефолтными таймерами EMR все прекрасно видит, и телевизоры ,соответственно, тоже. А на скрине у shaytan четко видно, что EMR потока с EIT не видит! Если бы видела, был бы разворачивающийся "+", и присутствовал бы 18 pid. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stebasha Опубликовано 20 января, 2014 (изменено) · Жалоба Получается формула рассчитывает в микросекундах что равно 1 секунде вполне нормальное время Вот пример SDT 3 58 13 1970 0 0 4 1 0x48 1 "SCTS" "028 Viasat Nature" 1110 0 0 4 1 0x48 1 "SCTS" "029 ▒▒▒ ▒▒▒▒▒▒▒" 1950 1 1 4 1 0x48 1 "SCTS" "030 TV1000 Action East" 6400 1 1 4 1 0x48 1 "SCTS" "031 TV 1000 East" 6410 0 0 4 1 0x48 1 "SCTS" "032 Viasat Explorer" 6490 0 0 4 1 0x48 1 "SCTS" "033 Viasat History" 720 0 0 4 1 0x48 1 "SCTS" "103 Nash Futbol" 6800 0 0 4 1 0x48 1 "SCTS" "034 Viasat Sport" 7080 0 0 4 1 0x48 1 "SCTS" "035 TV1000 Ru ▒▒▒▒" 728 0 0 4 1 0x48 1 "SCTS" "036 Discovery World" 729 0 0 4 1 0x48 1 "SCTS" "037 Discovery Science" 730 0 0 4 1 0x48 1 "SCTS" "038 Discovery Travel" 732 0 0 4 1 0x48 1 "SCTS" "039 Extreme Sport" Тестирую на Viasat поэтому EPG поставил 1 на нем пример NIT для потока 0x0003 0x0103 2 0x41 13 1970 1 1110 1 1950 1 6400 1 6410 1 6490 1 720 1 6800 1 7080 1 728 1 729 1 730 1 732 1 0x44 0x08020000 2 5 0x069520 15 Изменено 20 января, 2014 пользователем stebasha Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zedsh Опубликовано 20 января, 2014 · Жалоба у меня my $gap = ceil( $interval / $mtsCount * 1000); В System set в EMR есть интервалы поиска. Refresh PSI/SI Setting. Там можно настроить такой интервал, за который гарантированно таблицу поймаешь. А вообще просто используйте pid map и всё. Без разницы, что он не показывает EIT в мультиплексоре. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexaaa Опубликовано 21 января, 2014 · Жалоба CherryEPG генерирует только данные EIT таблицы. Как вам удалось эти данные добавить в поток на станции, у нас EMR 3.0 поток 233.171.254.254 с EIT видит, но не позволяет ничего из него выбрать. Скриншот: данные в поток добавляются PID Mapping (ПИД МАППИНГОМ), то есть зеркальный проброс минуя мультиплексор Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alexaaa Опубликовано 21 января, 2014 · Жалоба Всем привет такая вот проблема запустил с помощью черри епг, на приставки показывает на телевизорах нет, подскажите куда копать, данные вроде все прописаны прикладываю кусок скрипта Данные брал прям с QAM потока анализатором Promax. <? // ловим ошибки ini_set('log_errors', 1); ini_set('error_log', 'error_log'); ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); // увеличиваем время работы скрипта до 120 сек (по умолчанию на сервере 30 сек - недостаточно для парсинга большого количества каналов) ini_set('max_execution_time', 120); $dtime = 0; // коррекция $networkID = "0xb807"; // id сети $channels = array( // sid - serviceID, tsid - transportstreamID "viasat-tv1000" => array('sid' => 6400, 'tsid' => 3), "viasat-action" => array('sid' => 1950, 'tsid' => 3), "tv3russia" => array('sid' => 840, 'tsid' => 1004) ); $uid = 1; $includeEITreq = ""; $includeIFreq = array(); $buf = ""; foreach($channels as $ch=>$val){ $includeEITreq .= "\$myEpg->addEit( 18, {$val['sid']}, {$networkID}, {$val['tsid']}, {$uid}, 3*8, 1, \"{$ch}\") || die( \"Adding of rule failed\");\n"; $includeIFreq[] = "if( \$program eq \"{$ch}\") {\n\$event->{uid} = {$uid}; \n\$event->{service_id} = {$uid};\n}"; $page = file_get_contents("http://www.programma.tv/3.001/day/{$ch}/" . date("Ymd")); $page = str_replace(array("\r", "\n", "\t"), " ", $page); preg_match_all("/<p:item(.*?)timeOrigin=\"(.*?)\"(.*?)title=\"(.*?)\"/i", $page, $match); $data = array_combine($match[2], $match[4]); $i = 0; foreach($data as $time=>$title){ $ftime = isset($match[2][$i+1]) ? $match[2][$i+1] - $time : 1800; $title = str_replace(array("„","“","«", "»", """), "'", $title); $title = str_replace(array("–","—"), "-", $title); $title = str_replace("…", "...", $title); $buf .= "\"{$ch}\",\"" . date("d.m.Y H:i:s",$time-3600) . "\",{$ftime},\"{$title}\",\"\"\n"; $i++; } $uid++; } echo iconv("UTF-8", "ISO-8859-5", $buf); $cherryfile = file_get_contents("cherryEPG.tmp"); // открываем шаблон файла cherryEPG.pl $cherryfile = str_replace("<includeEITreq>", $includeEITreq, $cherryfile); $cherryfile = str_replace("<includeIFreq>", implode("els", $includeIFreq), $cherryfile); file_put_contents("/usr/src/cherryepg/cherryEPG.pl", $cherryfile); Программа EPG должна быть в кодировке ANSI чтобы понимали телевизоры, и многие современные LG не работают с EPG, только старые модели, Samsung, Philips без проблем. Вот вам рабочий конфиг cherryEPG.txt Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stebasha Опубликовано 21 января, 2014 (изменено) · Жалоба Все равно не пашет вот дамп пакета не пойму SID NIT TSID PID приставки видят все а телевизоры нет, время автоматом на них выставляется из потока нормальное Смущает в первой строке TS-Packet: 00000260 PID: (Unkown PID) неизвестный пид почему ? так и должно быть ? В оборудовании стоит пропускать все из потока, т.е. если приставки видят то не фильтруется не чего телевизоры нормально воспринимают таблицы NIT и SDT TS-Packet: 00000260 PID: (Unkown PID), Length: 188 (0x00bc) from file: eit.ts ------------------------------------------------------------ Sync-Byte 0x47: 71 (0x47) Transport_error_indicator: 0 (0x00) [= packet ok] Payload_unit_start_indicator: 1 (0x01) [= Packet data starts] transport_priority: 0 (0x00) PID: 18 (0x0012) [= DVB Event Information Table (EIT)] transport_scrambling_control: 0 (0x00) [= No scrambling of TS packet payload] adaptation_field_control: 1 (0x01) [= no adaptation_field, payload only] continuity_counter: 3 (0x03) [= (sequence ok)] Payload: (len: 184) ==> pointer_field: 0 (0x00) ==> Section table: 78 (0x4e) [= Event Information Table (EIT) - actual transport stream, present/following] Data-Bytes: 0000: 00 4e f0 50 19 00 c5 01 01 00 03 b8 07 01 50 00 .N.P..........P. 0010: 0c dd 66 00 00 00 02 00 00 20 35 4d 33 72 75 73 ..f...... 5M3rus 0020: 2e 10 00 05 bf de e1 db d5 d4 dd d8 d9 20 d7 d0 ............. .. 0030: dd d0 d2 d5 e1 2e 20 28 c1 c8 b0 2c 20 d4 e0 d0 ...... (..., ... 0040: dc d0 2c 20 32 30 30 32 29 20 28 31 36 2b 29 00 .., 2002) (16+). 0050: a1 de bb 45 ff ff ff ff ff ff ff ff ff ff ff ff ...E............ 0060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 0070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 0080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 0090: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 00a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................ 00b0: ff ff ff ff ff ff ff ff ........ ========================================================== TS sub-decoding (1 packet(s) stored for PID 0x0012): ===================================================== TS contains Section... SI packet (length=83): PID: 18 (0x0012) [= assigned for: DVB Event Information Table (EIT)] Guess table from table id... EIT-decoding.... Table_ID: 78 (0x4e) [= Event Information Table (EIT) - actual transport stream, present/following] section_syntax_indicator: 1 (0x01) reserved_1: 1 (0x01) reserved_2: 3 (0x03) Section_length: 80 (0x0050) Service_ID: 6400 (0x1900) [= --> refers to PMT program_number] reserved_3: 3 (0x03) Version_number: 2 (0x02) current_next_indicator: 1 (0x01) [= valid now] Section_number: 1 (0x01) Last_Section_number: 1 (0x01) Transport_stream_ID: 3 (0x0003) Original_network_ID: 47111 (0xb807) [= >>ERROR: not (yet) defined... Report!<<] Segment_last_Section_number: 1 (0x01) Last_table_id: 80 (0x50) [= Event Information Table (EIT) - actual transport stream, schedule] Event_ID: 12 (0x000c) Start_time: 0xdd66000000 [= 2014-01-21 00:00:00 (UTC)] Duration: 0x0020000 [= 02:00:00 (UTC)] Running_status: 1 (0x01) [= not running] Free_CA_mode: 0 (0x00) [= unscrambled] Descriptors_loop_length: 53 (0x35) DVB-DescriptorTag: 77 (0x4d) [= short_event_descriptor] descriptor_length: 51 (0x33) ISO639_2_language_code: rus event_name_length: 46 (0x2e) event_name: "..▒▒▒▒▒▒▒▒▒ ▒▒▒▒▒▒▒. (▒Ȱ, ▒▒▒▒▒, 2002) (16+)" -- Charset: ISO/IEC 8859 special table text_length: 0 (0x00) text_char: "" CRC: 2715728709 (0xa1debb45) Изменено 21 января, 2014 пользователем stebasha Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Tracert Опубликовано 21 января, 2014 · Жалоба .... Transport_stream_ID: 3 (0x0003) Original_network_ID: 47111 (0xb807) [= >>ERROR: not (yet) defined... Report!<<] .... А ID сети 0xb807 точно тот, что нужен? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stebasha Опубликовано 23 января, 2014 · Жалоба Да у нас в NIT таблице вещается такой индефикатор, пробывал даже менять на первый все результата не принесло Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zedsh Опубликовано 23 января, 2014 · Жалоба У меня вроде заработало и на самсунгах. NIT: NID=43001,ONID=43001,TSID=17001 Network_Name=KPLUSTV Stream_Desc: Service_List_Desc: SID:Type(у меня 22 для каналов, 2 для радио) Cable_Delivery_System_Desc TDT/TOT должны быть выставлены верно (UTC+смещение), Прописанный в EIT TSID должен быть таким же, как в текущем потоке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shaytan Опубликовано 18 июня, 2014 (изменено) · Жалоба Вот такой вопрос. Сейчас вишней генерируем EIT который содержит програмку для всех каналов на всех транспортных потоках. Соответственно закидываем эту таблицу во все транспортные потоки. Столкнулись с проблемкой, что в одном из городов у абонентов стоят старенькие приставки которые входят в ступор, жутко тормозят и не реагируют на пульт, при включении EPG. На всем остальном оборудовании таких проблем нет. Есть идея генерировать отдельную EIT для каждого транспортного потока только с програмкой для каналов которые идут в этом транспортном потоке. Каким "правильным" способом это можно сделать на вишне? Изменено 18 июня, 2014 пользователем shaytan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 19 июня, 2014 · Жалоба EIT идёт в отдельном служебном пиде с жёстко закреплённым номером. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shaytan Опубликовано 19 июня, 2014 (изменено) · Жалоба EIT идёт в отдельном служебном пиде с жёстко закреплённым номером. Это понятно, PID 18. Вопрос был про генерацию отдельных потоков с последующей ретрансляцией их в QAM потоки, каждый в свой. Вопрос уже решил, все работает. Изменено 19 июня, 2014 пользователем shaytan Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zavndw Опубликовано 17 декабря, 2015 · Жалоба как решили проблему? На emr аналогичная проблема Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zhenya` Опубликовано 18 декабря, 2015 · Жалоба Распилить скрипт ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zedsh Опубликовано 20 декабря, 2015 · Жалоба Попробуйте OpenEpg. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...