如何在AvAudioplayer中快速添加URL

时间:2019-01-10 02:33:55

标签: ios swift

我只想问一下如何使用通过URL链接使用avAudion播放音频。

我收到错误的错误请求。有人可以帮助我吗?

我已经尝试过使用avplayer,但是它不适合我..虽然可以使用,但是..我还是更喜欢使用avaudioplayer

    let mp3URL = NSURL(fileURLWithPath:"https://s3.amazonaws.com/kargopolov/kukushka.mp3")
    do {
        // 2
        audioPlayer = try AVAudioPlayer(contentsOf: mp3URL as URL)
        audioPlayer.play()
        // 3
        Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(updateAudioProgressView), userInfo: nil, repeats: true)
        progressView.setProgress(Float(audioPlayer.currentTime/audioPlayer.duration), animated: false)
    }
    catch {
            print("An error occurred while trying to extract audio file")
    }

2 个答案:

答案 0 :(得分:0)

根据the AVAudioPlayer documentation,如果您想通过Internet播放音频(尚未下载到磁盘或内存),则应使用AVPlayer

文档将AVAudioPlayer描述为

  

一种音频播放器,可播放文件或内存中的音频数据。

再往下一点,在“概述”部分中,增加了重点:

  

使用此类进行音频播放除非您正在播放从网络流中捕获的音频,或者需要非常低的I / O延迟。


注释

  1. 通过访问连接失败时引发的错误对象,可以从运行时获取更多信息。将catch {更改为catch let error {,然后您可以将错误作为消息的一部分注销,如下所示:
catch let error{
    print("An error occurred while trying to extract audio file: \(error)")
}
  1. 当我通过上述更改在Xcode游乐场中运行示例代码时,会看到以下内容:
  

尝试提取音频文件时发生错误:Error Domain = NSOSStatusErrorDomain Code = 2003334207“(null)”

  1. 请注意错误的DomainCodePasting that error into Google产生一些结果,表明URL可能无法正确解析。 (实际上,单击该mp3链接会显示错误的访问错误消息。)

第一个结果是another StackOverflow post,存在类似问题。第二个是Apple Developer Forum post,其中包含更多信息。

让我们尝试将URL更改为可公开访问的示例mp3文件。 (我通过在网络上搜索Google上的“测试mp3文件”来找到this one。)

  1. 您需要将NSURL更改为URL,并且要使用另一个初始化器,而不是fileURLWithPath。 (说string:。)

  2. 每当在媒体或文件API中看到contentsOf...:时,就有很大的机会期望数据或文件被排除在网络流之外。同样,当您看到采用fileURL...的初始化程序或方法时,系统期望指向的是本地资源,而不是网络URL。

答案 1 :(得分:-1)

if let mp3URL = URL(string: "https://s3.amazonaws.com/kargopolov/kukushka.mp3"){
        // do s.t
}   

无论如何,您应该了解ios的基础