[Ffmpeg-devel] [Bad news]: MPEG Seek has failed to work in FFmpeg SVN

Steve Lhomme slhomme
Fri Nov 3 18:02:34 CET 2006


M?ns Rullg?rd wrote:
> Steve Lhomme said:
>>
>> M?ns Rullg?rd wrote:
>>> Steve Lhomme said:
>>>> QuickTime wrote:
>>>>> Dear:
>>>> Hi Quicktime,
>>>>
>>>>> FFmpeg fails to decode video(avcodec_decode_video() never return
>>>>> picture) after perform SEEK on mpeg file format
>>>>>
>>>>> It seems that the seek&decode abiliity for mpeg files have been broken
>>>>> for 2 months(ealier than August )
>>>>>
>>>>> ffmpeg  -ss 00:00:10 -i test.mpg  -r 25 test.mp4
>>>>> .....
>>>>> Input #0, mpeg, from 'test.mpg':
>>>>>  Duration: 00:00:24.0, start: 0.346711, bitrate: 2314 kb/s
>>>>>  Stream #0.0[0x1e0]: Video: mpeg1video, yuv420p, 352x288, 2000 kb/s,
>>>>> 25.00 fps(r)
>>>>>  Stream #0.1[0x1c0]: Audio: mp2, 44100 Hz, stereo, 192 kb/s
>>>>> Output #0, mp4, to 'test.mp4':
>>>>>  Stream #0.0: Video: mpeg4, yuv420p, 352x288, q=2-31, 200 kb/s, 25.00
>>>>> fps(c)
>>>>>  Stream #0.1: Audio: aac, 44100 Hz, stereo, 64 kb/s
>>>>> Stream mapping:
>>>>>  Stream #0.0 -> #0.0
>>>>>  Stream #0.1 -> #0.1
>>>>> frame=    0 q=0.0 Lsize=     120kB time=14.8 bitrate=  66.1kbits/s
>>>>> video:0kB audio:114kB global headers:0kB muxing overhead 4.833664%
>>>>> .....
>>>> I've had similar problems (actually crashes) with some MPEG2 samples
>>>> (from DVDs) for a long time. Maybe if you can provide a sample and say
>>>> what platform you use, it could help.
>>> Yeah, if Steve hadn't refused to provide samples, maybe this had been fixed
>>> already.
>> Look at the message "Re: [Ffmpeg-devel] MPEG2 decoding problems" from
>> 2006-03-02 there is a chems1.vob sample. The URL should still work.
> 
> I have a copy of the file.
> 
>> It was not fixed because you need to seek at a specific place in the
>> file to crash. Maybe you can manage to do that by doing a
>> forward/backward seek in ffplay during a specific fraction of second
>> during playback. I proposed to modify ffplay to test it but it was
>> rejected...
> 
> We do not support modified versions of ffmpeg.  If this is really a bug in
> our code (and caused by your mods), it should be possible to trigger it by
> cutting that file of yours in the right spot.  Find this spot, and we'll
> look into it.  You can't expect us to do all the work.

I tried it. Unfortunately it not as simple as you write it. Our code 
uses AVSEEK_FLAG_BYTE when seeking in VOB files (since the timestamps 
may not be contiguous/accurate throughout the file). And neither 
ffmpeg.c nor ffplay.c use this flag to seek.

Cutting the original file to the seek point where it crashes for me 
didn't help. And modifying the ffmpeg.c to use this flag didn't help 
neither. Even when using our modified version that uses DrFFMPEG.

So the problem is dynamic. You need to read/decode frames before seeking 
for the crash to occur. That's why only trying with ffplay produces the 
crash. And only after modifying it (since it's dynamic it's almost 
impossible to seek to the location where you want it to crash).

Since AVSEEK_FLAG_BYTE is not used in the ffmpeg/ffplay code, does it 
means it's not supported and no bug report are considered ? Same 
question with dynamic issues (from a legitimate use of 
libavcodec/libavformat).

Steve






More information about the ffmpeg-devel mailing list