Libavcodec Avformat无法查找到文件的开头

Libavcodec Avformat无法查找到文件的开头,libavcodec,libav,libavformat,Libavcodec,Libav,Libavformat,我需要通过MP4容器中的H.264编码视频流快速查找。我使用libav解码帧,所以我偶然发现了avformat\u seek\u file()方法 我的问题是,假设H.264流以关键帧开始,当我寻求时间戳0时(不管时间基准),我应该在流的边缘。但我不是。我通常会在视频中投入几秒钟。此外,如果我想,例如10秒,我通常得到大约12秒。关键帧是否可能如此“罕见”?似乎AVSEEK\u FLAG\u ANY对搜索结果没有影响。在多个FullHD H.264 MP4视频上测试 代码: 试着改用。阅读一些关

我需要通过
MP4
容器中的
H.264
编码视频流快速查找。我使用libav解码帧,所以我偶然发现了
avformat\u seek\u file()
方法

我的问题是,假设
H.264
流以关键帧开始,当我寻求时间戳0时(不管时间基准),我应该在流的边缘。但我不是。我通常会在视频中投入几秒钟。此外,如果我想,例如10秒,我通常得到大约12秒。关键帧是否可能如此“罕见”?似乎
AVSEEK\u FLAG\u ANY
对搜索结果没有影响。在多个
FullHD H.264 MP4
视频上测试

代码:

试着改用。阅读一些关于使用它和四处寻找的技巧

unsigned long seekTo = 0;
//Doesen´t actually matter for 0 since it will be also 0
seekTo = av_rescale_q(seekTo, AVRational{1, AV_TIME_BASE}, pFormatCtx->streams[videoStream]->time_base);
int result = avformat_seek_file(pFormatCtx, videoStream, INT_FAST64_MIN, seekTo, seekTo, AVSEEK_FLAG_ANY);
avcodec_flush_buffers(pCodecCtx);