在FFMPEG播放器中搜索时返回错误的帧

时间:2015-01-01 10:03:07

标签: android ffmpeg audio-player

我已经实现了一个音频播放器,它支持使用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上正常工作。

请提供有关此问题的任何信息。

0 个答案:

没有答案