AVAudioPlayer не может открыть аудио при выключенном экране. Ошибка: Ошибка Домен = NSOSStatusErrorDomain Код = -54 - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь воспроизвести следующий звук, когда текущий звук закончен, я ловлю audioPlayerDidFinishPlaying. Работает нормально при включенном экране iPhone. Если я выключаю экран, я получаю ошибку Error Domain=NSOSStatusErrorDomain Code=-54, когда пытаюсь открыть следующий звук с помощью AVAudioPlayer.

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
    if flag {
        do {
            player = try AVAudioPlayer(contentsOf: url)
        } catch {
            print(error)
        }
    }
}

1 Ответ

0 голосов
/ 12 января 2020

Я должен использовать AVAudioPlayer, поскольку он поддерживает скорость воспроизведения, но не поддерживает создание экземпляра AVAudioPlayer в режиме спящего устройства. Мое решение - создать массивы AVAudioPlayer до того, как устройство будет отключено. Когда текущее аудио закончено, вы должны получить следующий экземпляр из сохраненного массива.

Вы можете проверить это здесь

let players = [AVAudioPlayer]()
let index = 0

do {
    player = [
        try AVAudioPlayer(contentsOf: url1),
        try AVAudioPlayer(contentsOf: url2),
        try AVAudioPlayer(contentsOf: url3)
    ]
} catch {
    print(error)
}

players[index].play()

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
    if flag {
        index += 1
        players[index].play()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...