Postby gnu_andrew » 06 Feb 2005 12:31
It seems that VLC handles transport streams very differently to other applications (and, AFAICS, in a more complete way). Both mplayer and xine rely on a channels.conf file when reading from DVB (which does this mapping of channel names to PIDs), and, when reading MPEG-2 TS files, it just uses the first pair of video and audio PIDs. mplayer also seems to pick up the SUB stream from the recorded TS, and parse it, but not display it!
Cache fill: 0.00% (0 bytes) TS file format detected.
DEMUX OPEN, AUDIO_ID: -1, VIDEO_ID: -1, SUBTITLE_ID: -1,
PROBING UP TO 2000000, PROG: 0
VIDEO MPEG2(pid=2819)...AUDIO MPA(pid=2820) SUB DVB(pid=2821) PROGRAM N. 0
In contrast, VLC does the whole job itself, and handles the PSI tables using libdvbpsi. I need to have a closer look at the code to determine what PIDs need to be added (ETSI EN 300 468 specifies the four MPEG-2-defined ones, PAT, CAT, PMT, TSDT, and four mandatory DVB ones, NIT, SDT, EIT, TDT). As I'm recording using a tool I hacked together myself, it isn't a problem to add whatever is needed. However, it would also be nice if VLC could handle the hundreds of gigabytes of stuff I already have which does work fine with xine and mplayer (as you say, by a similar fallback method to using the first video, audio and subtitle pid).