AudioStreamer не показывает правильное время воспроизведения - PullRequest
3 голосов
/ 31 октября 2011

У меня есть одно приложение ios, которое воспроизводит музыку с помощью потоковой передачи и использования библиотеки Mattgallagher AudioStreamer, оно не показывает реальное время воспроизведения и никогда не останавливает воспроизведение в 0 секунд ...

Кто-нибудь знает, почему это происходит??

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 31 октября 2011

Я испытал нечто подобное.Взгляните на метод progress в AudioStreamer.m

- (double)progress
{
    @synchronized(self)
    {
        if (sampleRate > 0) && ![self isFinishing])
        {
            if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING)
            {
                return lastProgress;
            }
    ...
        }
    }

    return lastProgress;
}

Теперь причина неправильного отображения прогресса лежит в двух операторах if.Когда ваш AudioStreamer почти завершен (возможно, когда все данные загружены), он isFinishing становится истинным, что заставляет его возвращать кэшированное значение для прогресса.Кроме того, состояние стримера становится AS_STOPPING, что заставляет второй оператор if возвращать lastProgress.Что вам действительно нужно, так это обновлять ход выполнения до тех пор, пока стример не остановится.

Моя следующая модификация кода делает это, и, похоже, работает нормально.ОДНАКО, учитывая общее качество AudioStreamer и тот факт, что он разработан Мэттом Галлахером, эти операторы if могут быть такими, как они есть по определенной причине.До сих пор у меня не было сбоев или подобных ошибок с моим измененным кодом, но вы должны тщательно протестировать его в своем приложении.Обратите внимание, что, как только стример закончен, я больше не запрашиваю прогресс.Если вы это сделаете, проверьте, работает ли это:)

- (double)progress
{
    @synchronized(self)
    {
        if (sampleRate > 0))
        {
            if (state != AS_PLAYING && state != AS_PAUSED && state != AS_BUFFERING && state != AS_STOPPING)
            {
                return lastProgress;
            }
    ...
        }
    }

    return lastProgress;
}
0 голосов
/ 07 апреля 2014

Проблема устранена:

https://github.com/mattgallagher/AudioStreamer/issues/39

...