Kompletten MPEG_TS empfangen?



  • Hallo zusammen


    Hardware: DD Octopus V3 / Duoflex CT
    OS: Linux (Debian testing)


    Wenn ich DVB und MPEG_TS korrekt verstehe, wird pro Frequenz 1 MPEG_TS ausgestrahlt. Dieser TS kann n Elementary Streams enthalten (EPG/Audio/Video/anderes). Wenn ich nun nach dem channelscan via 'w_scan' z.B. mit 'czap' auf einen Kanal zappe, dann empfange ich auf /dev/dvb/adapter0/dvr0 genau 1 Sender (z.B. 1 Video, 2 Audio, 1 Subtitle) und die anderen knapp 10 Sender werden von der Karte oder Software verworfen, was ich idiotisch finde.



    Mein Ziel ist es, dass ich den Tuner auf eine Frequenz stelle und den kompletten ungefilterten TS empfangen und danach selbst weiterverarbeiten kann - leider kriege ich das nicht auf die Reihe. Hier ein paar Dinge die ich schon probiert habe:

    • mein test ist üblicherweise ffmpeg -i /dev/dvb/adapter0/dvr0 - dies zeigt soweit ich beurteilen kann wunderbar die struktur des streams an
    • czap -rp -a 0 -f 0 -d 0 '<sendername>' scheint wie schon erwähnt alle nicht gewählten channels wegzuwerfen (gemäss ffmpeg). Die option -rp macht irgendetwas mit der Program Table, es könnte also auch sein dass alle Informationen vorhanden sind nur sieht sie ffmpeg nicht.
    • dvbtune -f <freq> -s <sr> -qam <qam> scheint zu funktionieren, wenn ich mir jedoch den stream mit ffmpeg anzeigen lassen will kriege ich "device or resource busy"
    • dvbstreamer wäre gemäss beschreibung ein Kandidat für mein Unterfangen - jedoch ist es mir bis jetzt nicht gelungen diesen zu laufen zu kriegen. Die idee wäre da jede einzelne PID auf ein anderes udp://ip:port Ziel zu streamen und die pids individuell zu verarbeiten falls das möglich ist.
    • tuning mit czap und analyse mit z.B. 'dvbsnoop -s pidscan' zeigt alle pids an (was gegen die theorie von punkt 2 sprechen würde). Wenn ich einen pidscan mache und dann mal auf allen pids schaue was vorhanden ist, scheint's überall informationen zu haben: "for pid in $(dvbsnoop -s pidscan | grep 'PID found' | awk '{print $3}'); do echo "########## PID $pid"; dvbsnoop -timeout 2000 -N 25 -ph 0 -nph -pd 7 $pid | grep -- "-Packet:"; done" -- Die Frage die sich dann stellt, warum sieht ffmpeg weniger als dvbsnoop? Schlussendlich bekommen doch beide die gleiche Program Table?
    • wenn ich bei czap das '-rp' weg lasse funktionieren weder ffmpeg noch der dvbsnoop pidscan - mit dvbsnoop gezielt eine pid auslesen funktioniert wiederum


    Ich habe schon ziemlich viel Zeit in das Ganze gesteckt und komme momentan nicht weiter und mir gehen die Ideen aus. Ich wäre froh um ein paar Hinweise wie ich das bewerkstelligen könnte. Irgendetwas scheine ich erreicht zu haben aber ich kanns nicht richtig verifizieren und bin mir nicht sicher.


    Ebenfalls nützlich wären allgemeine Hinweise bezüglich OSS Tool z.B. um TS Streams zu analysieren oder was sonst noch so nützlich sein könnte.


    Die DVB und MPEG Konzepte sind mir denke ich ziemlich klar (schliesslich gibt es da spezifikationen etc die man lesen kann) aber mir ist die funktionsweise der dvb Karte noch nicht ganz klar (die DD Geräte scheinen auch absolut nicht dokumentiert :( ). Was ist die funktion all der device files und wie hängen die zusammen?

    • dvr0 ist der video recorder, soviel hab ich verstanden (device macht sinn da ich davon lesen muss)
    • net0 habe ich gar keine ahnung
    • demux0 ist der demultiplexer welcher, vermute ich, das signal vom kabel in einen TS mit PES zurückwandelt und z.B. die error correction macht
    • frontend0 würde ich vermuten ist zum steuern des ganzen da aber so ganz sicher bin ich mir da eben nicht.


    Danke für die Hilfe

  • Mit VDR kannst Du ohne großen Aufwand Timer setzen auf allen Kanälen eines Transponder und dann alle Streams, die dazu gehören, aufzeichnen. Das kann man dann auch scripten, so dass Du die Timer nicht manuell setzen musst. Solange Du keine DVB-Kopfstation selber bauen willst, sollte diese Vorgehensweise völlig ausreichen.


    Gruß
    hepi

  • versuche mal das tool getstream oder einen der drei Forks davon.


    http://www.linuxtv.org/wiki/index.php/Getstream


    Die Forks können dann auch noch PMT's manipulieren, in Dateien schreiben, aus Dateien lesen, ...

  • Wenn ich DVB und MPEG_TS korrekt verstehe, wird pro Frequenz 1 MPEG_TS ausgestrahlt.


    Nein, es wird MCPC benutzt (Multi Channel Per Carrier). Jeder Sender ist in einem eigenen TS, der wiederum mehrere Elementarstreams enthalten kann. Die TS der einzelnen Sender werden zu einem Gesamt-Datenstrom gemuxt und das dann auf eine Frequenz aufmoduliert.

  • Kannst du Englisch? Wenn ja gibt es unter http://www.linuxtv.org/docs/dvbapi/dvbapi.html alles zulesen.
    Ist zwar die veraltete API aber im Prinzip baut darauf auch die neue auf.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Kannst du Englisch? Wenn ja gibt es unter http://www.linuxtv.org/docs/dvbapi/dvbapi.html alles zulesen.
    Ist zwar die veraltete API aber im Prinzip baut darauf auch die neue auf.

    Besten Dank. Die Dokumentation hat ein paar Dinge geklärt - für die DVB API V5 gibt es nicht zufällig eine ähnliche Dokumentation? Als DVB Neuling ist das doch eines der grösseren Probleme im Moment: aktuelle Informationen zu finden. Vieles ist von ca. 2000-2005, nicht mehr maintained und gefühlt sehr veraltet. Dass die ganze Linux DVB Landschaft auch noch extrem zu sein fragmentiert scheint macht das Ganze nicht einfacher...

  • versuche mal das tool getstream oder einen der drei Forks davon.


    http://www.linuxtv.org/wiki/index.php/Getstream


    Die Forks können dann auch noch PMT's manipulieren, in Dateien schreiben, aus Dateien lesen, ...

    Mit etwas ausprobieren und code/mailinglisten nach configs abgrasen habe ich schliesslich etwas zum laufen gebracht. Allerdings stottert der output im mplayer ständig - mit dvbsnoop mit binary output war das nicht so. Eventuell verändert getstream die Reihenfolge der Pakete so dass das Timing nicht mehr stimmt? Ich behalte das Tool aber auf jeden Fall im Kopf, Danke.

  • Hi,


    schonmal MuMuDVB angesehen? Ich habe es mangels Bedarf nie ausprobiert, aber evtl. leistet es genau das was Du möchtest.


    HTPC-Fan

    Ich bin in den letzten Tagen schon ein paar mal darüber gestolpert, hab beim durchscrollen der gefundenen Seiten nicht verstanden was es tut und darum ignoriert -- aber das Teil werde ich mich jetzt gleich mal noch genauer anschauen!


    EDIT: das ding macht einen guten eindruck! :tup

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!