[FFmpeg-trac] #9257(undetermined:new): -ss fast seek can use bad (damaged) i-frame as references

FFmpeg trac at avcodec.org
Sat May 22 23:28:45 EEST 2021

#9257: -ss fast seek can use bad (damaged) i-frame as references
             Reporter:  parbruek     |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
 Summary of the bug:
 My apologies for what is a particularly minor bug, if it even qualifies as
 such. This is about the error handling of -ss before versus after the
 input line.
 According to the official documentation and wiki pages, when -ss is used
 before a video input, ffmpeg will seek via I-frames and merely use the
 nearest I-Frame as a starting point for decoding video. According to
 virtualdub, I have found several videos with false I-frames in their
 streams, followed by B-frames which contained complete frame info. When
 using the faster seek (-ss before input) from such an I-frame, ffmpeg will
 produce an initial grey frame, as well as attempting to repair the initial
 frame of the output, starting from any frame in the GOP after the false
 I-frame. However, if I use slow seek, or a combination of fast and slow
 seek, ffmpeg will recognize the false I-frame as such, and generate no
 grey frames or errors.

 How to reproduce.
 I don't know what videos you have available. That being said, if you have
 the extended edition of the fellowship of the ring on hand, take disc 1
 and check out the main film:
 % ffmpeg -ss 6083.618 -i "C:\Video\THE LORD OF THE RINGS- THE FELLOWSHIP
 (EXT.) PT. 1_t02.mkv" -o test.mkv

 ffmpeg version 2021-05-19-git-2261cc6d8a

 In this case, fast seek will attempt to decode using the false I-frame
 #145857, that is, the frame at 1:41:23.452. If ffmpeg uses slow seeking
 from an I-frame before 1:41:23.452, no error is encountered. If this bug
 is reproducible, would you consider updating the wiki page on seeking to
 mention the utility of using a combo of fast and slow seeking, until a
 time when fast seeking handles errors as well as slow seeking? It took me
 several hours to discover the bad I-frames and the fix, and I'd like to
 save the next person the time.
Ticket URL: <https://trac.ffmpeg.org/ticket/9257>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker

More information about the FFmpeg-trac mailing list