NSData 2视频网址?

时间:2015-10-28 12:47:41

标签: nsdata nsurl

需要将视频文件转换为NSData,然后再转换为可播放的URL。 NSData部分如下:

let videoNSD = NSData(contentsOfURL: videoPreview!)
// videoNSD is uploaded to cloud and then retrieved.. 

func playNSDataVideoPreview(videoNSD: NSData)
{
    // how to play in AVPlayer?
    let playerController = AVPlayerViewController()

    let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
    let documentsDirectory = paths[0]

    let filePath = documentsDirectory + "/" + "nsdfile-1234.mp4"
    let nsdURL = NSURL(fileURLWithPath: filePath)

    videoNSD.writeToURL(nsdURL, atomically: true)

    mediaPlayer = AVPlayer(URL: nsdURL)
    playerController.player = mediaPlayer

    mediaPlayer.play()
}

在AVPlayer中玩的最佳做法是什么?

...谢谢

1 个答案:

答案 0 :(得分:0)

首先,我建议上传/下载为文件(来自文件句柄)而非数据(NSData),因为视频可能比RAM大(想象一部电影)。

要使用Alamofire下载文件,您可以使用https://github.com/Alamofire/Alamofire#downloading

中的示例代码
$("#wrapper").toggleClass("toggled");

下载并拥有文件后,您可以直接使用Alamofire.download(.GET, "http://httpbin.org/stream/100") { temporaryURL, response in let fileManager = NSFileManager.defaultManager() let directoryURL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] let pathComponent = response.suggestedFilename return directoryURL.URLByAppendingPathComponent(pathComponent!) }

如果您只有视频的NSData并且想要播放它,请先将其保存为文件,然后使用您保存的网址(文件位置)创建AVPlayer(URL URL: NSURL)

AVPlayer

然后再次使用YOURVIDEODATA.writeToURL(URL_WHERE_TO_SAVE,atomically: true)