Возвращает неправильный кадр при поиске в FFMPEG 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.
Пожалуйста, предоставьте любую информацию по этому вопросу.