There can be more than 1 frame per packet and your code assuming that there is 
only 1 frame per packet.
You should do smth like that:

AVPacket tmp_pkt;
int size;

....

tmp_pkt.data = pkt.data;
tmp_pkt.size = pkt.size;

while ( (size = avcodec_decode_video2(ctx,frame,&got_pict,&tmp_pkt) ) > 0)
{
        store_decoded_frame(frame);
        tmp_pkt.data += size;
        tmp_pkt.size -=  size;
}


24.03.2013, в 16:23, Pauli Suuraho написал(а):

> Hello all.
> 
> I'm a newcomer to use ffmpeg, and I've been bugging my mind about this one 
> thing.
> 
> I have videoclips (either h264 or prores), and I want to extract all the 
> frames. I'm using 32 bit ffmpeg-20130322-git-e0e8c20-win32 zeranoe shared+dev 
> and Qt compiled using MSVC2010.
> 
> I'm using the following code to extract the frames.
> 
> http://pastebin.com/DrC9H6g0
> 
> If I have a test clip that is 30 frames, 30fps long, for some reason the lib 
> always extracts only 24 frames and then says end of file.
> 
> FFmpeg.exe extracts all the frames (for example to PNGs) correctly. So 
> clearly I'm doing something wrong.
> 
> This happens with every clip I have. I've even tried to repack the clips with 
> ffmpeg but the output is same: last frames won't get noticed.
> 
> I guess this has something to do with I,P,B-frames, but not sure how.
> 
> Any help is appreciated!
> 
> Thanks,
> Pauli
> _______________________________________________
> 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

Reply via email to