Odczyt EPG ze strumienia danych.

Odczyt EPG ze strumienia danych.

Postnapisał kazek3018 wtorek, 15 kwietnia 2008, 00:46

Sęk w tym, że nie wywala błędu urządzenie zajęte, tylko brak urządzenia.
ca0 to powinien być uchwyt do CommonInterface, a poprzez demux powinno się móc dobrać do strumienia dvb.
Odnośnie otwierania do odczytu i zapisu, wszędzie w źródłach widziałem jak otwierają tak pliki, w dokumentacji przeczytałem, że to tylko formalność i tak urządzenie input będzie otwarte jako RO a output jak WO, to podobno załatwia już sama warstwa sterowników.

Z tego co widziałem to obsługa jest standardowa:
1) otwarcie pliku
2) ustawienie parametrów (filtrów) za pomocą ioctl
3) odczyt
4) zamkniecie pliku (przed tym jeszcze DMX_STOP)

Nie wiem może urządzenia są podpięte do plików w innych katalogach?
No nic czytamy i uczymy się dalej
kazek3018
 
Posty: 90
Dołączył(a): piątek, 29 lutego 2008, 23:27

Odczyt EPG ze strumienia danych.

Postnapisał kazek3018 czwartek, 17 kwietnia 2008, 14:01

Cześć.

Ostatnio nie miałem za dużo czasu, ale trochę nad tym posiedziałem.
Przestudiowałem plik record.c i h. Nasuwają się mi się pewne wnioski, cała obsługa płyty głównej i urządzeń na niej najprawdopodobniej odbywa się za pomocą plików w /dev/stapi. Znalazłem informacje w materiałach reklamowych firmy STM o istnieniu stapi, ale niestety nigdzie nie znalazłem informacji jak to zdobyć.
Ma może ktoś namiary na to ustrojstwo?
kazek3018
 
Posty: 90
Dołączył(a): piątek, 29 lutego 2008, 23:27

Re: Odczyt EPG ze strumienia danych.

Postnapisał SebiCo czwartek, 17 kwietnia 2008, 16:47

I tu właśnie dobrnęliśmy do sedna sprawy i jednocześnie do sedna problemu ...
UWAGA !!! NIE PONOSZĘ ODPOWIEDZIALNOŚCI ZA UŻYTKOWANIE OPROGRAMOWANIA PKT NIEZGODNIE Z PRAWEM !
Avatar użytkownika
SebiCo
Polish Koders Team
 
Posty: 3831
Dołączył(a): niedziela, 10 lutego 2008, 10:35

Re: Odczyt EPG ze strumienia danych.

Postnapisał jakrzy czwartek, 17 kwietnia 2008, 21:57

kazek3018 napisał(a):Cześć.

Ostatnio nie miałem za dużo czasu, ale trochę nad tym posiedziałem.
Przestudiowałem plik record.c i h. Nasuwają się mi się pewne wnioski, cała obsługa płyty głównej i urządzeń na niej najprawdopodobniej odbywa się za pomocą plików w /dev/stapi. Znalazłem informacje w materiałach reklamowych firmy STM o istnieniu stapi, ale niestety nigdzie nie znalazłem informacji jak to zdobyć.
Ma może ktoś namiary na to ustrojstwo?


stapi to sterowniki urzadzen, modoly do obslugi znajduja sie w katalogu /app,napisz konkretnie co cie interesuje, jak bede wiedzial to powiem.
jakrzy
Polish Koders Team
 
Posty: 217
Dołączył(a): poniedziałek, 11 lutego 2008, 10:22

Re: Odczyt EPG ze strumienia danych.

Postnapisał Giro sobota, 7 czerwca 2008, 13:52

Witam,

Szukałem w internecie materiałów na temat Kati i w temacie EPG natknąłem się na taką stronkę:
http://www.tara-systems.de/inaris/epg.html

Czy to jest producent oprogramwoania, który jest odpowiedzialny za EPG w naszej Kati? W dziale download są jakieś programy np. Inaris EPG tylko, że dla zarejestrowanych użytkownków. Ciekawe czy jak by do nich napisać, czy doradzili by coś w temacie skopanego EPG dla cyfry+?
Giro
 
Posty: 1
Dołączył(a): sobota, 12 kwietnia 2008, 19:52

Odczyt EPG ze strumienia danych.

Postnapisał Samezrp sobota, 7 czerwca 2008, 19:33

Pisałem kiedyś do nich. Olewają. Kierują bezpośrednio do kathrein.
Samezrp
Polish Koders Team
 
Posty: 477
Dołączył(a): środa, 13 lutego 2008, 19:53

Re: Odczyt EPG ze strumienia danych.

Postnapisał demsey sobota, 22 sierpnia 2009, 20:03

Odgrzewam tego kotleta:)
Jeśli kogos interesuje jak sie dobrać do strumieni dvb poprzez dvb3 api (e2) to mogę sie podzielić "zdobyczami"
Aktualnie otwieram demuxer ustawiam filtry i skanuje i aprsuje PAT, PMT, CAT, SDT, ECM z epg w EIT też nie bedzie problemów
Wszystko w pythonie:)
demsey
Polish Koders Team
 
Posty: 71
Dołączył(a): czwartek, 12 lutego 2009, 23:44

Odczyt EPG ze strumienia danych.

Postnapisał t4ndeta sobota, 22 sierpnia 2009, 22:34

No to jak juz by był logger to może posyłanie EMM do newcs :>
Avatar użytkownika
t4ndeta
Polish Koders Team
 
Posty: 691
Dołączył(a): poniedziałek, 25 lutego 2008, 00:50

Re: Odczyt EPG ze strumienia danych.

Postnapisał demsey sobota, 22 sierpnia 2009, 22:44

Akurat ten logger EMM chodzi mi po głowie.
Wysyłanie EMM do newcs'a też mi przyszlo na myśl szczegolnei ze protokol do newcamd jest dobrze udokumentowany i juz to kiedyś robiłem
Wiec takie 2 pluginki logger EMM oraz wysyłanie EMM'a do newcs'a (lub jeden zintegrowany) fajnei bylo by wykonać

Uporządkuje troche szalony kod i podeslę paczke demonstarcyjną z jakims opisem
demsey
Polish Koders Team
 
Posty: 71
Dołączył(a): czwartek, 12 lutego 2009, 23:44

Re: Odczyt EPG ze strumienia danych.

Postnapisał demsey niedziela, 13 grudnia 2009, 20:30

Taj jakos wyszlo ze koniec koncow nie zrobilem czytania EMM'ow - tylko ECM'y oraz klenta newcamd'a (laczy sie z newcs) i moze wysylac ECM'y i EMM'y

Jesli chodzi o parsowanie streamow dvbsi to zrobilem taki skrypt dvbsi.py
Kod: Zaznacz cały
python dvbsi.py
Wypluwa liste programów oraz ich pidy z aktualnie działającego transpondera. Dokladniej to z demuxera odczytywana jest tablica PAT i SDT sa parsowane i łączone po polu program_id i otrzymujemy np:
Program: 0x0000, PID: 0x0010
Program: 0x10e0, PID: 0x010d ['TVN', 'TVN Style']
Program: 0x10e2, PID: 0x010f ['TVN Grupa ITI', 'TVN CNBC Biznes']
Program: 0x10e1, PID: 0x010e ['TVN Grupa ITI', 'Test']
Program: 0x10ed, PID: 0x0118 ['TVN Grupa ITI', 'test_radio']
Program: 0x10d7, PID: 0x0104 ['TVN Grupa ITI', 'TVN']
Program: 0x10d8, PID: 0x0105 ['TVN Grupa ITI', 'TVN 24']
Program: 0x10d9, PID: 0x0106 ['TVN', 'TVN Siedem']
Program: 0x10dc, PID: 0x0109 ['', 'Mango 24']
Program: 0x10de, PID: 0x010b ['TVN Grupa ITI', 'TVN METEO']
Program: 0x10df, PID: 0x010c ['TVN GRUPA ITI', 'TVN TURBO']
Nastepnie wypieramy pid np dla TVN 24 i wpisujemy
Kod: Zaznacz cały
python dvbsi.py 105
Dzieje sie to co wczesniej ale dodatkowo odczytywana i parsowana jest tablica PMT podanego programu np:
PMT PID: 0x0105

Stream_type: 0x02 - ['ITU-T Rec. H.262 | ISO/IEC 18818-2 Video or ISO/IEC 11172-2 constrained parameter video stream', 'MPEG-2 Video']
Elementary_PID: 0x0201
ES_info_length: 0x0035

MPEG-DescriptorTag: 0x02 - Video Stream
Descriptor_length: 0x03
Unknown_data: 0x1a485f

MPEG-DescriptorTag: 0x09 - Conditional Access
Descriptor_length: 0x11
CA system ID: 0x0100
ECM PID: 0x06b3
Provider ID: 0x0068
SECA_descriptor:0xff
SECA_PBM: 0098200000000100
Subsription_date: 0x278d (2009-12-13)

MPEG-DescriptorTag: 0x09 - Conditional Access
Descriptor_length: 0x0f
CA system ID: 0x0500
ECM PID: 0x064e
Provider ID: 0x1001
Unknown_data: 0x001301201403032a00

MPEG-DescriptorTag: 0x09 - Conditional Access
Descriptor_length: 0x04
CA system ID: 0x1803
ECM PID: 0x05a2

MPEG-DescriptorTag: 0x52 - Stream Indentifier
Descriptor_length: 0x01
component_tag: 0x01

MPEG-DescriptorTag: 0x06 - Data Stream Alignment
Descriptor_length: 0x01
Unknown_data: 0x02

Stream_type: 0x04 - ['ISO/IEC 13818-3 Audio', 'MPEG-2 Audio']
Elementary_PID: 0x0294
ES_info_length: 0x0036

MPEG-DescriptorTag: 0x03 - Audio Stream
Descriptor_length: 0x01
Unknown_data: 0x67

MPEG-DescriptorTag: 0x09 - Conditional Access
Descriptor_length: 0x11
CA system ID: 0x0100
ECM PID: 0x06b3
Provider ID: 0x0068
SECA_descriptor:0xff
SECA_PBM: 0098200000000100
Subsription_date: 0x278d (2009-12-13)

MPEG-DescriptorTag: 0x09 - Conditional Access
Descriptor_length: 0x0f
CA system ID: 0x0500
ECM PID: 0x064e
Provider ID: 0x1001
Unknown_data: 0x001301201403032a00

MPEG-DescriptorTag: 0x09 - Conditional Access
Descriptor_length: 0x04
CA system ID: 0x1803
ECM PID: 0x05a2

MPEG-DescriptorTag: 0x0a - ISO 639 Language
Descriptor_length: 0x04
ISO639_language_code: pol
Unknown_data: 0x01

MPEG-DescriptorTag: 0x52 - Stream Indentifier
Descriptor_length: 0x01
component_tag: 0x94

Stream_type: 0xc0 - ['ATSC Reserved', '']
Elementary_PID: 0x00d0
ES_info_length: 0x0021

MPEG-DescriptorTag: 0xc2 - User defined
Descriptor_length: 0x18
Unknown_data: 0x504f4c5f5f455047504f4c5f5f50494c504f4c5f5f43484c

MPEG-DescriptorTag: 0xc6 - User defined
Descriptor_length: 0x05
Unknown_data: 0x00000702ff

Stream_type: 0xc1 - ['ATSC Reserved', '']
Elementary_PID: 0x00d5
ES_info_length: 0x000a

MPEG-DescriptorTag: 0xc2 - User defined
Descriptor_length: 0x08
Unknown_data: 0x50494c4f54450000

Tutaj na wyjsciu dostejemy odpowiedz prawie jak dvbsnoop:)
Pidy ECM'ów znajduja sie w sekcjach "0x09 - Conditional Access", ktorych moze byc kilka albo wcale w zaleznosci od systemów uzytych kodowania dla danego programu oraz oczywiscie osobno dla video i audio:)

Następnie wybieramy odpowiedni ECM PID dla odpowiedniego providera i dla audio bądz video i wpisujemy jako 2 parametr np:
Kod: Zaznacz cały
python dvbsi.py 105 6b3
Skryprt wypluje 15 ECM'ów dla podanego pid'a (0x06b3, ktory w momencie pisania skryptu odpowiadal providerowi 0x0068 Cyfra+ dla streamu mpeg video):
ECM PID: 0x06b3
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969
ECM: 00813061006800000e009568fea8801ef67eafe18848d0e2ba04b95c447e99bf2143c87902d5433f9705eb00c3f896ca1f920093711699b2a30441816823eb4b915d03591862712e607f693af8e28b4754ac90b7efbffa69dae50200aaf864ad8794991969


Wiekszosc zabawy odbywa sie w funkcji dmx() (demuxer) funkcje audio() i video() to zabawy z przechwytywania audio i video do pliku ts (udanych)
Parsowanie innych tabel jest podobne, łapiemy "surówke" reciveOneShot(fd,DVB_SI_PAT_PID,DVB_SI_PAT_TAB_ID) oczywiscie zmieniajac parametry i dalej wrzucamy do swojego parsera - tutaj trzeaba sobie znaleźć dokumentacje do odpowiedneij tablicy w google:).
Dysponuje jakimis linakmi - jak by to kogos interesowalo to moge poszukac.
Parser do PMT jest skomplikowany ale wyswietla informacje jakoś tam opisane Nie udalo mi sie znależć dokumentacji do wszystkich deskryptorow wiec czesto mozna zobaczyc "unknown data" - ale chyba wszystkie podstawowe sa:) Zreszta wszystko jest do wygooglowania -niestety nei ma jednego spojnego zrodla dokumentacji.
Narazie przynajmniej tyle napisalem;)
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
demsey
Polish Koders Team
 
Posty: 71
Dołączył(a): czwartek, 12 lutego 2009, 23:44

Poprzednia stronaNastępna strona

Powrót do Developer Corner

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości