Hi, I try to save the keyframes. I found which frames are keyframes.
I wrote two function to seek where the keyframes are. One of them is
with av_seek_frame and the other is with url_seek ..but none of them
work.

Here in this function pFormatCtx->pb->pos values of frames are in
"keyFrames" array.. but my function doesn't work.

for(i=0;i=0){
    pFormatCtx->pb->pos=packet.pos;
    if(pFormatCtx->pb->pos == keyFrames[i]){

        int64_t byteposition = pFormatCtx->pb->pos;
        url_seek(pFormatCtx->pb,byteposition,SEEK_SET);
        avcodec_decode_video2(pCodecCtx, pFrame, &frameFinished,
        &packet);
        SaveFrame(pFrame, pCodecCtx->width, pCodecCtx->height,i++);
            break;
    }
    av_free_packet(&packet);
}


Here in this function, "keyframes" array hold the number of which
frames are keyframe..In this function framefinished is 0 and
avcodec_decode_video returns -1. I think maybe I calculate timestamp
wrong but I couldn't find why?! (index is length of the "keyframe"
array..)

for(i=0;i<index+1;i++){
    int64_t timeStamp = (int64_t)((pFormatCtx->duration) /
framecount)*keyFrames[i]/1000;
    av_seek_frame(pFormatCtx,-1,timeStamp,AVSEEK_FLAG_ANY);
     while(av_read_frame(pFormatCtx, &packet)>=0){

        if (packet.pts >= timeStamp){
                int t=avcodec_decode_video2(pCodecCtx, pFrame,
&frameFinished,&packet);
            if (frameFinished){
                SaveFrame(pFrame, pCodecCtx->width, pCodecCtx-
>height,keyFrames[i]);
                break;
            }
        }
        av_free_packet(&packet);
     }
}

Can you help me with one of these functions?? Thank you..

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to