我尝试使用 ffmpeg + opengl 来控制视频的播放速度。但是我有问题。
我的视频以 25 fps 编码,播放速度非常快。我在我的代码中添加了这个。
tiempo = glfwGetTime();
duracion = 1.0/25.0; // 1 second / 25 fps
while(1){
...
if(glfwGetTime() > tiempo + duracion){
if(av_read_frame(pFormatCtx,&packet) >= 0){
if(packet.stream_index == 0){
avcodec_decode_video2(pCodecCtx,pFrame,&frameFin,&packet);
if(frameFin)sws_scale(img_convert_ctx,pFrame->data,pFrame->linesize,0,pCodecCtx->height,pFrameRGB->data,pFrameRGB->linesize);
}
av_free_packet(&packet);
}
tiempo = glfwGetTime();
}
...
}
问题是现在视频播放速度比应有的慢。有什么问题?
您将解码图像解码所需的时间添加到您必须等待显示下一个图像的 40 毫秒。此错误是因为您在循环结束时再次测量了时间。
代替:
}
tiempo = glfwGetTime();
}
写:
}
tiempo+=duraction;
}
我是一名优秀的程序员,十分优秀!