Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何播放从解析服务器获取的AAC文件?_Ios_Swift_Audio_Parse Platform_Avaudioplayer - Fatal编程技术网

Ios 如何播放从解析服务器获取的AAC文件?

Ios 如何播放从解析服务器获取的AAC文件?,ios,swift,audio,parse-platform,avaudioplayer,Ios,Swift,Audio,Parse Platform,Avaudioplayer,这是我的程序中的一段代码片段。我从PFFile中获取数据,获取NSURL,最后是NSDATA,并将其传递给我的音频播放器。但是什么也没演,我也不知道为什么 var audioFile: PFFile = sound!["file"] as! PFFile audioFile.getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in if (error == nil) {

这是我的程序中的一段代码片段。我从PFFile中获取数据,获取NSURL,最后是NSDATA,并将其传递给我的音频播放器。但是什么也没演,我也不知道为什么

var audioFile: PFFile = sound!["file"] as! PFFile
audioFile.getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in
    if (error == nil) {
        let audioURLString = audioFile.url!
        let audioURL = NSURL(string: audioURLString)!
        println(audioURL)      //<-- this prints http://files.parsetfss.com/1d4f1088-a07c-43c7-ada2-7f246e6a8167/tfss-db262c85-f6ba-4a5e-a065-9f9e345a929a-sound.aac

        let audioData = NSData(contentsOfURL: audioURL)!
        println(audioData)     // <--this prints 0000001c 66747970 4d344120 00000000....
        let player = AVAudioPlayer(data: audioData, error: nil)
        println(player)        // <-- this prints <AVAudioPlayer: 0x174200200>
        player.play()
    }
}
var audioFile:PFFile=sound![“文件”]as!PFFile
audioFile.getDataInBackgroundithBlock{(imageData:NSData?,错误:NSError?->中的无效
如果(错误==nil){
让audioURLString=audioFile.url!
让audioURL=NSURL(string:audioURLString)!

println(audioURL)//只要看一下代码,就可以从parse(audioURL)中获得一个有效的url,因此,不要使用AVAudioPlayer(我相信如果内存很好的话,这需要一个本地url),只需创建一个新的AVPlayer实例,传入audioURL或从audioURL创建一个AVPlayerItem并将其传递给新的AVPlayer。当然,如果您希望“Player”在方法结束后出现,您应该创建一个属性。好的,所以我添加了
var playerItem=AVPlayerItem(URL:audioURL)var Player=AVPlayer(playerItem:playerItem)player.play()“
但它的行为仍然相同,@mdb983我相信您的问题与您在后台线程上创建项目/播放器有关。在回调之外创建播放器,并将playerItem添加到主队列中。就是这样!我使用dispatch_asynch在主线程上播放它:)谢谢