And I have another question: If an AVPacket object has AV_PKT_FLAG_KEY bit set in flags, does that mean this packet when passed into avcodec_decode_video2 can always get a complete frame (I mean by calling avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished, &packet) the 3rd argument set to true)?
Thanks 2013/12/9 YIRAN LI <[email protected]> > Thanks Don, > > So in order to get a correct image, I must not use AVSEEK_FLAG_ANY so > that av_seek_frame by default will seek to a key frame. And I should > continue to read from that point and decode until I get a frame with the > timestamp I want. > > Do you know if all demuxers can support av_seek_frame() correctly so that > as long as there's a key frame before the position I pass to the function, > they all can correctly seek to that key frame? > > Thanks > > > 2013/12/4 Don Moir <[email protected]> > >> >----- Original Message ----- >> >From: YIRAN LI >> >To: This list is about using libavcodec, libavformat, >> libavutil,libavdevice and libavfilter. >> >Sent: Sunday, December 08, 2013 9:44 PM >> >Subject: [Libav-user] a question for av_seek_frame >> >> >Hi friends >> >> >Here I have a question about av_seek_frame. >> >> >For example if I have a video stream of time stamps 0, 1, 2, 3, 4, 5, 6, >> 7, 8, 9, 10. and only frame at 0 is a key frame. >> >> >if I call av_seek_frame(x,x,5, AVSEEK_FLAG_BACKWARD | AVSEEK_FLAG_ANY) >> and then av_read_frame, the first frame I get will be frame 6, is this >> correct? >> >> >then if I call av_seek_frame(x, x, 5, AVSEEK_FLAG_BACKWARD) and then >> av_read_frame, then the first frame I get will be frame 1, is this correct? >> >> >and if both can seek to a frame and first one can get a frame quicker, >> in what circumstance should I use the second one? >> >> >Thanks >> >> Non key frames require the previous key frame in order to be decoded >> correctly. So if you skip past the key frame to frame 6, then the decoded >> image will most likely be incorrect. >> >> While your first example may be quicker, it will not be correct. Best to >> stay away from AVSEEK_FLAG_ANY for normal display purposes. Proper seeking >> to frame 6 would require a seek to frame 1 and then read and decode to >> frame 6. AVSEEK_FLAG_ANY can be useful in some cases but generally not >> for normal display. >> >> _______________________________________________ >> Libav-user mailing list >> [email protected] >> http://ffmpeg.org/mailman/listinfo/libav-user >> >> >
_______________________________________________ Libav-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/libav-user
