[Libav-user] Can't read packets after seeking

Mark McKay mark at kitfox.com
Mon May 13 09:56:14 EEST 2019


I'm having trouble reading video packets after seeking within a video.
I seem to have no problem reading reading video packets if I just start
at the begining of the stream and scan every packet in order, but the
below code is not working.

I'm calling this from a timer that I want to
grab the video frame closest to the time timeMs. av_read_frame() is
returning the value -541478725 the third time it gets called, which
stops me from receiving and decoding the frame most of the time:


QImage FfmpegMediaSource::getVideoFrame(int timeMs)
 {
 AVPacket
packet;

 //Seek to our goal time
 avcodec_flush_buffers(pCodecCtx);

int64_t targetPts = timeMs * 1000;
 targetPts = av_rescale_q(targetPts,
AV_TIME_BASE_Q,
 pFormatCtx->streams[videoStream]->time_base);

 int err
= av_seek_frame(pFormatCtx, videoStream, targetPts,
AVSEEK_FLAG_BACKWARD);

 qDebug() 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://ffmpeg.org/pipermail/libav-user/attachments/20190513/e2e409e4/attachment.html>


More information about the Libav-user mailing list