[FFmpeg-devel] MainConcept mpeg not decoding properly.
Måns Rullgård
mans
Sun Jan 13 19:11:44 CET 2008
Michael Niedermayer <michaelni at gmx.at> writes:
> On Fri, Jan 11, 2008 at 10:02:23PM +0000, M?ns Rullg?rd wrote:
>> Michael Niedermayer <michaelni at gmx.at> writes:
>>
>> > On Fri, Jan 11, 2008 at 12:03:05PM -0500, Media Streaming Services wrote:
>> >> Hi all.
>> >>
>> >> I'm trying to encode mpg to 3gp and have problems with the source file.
>> >> Audio track is encoded as 140 seconds and video is 206 seconds...
>> >>
>> >> http://rapidshare.com/files/82302675/DA_117588fd522.mpg.html
>> >> I've tried uploading to mplayer's ftp, but the file gets deleted soon
>> >> after I finish uploading.
>> >>
>> >> it's a MainConcept muxed mpeg2-ps. Plays fin in Windows graphedit&WMP using
>> >> Mainconcept demuxer.
>> >>
>> >> I have tried -vcodec h264, -acodec liba52, -f mpeg, -f svd, -f dvd,
>> >> -async 1, -vsync 1... all produce bad files, asynch had actually
>> >> produced file with equal video and audio length, but audio got
>> >> "chopped up". Is it a bug? Or am I doing something wrong?
>> >>
>> >> /usr/local/bin/ffmpeg -f dvd -vcodec h264 -i DA_117588fd522.mpg
>> >> -bitexact 1 -vcodec mpeg4 -deinterlace -s 176x144 -r 12 -b 92k -nr 1
>> >> -preme 1 -bt 100k -lowres 1 -trell 1 -maxrate 110k -bufsize 256k -vol
>> >> 400 -acodec libamr_nb -ac 1 -ar 8000 -ab 12.2k -y -pass 2 9.3gp
>> >
>> > please provide a minimum command line to reproduce it and full uncut
>> > output of ffmpeg
>>
>> Here's what I used:
>>
>> $ ffmpeg -i DA_117588fd522.mpg -an -f image2 foo/%03d.png
>> FFmpeg version git-55839b7, Copyright (c) 2000-2008 Fabrice Bellard, et al.
>> configuration: --cc=gcc-4.2.2 --cpu=nocona --enable-gpl
>> libavutil version: 49.6.0
>> libavcodec version: 51.49.0
>> libavformat version: 52.3.0
>> libavdevice version: 52.0.0
>> built on Jan 11 2008 21:38:35, gcc: 4.2.2 (Gentoo 4.2.2 p1.0)
>> Input #0, mpeg, from 'DA_117588fd522.mpg':
>> Duration: 00:02:20.8, start: 1.830000, bitrate: 1702 kb/s
>> Stream #0.0[0x1e0]: Video: h264, yuv420p, 320x240 [PAR 1:1 DAR 4:3], 25.00 tb(r)
>> Stream #0.1[0x1c0]: Audio: mp2, 44100 Hz, stereo, 192 kb/s
>> Output #0, image2, to 'foo/%03d.png':
>> Stream #0.0: Video: png, rgb24, 320x240 [PAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 25.00 tb(c)
>> Stream mapping:
>> Stream #0.0 -> #0.0
>> Press [q] to stop encoding
>> frame= 994 fps= 74 q=0.0 Lsize= -0kB time=39.8 bitrate= -0.0kbits/s
>> video:18797kB audio:0kB global headers:0kB muxing overhead -100.000114%
>
> the dts implicitly stored in the stream seem invalid, thus the file is not
> valid
>
> [mpeg @ X]0: pts=2.390 dts=2.390 size=2020
> [mpeg @ X]0: pts=2.350 dts=2.350 size=2020
Yes, there are indeed some oddities with the timestamps in that file.
> also the file uses complex frame reordering (b pyramid), while our
> h264 parser doesnt support interpolating missing timestamps.
That's not a fault in itself, so if FFmpeg can't handle it, that's a
bug.
> The generic code in lavf tries to interpolate but it just doesnt have
> enough knowlegde and with half of the timstamps being even wrong it
> cant really work ...
>
> Fixing playback of that file would require, first to detect and remove
> the invalid timestamps, and then extending the h264 parser to interpolate
> what is missing using the POCs from the h264 headers.
> patches for both of these are welcome i guess, after all this is the
> second mpeg-ps with such odd dts.
>
>> FWIW, the file plays fine with tcvp using its demuxer and lavc
>> decoder.
>
> How does tcvp handle h264 with missing and half wrong timestamps?
> I assume it just sends it to the decoder and lets the decoder reorder
> the pts?
Yes, it simply outputs (whether to a display or to an encoder) the
frames in the order they are delivered by the decoder.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list