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.

  • downvoters feel free to comment or tell me a better venue to post it.
    – rogerdpack
    Jan 16, 2016 at 2:30
  • libdvbtee will compile for windows now if you use the win branch. I'm hoping to hear some test feedback before I merge the remaining changes into the master branch. github.com/mkrufky/libdvbtee/commits/win
    – mkrufky
    Jan 20, 2016 at 19:02

2 Answers 2


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 
  • The questioner already mentioned dvbtee and that it did not work for them. You should probably add that you improved your program in the meantime to build under Windows. :)
    – Dubu
    Jan 28, 2016 at 8:28
  • 1
    I indeed improved dvbtee as a result of the OP posting this question. Discussion has continued between us on the github issue tracker, he asked me to post a final answer here for the sake of other users.
    – mkrufky
    Jan 28, 2016 at 10:58
  • Your dvbpsi library seems (unless the name is a coincidence) to be part of videolan now (git.videolan.org/git/libdvbpsi.git) but what about dvbtee itself? Mar 29, 2018 at 16:18
  • dvbpsi has been a part of videolan for as long as I can remember. dvbtee is a much higher level abstraction that is unlikely to ever join the videolan project. It is maintained and developed in a separate git repository. I'm open to creating distro packages if people are interested, but then again, it's open source and anyone may feel free to do so.
    – mkrufky
    Mar 29, 2018 at 17:25
  • 1
    @BruceAdams, if you're looking for a windows build of dvbtee, the OP poster has a cross-build set up at github.com/rdp/ffmpeg-windows-build-helpers
    – mkrufky
    Mar 29, 2018 at 22:53

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

  • Thanks this worked. I had to copy and edit a sample .ini file from Samples\Collector. I used my DVB-C TV Provider configuration details (frequency, QAM, Symbol Rate) in ScanningFrequency line under [DVBC] section. It seemed the TuningFile line was not used in my case since I could enter a non-existing file. The XML data extracted was not all what DVB Inspector showed however: title, desc, category, ratings, some credits, country.
    – Jan
    Feb 13, 2021 at 15:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.