Ffmpeg 如何在libavcodec中撤消avformat_seek_文件调用?

Ffmpeg 如何在libavcodec中撤消avformat_seek_文件调用?,ffmpeg,libavcodec,Ffmpeg,Libavcodec,我有一个围绕libavcodec编写的应用程序,它有时会在执行某些工作时尝试在视频中寻找前方。调用avformat_seek_file只能搜索一个关键帧,因此有时我会遇到这样的情况:它最终从解码例程中的当前位置向后搜索,导致我不得不重复工作。例如,如果我在第150帧上,我想搜索到第200帧,但文件中唯一的关键帧在第1帧和第100帧上,此调用将使我搜索回第100帧,这意味着我现在必须解码100帧才能到达200帧,而不是50帧才能从第150帧的原始解码位置到达200帧 我有没有办法告诉avforma

我有一个围绕libavcodec编写的应用程序,它有时会在执行某些工作时尝试在视频中寻找前方。调用
avformat_seek_file
只能搜索一个关键帧,因此有时我会遇到这样的情况:它最终从解码例程中的当前位置向后搜索,导致我不得不重复工作。例如,如果我在第150帧上,我想搜索到第200帧,但文件中唯一的关键帧在第1帧和第100帧上,此调用将使我搜索回第100帧,这意味着我现在必须解码100帧才能到达200帧,而不是50帧才能从第150帧的原始解码位置到达200帧

我有没有办法告诉avformat_seek_文件撤消上次搜索并将我重置到以前的位置?是否有其他方法可以“保存”我的解码状态以手动撤销这个错误的搜索


编辑-需要注意的是,我的视频总是在mp4容器中进行h264编码。

问得好,我没有答案,只是为了确保,“
avformat\u seek\u file
只能搜索关键帧”这是事实还是假设?我应该澄清一下,对于H264编码流,它只能搜索关键帧,但在其他格式(不是增量压缩)中,可以搜索非关键帧:好问题,我没有答案,只是为了确保,“
avformat\u seek\u file
只能搜索关键帧”这是事实还是假设?我应该澄清一下,对于H264编码流,它只能搜索关键帧,但在其他格式(非增量压缩)中,可以搜索非关键帧: