How to l extract EPG data from MPEG TS files?

I have the ability to capture "MPEGTS" DVB/ATSC streams. I'd like to be able to take the TS files and extract "EPG" (programming guide) information from them, because FFmpeg (which does the capturing) doesn't seem to have the ability to read any EPG information from the MPEGTS streams. How do I extract this data into some text form that is human readable? I have the MPEGTS files available as the input. I tried a few libraries:

libdvbtee seems to only compile for unix: https://github.com/mkrufky/libdvbtee/issues/12 (update: it works for windows now, see the answer)

DVBInspector is GUI only (command line UI is desired here).

TSReader "free" version doesn't extract EPG's.

FFmpeg doesn't seem to have any concept of support for EPG "yet."

CherryEPG seems to only write, not read EPG.

libucsi can apparently do it but it wasn't clear if there was a command line option.

EPG Collector appears to be GUI only (?) and was hard to understand how to convert to a human readable output.


Solution 1:

As a result of you posting this question, I have gone ahead and fixed windows build support for libdvbtee

libdvbtee is an open source transport stream service information decoder library (mkrufky.github.io/libdvbtee) that you can use to view the EPG or any other service information embedded in any TS file. Use the following command:

dvbtee -F mpegfile.ts

If you add the -j option, it will also output the contents of the PSIP tables and descriptors in a JSON object:

dvbtee -F mpegfile.ts -j 

Solution 2:

OK I did discover EPGCollector, it has EPGCentre.exe which is the nice UI and EPGCollector.exe which is a console app. The EPGCentre.exe spits out a configuration file which you can save anywhere, then just run the console app as a process and it'll tick away in the background

Sample command line args for the config file that the EPGCentre.exe spits out!

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