Перейти к содержимому
Калькуляторы

Проблемы с CherryEpg CherryEpg Samsung Epg NIT SDT

Всем привет такая вот проблема запустил с помощью черри епг, на приставки показывает на телевизорах нет, подскажите куда копать, данные вроде все прописаны прикладываю кусок скрипта

Данные брал прям с 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);

Изменено пользователем stebasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

CherryEPG генерирует только данные EIT таблицы.

Как вам удалось эти данные добавить в поток на станции, у нас EMR 3.0 поток 233.171.254.254 с EIT видит, но не позволяет ничего из него выбрать.

Скриншот:

post-6333-031836900 1389955802_thumb.png

Изменено пользователем shaytan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Откройте файл cherryEPG.pl, или шаблон, из которого он формируется. Найдите там бесконечный цикл отправки. В нём есть инструкция sleep(интервал). Уменьшите интервал.

Изменено пользователем zedsh

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Откройте файл 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 видит, но не позволяет ничего из него выбрать.

Скриншот:

post-6333-031836900 1389955802_thumb.png

 

данные NIT я вещаю отдельно другим софтом там передаются таблицы SID NIT и так далее они работают точно. все телевизоры нормально с ними справляются

Изменено пользователем stebasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

usleep( $gap); попробуйте менять $gap, прописав его просто числом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

usleep( $gap); попробуйте менять $gap, прописав его просто числом.

А сколько он должен быть ? по формуле получается 909191

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Странно. У меня с дефолтными таймерами EMR все прекрасно видит, и телевизоры ,соответственно, тоже.

А на скрине у shaytan четко видно, что EMR потока с EIT не видит! Если бы видела, был бы разворачивающийся "+", и присутствовал бы 18 pid.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Получается формула рассчитывает в микросекундах что равно 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

Изменено пользователем stebasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у меня my $gap = ceil( $interval / $mtsCount * 1000);

В System set в EMR есть интервалы поиска.

Refresh PSI/SI Setting. Там можно настроить такой интервал, за который гарантированно таблицу поймаешь.

А вообще просто используйте pid map и всё. Без разницы, что он не показывает EIT в мультиплексоре.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

CherryEPG генерирует только данные EIT таблицы.

Как вам удалось эти данные добавить в поток на станции, у нас EMR 3.0 поток 233.171.254.254 с EIT видит, но не позволяет ничего из него выбрать.

Скриншот:

post-6333-031836900 1389955802_thumb.png

данные в поток добавляются PID Mapping (ПИД МАППИНГОМ), то есть зеркальный проброс минуя мультиплексор

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Всем привет такая вот проблема запустил с помощью черри епг, на приставки показывает на телевизорах нет, подскажите куда копать, данные вроде все прописаны прикладываю кусок скрипта

Данные брал прям с 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все равно не пашет вот дамп пакета не пойму 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)

Изменено пользователем stebasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

....

Transport_stream_ID: 3 (0x0003)

Original_network_ID: 47111 (0xb807) [= >>ERROR: not (yet) defined... Report!<<]

....

 

А ID сети 0xb807 точно тот, что нужен?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да у нас в NIT таблице вещается такой индефикатор, пробывал даже менять на первый все результата не принесло

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня вроде заработало и на самсунгах.

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 должен быть таким же, как в текущем потоке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот такой вопрос.

Сейчас вишней генерируем EIT который содержит програмку для всех каналов на всех транспортных потоках.

Соответственно закидываем эту таблицу во все транспортные потоки.

 

Столкнулись с проблемкой, что в одном из городов у абонентов стоят старенькие приставки которые входят в ступор, жутко тормозят и не реагируют на пульт, при включении EPG. На всем остальном оборудовании таких проблем нет.

 

Есть идея генерировать отдельную EIT для каждого транспортного потока только с програмкой для каналов которые идут в этом транспортном потоке.

Каким "правильным" способом это можно сделать на вишне?

Изменено пользователем shaytan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

EIT идёт в отдельном служебном пиде с жёстко закреплённым номером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

EIT идёт в отдельном служебном пиде с жёстко закреплённым номером.

Это понятно, PID 18. Вопрос был про генерацию отдельных потоков с последующей ретрансляцией их в QAM потоки, каждый в свой.

 

Вопрос уже решил, все работает.

Изменено пользователем shaytan

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

как решили проблему? На emr аналогичная проблема

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.