Как исправить проблему с AVAudioPlayer: «Сбой OpenFromDataSource» - PullRequest
0 голосов
/ 20 июня 2019

Я работаю над Xcode 10.1, и это очень простой фрагмент приложения для воспроизведения аудио.

var audioplayer:AVAudioPlayer?

override func viewDidLoad() {
    super.viewDidLoad()

    let url = Bundle.main.url(forResource: "ringtone2", withExtension: "mp3")
    guard url != nil else{
        return
    }
    do{
        audioplayer = try AVAudioPlayer(contentsOf: url!)
        audioplayer?.play()
    }
    catch{
        print("error")
    }
}

Должна воспроизводиться мелодия звонка, но код входит в блок catch и выводится следующее:

2019-06-20 15: 29: 11.573735 + 0530 letplaymusic [1539: 42595] 1410: проблема сканирования пакетов 2019-06-20 15: 29: 11.574033 + 0530 letsplaymusic [1539: 42595] 1008: сбой MPEGAudioFile :: OpenFromDataSource 2019-06-20 15: 29: 11.574204 + 0530 letsplaymusic [1539: 42595] 101: Сбой OpenFromDataSource 2019-06-20 15: 29: 11.574427 + 0530 Let'splaymusic [1539: 42595] 76: Ошибка открытия Ошибка

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Возможно, ваш аудиофайл находится не в том месте.Попробуйте разместить файл на том же уровне иерархии, что и файл ViewController.swift.
Я могу воспроизвести звук, используя тот же код, который вы опубликовали, однако я не вижу, куда вы поместили аудиофайл, поэтому я 'Я предполагаю, что это должно быть проблемой.

0 голосов
/ 20 июня 2019

1.Сделайте Sure копию файла .Mp3 в Bundle и подтвердите с помощью Log

2.player.prepareToPlay () - необходимая функция для воспроизведения ресурсов

func playAudioFile(_ url: URL) {
            print("playing \(url)")

            do {
                self.player = try AVAudioPlayer(contentsOf: url)
                player.prepareToPlay()
                player.volume = 1.0
                player.play()
            } catch {
                self.player = nil
                print(error.localizedDescription)
                print("AVAudioPlayer init failed")
            }

}

Happy Coding ...:)

...