Возвращает неправильный кадр при поиске в 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.

Пожалуйста, предоставьте любую информацию по этому вопросу.

0 ответов

Другие вопросы по тегам