2015-10-28 91 views
0

需要將視頻文件轉換爲NSData,然後返回到可播放的URL。 NSData部分如下:NSData 2視頻網址?

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中播放的最佳做法是什麼?

謝謝...

+0

如果視頻太大,該怎麼辦?比RAM更多? – ogres

+0

這是用於小片段vids。我將添加代碼來限制..謝謝你的擡頭.. – DolfinMia

+0

會更好地下載爲一個文件,然後打開播放器從文件 – ogres

回答

0

首先,我建議上傳/下載文件爲(從文件句柄),而不是數據(NSData的),因爲視頻可能比RAM大(想象一個電影) 。

要下載的文件與Alamofire,您可以使用示例代碼https://github.com/Alamofire/Alamofire#downloading

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!) 
} 

下載並且具有文件後,就可以直接使用AVPlayer(URL URL: NSURL)

如果您有視頻的只是NSData的,並希望播放它,先將它保存爲文件,然後用你保存的URL(文件位置)創建AVPlayer

YOURVIDEODATA.writeToURL(URL_WHERE_TO_SAVE,atomically: true) 

然後再次使用AVPlayer(URL: URL_WHERE_TO_SAVE)

+0

謝謝.. @ogres。這工作很好。更新了上面的代碼.. – DolfinMia