Как уменьшить задержку в AVplayer для зацикливания воспроизведения звука - ios swift - PullRequest
0 голосов
/ 30 октября 2018

У меня есть один mp3-файл в папке проекта, который воспроизводится снова и снова, но проигрыватель задерживает воспроизведение mp3. Эта задержка составляет около 1 секунды. Как мне уменьшить эту задержку и постоянно воспроизводить? Я использовал количество циклов, но это не помогает. Код ниже:

DispatchQueue.main.async
        {
            guard let url = Bundle.main.url(forResource: "finalbreathin", withExtension: "mp3") else { return }

            do {
                try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
                try AVAudioSession.sharedInstance().setActive(true)



                /* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
                self.player = try AVAudioPlayer(contentsOf: url)

                //iOS 10 and earlier require the following line:
                self.player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)

                guard let player = self.player else { return }
                player.numberOfLoops = -1
                self.imageanimate.startAnimating()
                player.play()

            } catch let error {
                print(error.localizedDescription)
            }

    }

1 Ответ

0 голосов
/ 30 октября 2018

Я думаю, что задержка воспроизведения является основной причиной того, что каждый цикл объявлен

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)

поэтому переместите этот двухстрочный цикл или AppDelegate. В приложении: didFinishLaunchingWithOptions: метод установите категорию аудиосеанса приложения на AVAudioSessionCategoryPlayback. подробности -> https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/MediaPlaybackGuide/Contents/Resources/en.lproj/GettingStarted/GettingStarted.html

...