Wie extrahiere ich EPG-Daten aus MPEG-TS-Dateien?

8

Ich habe die Möglichkeit, "MPEGTS" DVB / ATSC-Streams aufzunehmen. Ich möchte in der Lage sein, die TS-Dateien zu nehmen und "EPG" -Informationen (Programmierhandbuch) daraus zu extrahieren, da FFmpeg (das die Erfassung durchführt) anscheinend keine EPG-Informationen aus den MPEGTS-Streams lesen kann . Wie extrahiere ich diese Daten in eine für Menschen lesbare Textform? Ich habe die MPEGTS-Dateien als Eingabe zur Verfügung. Ich habe ein paar Bibliotheken ausprobiert:

libdvbtee scheint nur für Unix zu kompilieren: https://github.com/mkrufky/libdvbtee/issues/12 (Update: es funktioniert jetzt für Windows, siehe Antwort)

DVBInspector ist nur eine grafische Benutzeroberfläche (Befehlszeilen-Benutzeroberfläche ist hier erwünscht).

Die "kostenlose" Version von TSReader extrahiert keine EPGs.

FFmpeg scheint "noch" kein Konzept zur Unterstützung von EPG zu haben.

CherryEPG scheint nur EPG zu schreiben, nicht zu lesen.

libucsi kann das anscheinend, aber es war nicht klar, ob es eine Befehlszeilenoption gab.

EPG Collector scheint nur eine grafische Benutzeroberfläche zu sein (?) Und war schwer zu verstehen, wie man in eine von Menschen lesbare Ausgabe konvertiert.

Rogerdpack
quelle
Downvoter können mich gerne kommentieren oder mir einen besseren Ort für die Veröffentlichung nennen.
Rogerdpack
libdvbteewird jetzt für Windows kompiliert, wenn Sie den winZweig verwenden. Ich hoffe, einige Test-Rückmeldungen zu erhalten, bevor ich die verbleibenden Änderungen in den masterZweig einführe. github.com/mkrufky/libdvbtee/commits/win
mkrufky

Antworten:

8

Als Ergebnis dieser Frage habe ich die Unterstützung für Windows Builds behoben libdvbtee

libdvbteeist eine Open-Source-Transportinformations- Decoderbibliothek für Transportströme ( mkrufky.github.io/libdvbtee ), mit der Sie den EPG oder andere in eine beliebige TSDatei eingebettete Dienstinformationen anzeigen können . Verwenden Sie den folgenden Befehl:

dvbtee -F mpegfile.ts

Wenn Sie die -jOption hinzufügen , wird auch der Inhalt der PSIPTabellen und descriptorsin einem JSONObjekt ausgegeben :

dvbtee -F mpegfile.ts -j 
mkrufky
quelle
Der Fragesteller erwähnte bereits dvbteeund dass es bei ihnen nicht funktionierte. Sie sollten wahrscheinlich hinzufügen, dass Sie Ihr Programm in der Zwischenzeit verbessert haben, um es unter Windows zu erstellen. :)
Dubu
1
Ich habe mich in der Tat verbessert, dvbteeweil das OP diese Frage gestellt hat. Die Diskussion zwischen uns über den Github Issue Tracker wurde fortgesetzt. Er bat mich, hier eine endgültige Antwort für andere Benutzer zu veröffentlichen.
mkrufky
Ihre dvbpsi-Bibliothek scheint (sofern der Name kein Zufall ist) jetzt Teil von videolan zu sein ( git.videolan.org/git/libdvbpsi.git ), aber was ist mit dvbtee selbst?
Bruce Adams
dvbpsiist seit ich denken kann ein Teil von Videolan. dvbteeist eine Abstraktion auf viel höherer Ebene, die sich wahrscheinlich nie dem Videolan-Projekt anschließen wird. Es wird in einem separaten Git-Repository verwaltet und entwickelt. Ich bin offen für die Erstellung von Distributionspaketen, wenn die Leute interessiert sind, aber andererseits ist es Open Source und jeder kann dies tun.
mkrufky
@ BruceAdams, wenn Sie nach einem Windows-Build von suchen dvbtee, hat das OP-Poster einen Cross-Build unter github.com/rdp/ffmpeg-windows-build-helpers
mkrufky
1

OK, ich habe EPGCollector entdeckt. Es hat EPGCentre.exe, die nette Benutzeroberfläche, und EPGCollector.exe, eine Konsolen-App. Die EPGCentre.exe spuckt eine Konfigurationsdatei aus, die Sie überall speichern können. Führen Sie dann einfach die Konsolen-App als Prozess aus und sie wird im Hintergrund angekreuzt

Beispielbefehlszeilenargumente für die Konfigurationsdatei, die von EPGCentre.exe ausgespuckt wird!

C: \ EPGCollector.exe /INI=BNE.ini

Rogerdpack
quelle