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

Marc Mason mpeg.blue
Fri Jan 30 11:53:33 CET 2009


Alexandre FERRIEUX - FT/RD/SIRP/ASF/SOFTL wrote:

> 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 
> udp://HOST:PORT\?pkt_size=1316
> 
> (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 ?

Last time I looked (march 2008, trunk) ffmpeg PCR generation was a mess. 
The muxer picked PCR values ignoring PSI insertion, which lead to huge 
PCR jitter, which (I suppose) makes some hardware decoders throw a fit.

Are there any good open source TS analyzers?

I used Tektronix TS compliance analyzer to test ffmpeg's and vlc's TS 
muxers, but I was told it was horribly expensive.

BTW, vlc did not set the pcr_ext even though the info was available.

-- 
Regards.




More information about the ffmpeg-devel mailing list