当前位置: 首页 > 面试题库 >

如何在iOS Swift中从URL播放MP3音频

沈茂
2023-03-14
问题内容

我收到mp3网址作为api调用的响应。我想播放该音频,那么我该怎么做?(iOS迅速)

这是我的回应

 {
    content = "En este primer programa se tratar\U00e1n asuntos tan importante como este y aquel sin descuidar un poco de todo lo dem\U00e1s";
    file = "http://radio.spainmedia.es/wp-content/uploads/2015/12/ogilvy.mp3";
    image = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tapas.jpg";
    number = 0001;
    subtitle = Titulareando;
    title = "Tapa 1";
}

这是我的代码::

 @IBAction func btnplayaudio(sender: AnyObject) {
    let urlstring = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tailtoddle_lo4.mp3"
    let url = NSURL(string: urlstring)
    print("the url = \(url!)")

    play(url!)

}

func play(url:NSURL) {
    print("playing \(url)")

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

}

我要去哪里错了?


问题答案:

我尝试了以下方法

    let urlstring = "http://radio.spainmedia.es/wp-content/uploads/2015/12/tailtoddle_lo4.mp3"
    let url = NSURL(string: urlstring)
    print("the url = \(url!)")
    downloadFileFromURL(url!)

添加以下方法,

func downloadFileFromURL(url:NSURL){

    var downloadTask:NSURLSessionDownloadTask
    downloadTask = NSURLSession.sharedSession().downloadTaskWithURL(url, completionHandler: { [weak self](URL, response, error) -> Void in
        self?.play(URL)
    })

    downloadTask.resume()

}

和您的播放方法一样,

func play(url:NSURL) {
    print("playing \(url)")

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

}

下载mp3文件,然后尝试播放,但AVAudioPlayer无法以某种方式为您下载mp3文件。我可以下载音频文件,然后播放器播放它。

请记住,将其添加到info.plist中,因为您是从 http* 源加载的,并且需要为 iOS 9+ 设置以下内容 *

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
</plist>


 类似资料:
  • 问题内容: 我正在尝试编写一个将从Soundcloud URL播放mp3的python脚本 这是我已经做的: 我尝试了许多选项,例如更改格式,频道,费率。而且我只是从扬声器中听到奇怪的声音,我搜索了Google以播放mp3,但没有找到任何信息。 我尝试通过传递mp3中的字节来创建对象,然后仅执行play函数。我没有收到任何错误:脚本正在运行,但没有任何播放。 我正在使用Python 3和Ubunt

  • 我有一个网页,提供通过手机动态下载mp3文件。我想添加一个功能,在下载文件之前,有人可以通过他们的台式机来收听这首歌。 我需要做什么?

  • 我已经在android studio中创建了一个音乐播放器应用程序。当我运行它时,没有问题,应用程序运行良好,但当我尝试从文件管理器播放歌曲时,应用程序选择弹出窗口显示我的应用程序。当我选择音乐播放器时,它会打开音乐播放器,但不会播放歌曲。只显示最后播放的歌曲。如何自动播放所选歌曲?我有什么需要捕捉的意图吗? AndroidManifest。xml 主要活动。JAVA

  • 我正在为android开发音乐播放器。我编写了一个代码,从android手机上获取所有音频(标题、艺术家姓名、uri、专辑艺术)。但问题是加载所有歌曲需要1分钟以上。所有音乐播放器应用如何处理此问题。有没有办法一首接一首地获取或加载音频歌曲并添加到RecyclerView中。比如Facebook新的订阅源。首先,当用户向下滚动时,它会加载几个故事,然后再加载几个故事。请帮我解决这个问题

  • 问题内容: Octave似乎假设某个特定的声音播放实用程序将在系统上可用,但似乎没有提供指定备用声音的功能。在以下错误中,Octave正在寻找,这不是在所有系统上都可用的实用程序。 八度:38>声音(beamformed_20) sh:ofsndplay:找不到命令 是否可以使用Octave配置设置或代码片段来指定适合系统的实用程序? 问题答案: 在我的一台Linux机器上,我创建了以下ofsnd

  • 我有一个现有的程序,它使用。NET System.Media.SoundPlayer从内存流中播放wav文件。我需要这样做的原因是因为wav文件在磁盘上是加密的...我将它们解密为一个内存流,并将该流提供给播放器。很好用。 但我宁愿用MP3...它们更小。我正在探索NAudio作为解决方案,但不知道如何从加密流中播放mp3。 你有什么办法让这个工作吗? 编辑:我试图完全消除块对齐流,只使用wave