我正在使用ffmpeg的c api来解码音频文件。一切都运行良好,除了寻找大文件是非常慢的。我有一个3小时(450MB)的mp3文件,我正在测试,从开始到接近结束需要大约12秒。一旦我查找了文件的某些部分,那么文件中较早部分的任何未来搜索都是即时的。因此,似乎ffmpeg正在缓存一些东西,以使未来寻求快速。
int seek(uint64_t timestamp) {
uint64_t seekTarget = av_rescale_q(timestamp * 1000, AV_TIME_BASE_Q, formatContext->streams[stream_index]->time_base);
return av_seek_frame(formatContext, stream_index, seekTarget, AVSEEK_FLAG_ANY);
}
我也试过了avformat_seek_file
,我得到了同样的行为。有没有办法加快寻求过程?是否有一些额外的信息我可以给ffmpeg所以它不需要做那么多工作?