我已经实现了一个音频播放器,它支持使用FFMPEG的所有格式。但是在寻找音频时,应用程序在该目标持续时间内得到了错误的帧。这是我的搜索功能代码。
int64_t seekTime = av_rescale_q(seekValue * AV_TIME_BASE,
AV_TIME_BASE_Q,
fmt_ctx->streams[seekStreamIndex]->time_base);
int64_t seekStreamDuration =
fmt_ctx->streams[seekStreamIndex]->duration;
int flags = AVSEEK_FLAG_BACKWARD;
if (seekTime > 0 && seekTime < seekStreamDuration)
flags |= AVSEEK_FLAG_ANY;
int ret = av_seek_frame(fmt_ctx, seekStreamIndex, seek_target,
flags);
if (ret < 0)
ret = av_seek_frame(fmt_ctx, seekStreamIndex, seekTime,
flags);
avcodec_flush_buffers(dec_ctx);
大多数歌曲都能正常使用。 但有些mp3歌曲的时间差错了。
例如:如果歌曲总持续时间是2分钟,如果我播放歌曲而不寻求它可以正常工作。但是在播放时,如果我们将歌曲设置到某个位置,这将使歌曲以2分10秒结束。
我只用mp3歌曲来解决这个问题。我正在使用FFMPEG 2.1。搜索功能的代码在FFMPEG 0.11.1上正常工作。
请提供有关此问题的任何信息。