[FFmpeg-devel] TS muxer issues -- some progress

Alexandre FERRIEUX - FT/RD/SIRP/ASF/SOFTL alexandre.ferrieux
Fri Jan 30 10:16:46 CET 2009


Recently I asked for help about ffmpeg's TS/UDP flow being unsuitable 
for a set-top-box. I precise I'm talking about the trunk's TS muxer, not 
the SoC one since it seems it is not blatantly superior ... yet ;-)

Thanks to ffmpeg's and vlc's flexibility, I have been able to perform 
the following comparison:

(1) Ffmpeg all the way (encode+mux+send):

    ./ffmpeg -re -i 134.wmv -vcodec mpeg2video -acodec mp2 -f mpegts 

(2) Ffmpeg (encode) + Vlc (mux+send):

    ./ffmpeg -re -i 134.wmv -vcodec mpeg2video -acodec mp2 -f vob - | 
vlc - --sout '#std{access=udp,dst=HOST:PORT,mux=ts}'

The result is that (2) works like a charm with audio and video while (1) 
displays frequent freezes and mostly no sound.

Hence, clearly something goes awry in the (mux+send) of ffmpeg.

Then I used Laurent Aimar's vlc trick to separate the "send" part:

    vlc file.ts --ts-out HOST:PORT --ts-out-mtu 1500

I did this with two TS files, generated by each variant of the 
(encode+mux) chain:

    ./ffmpeg -re -i 134.wmv -vcodec mpeg2video -acodec mp2 -f mpegts bad.ts

    ./ffmpeg -re -i 134.wmv -vcodec mpeg2video -acodec mp2 -f vob - | 
vlc - --sout '#std{access=file,dst=good.ts,mux=ts}'

Interestingly, the outcome is the same: bad.ts has exactly the same 
misbehavior as the equivalent direct-udp-send chain above, while good.ts 
displays perfectly.

Conclusion: ffmpeg's TS mux is broken, independently from codec tunings 
or UDP-out timings.

Now I have superficially analyzed both TS files with dvbsnoop. The 
salient differences are:

    (1) Different version numbers in PAT and PMT: ffmpeg's are both 0, 
vlc's are 5 (PAT) and 7 (PMT)

    (2) Different pattern of presence of the adaptation field (hence 
PCR) in the video stream:

        - ffmpeg's are very regular, one PCR every three TS packets of 
the video PID => even-sized PESpackets ???

        - vlc's are more varied, with intervals ranging from 1 to more 
than 20, as one would expect.

    (3) Different delta-PCR:

        - ffmpeg's are mostly at 19ms

        - vlc's are mostly around 70ms

Does the above pattern of evidence ring a bell ?


More information about the ffmpeg-devel mailing list