如何将video数据转换为NSURL

我有一个video,我从我的服务器获取并接收数据。 我试图将原始数据覆盖到一个URL中,以便我可以使用它来实例化一个AVPlayerItem并在手机上播放video。 但是,当我打印“videoDataString”时,这个代码返回nil。 如果我打印“videoData”,但有一个结果。 这是我的代码,我试图转换,是我的错误的编码部分?

let videoDataString = NSString(data: videoData, encoding: NSUTF8StringEncoding) let videoURL = NSURL(string: String(videoDataString)) 

首先保存您的video数据到一个文件,然后尝试访问它作为一个文件的URL。 这是一个例子。

  NSString *filePath = [self documentsPathForFileName:@"video.mp4"]; NSData *videoAsData; // your data here [videoAsData writeToFile:filePath atomically:YES]; // access video as URL NSURL *videoFileURL = [NSURL fileURLWithPath:filePath]; - (NSString *)documentsPathForFileName:(NSString *)name { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; return [documentsPath stringByAppendingPathComponent:name]; } 

对于Swift:

 let filePath = self.documentsPathForFileName("video.mp4") let videoAsData = NSData() [videoAsData.writeToFile(filePath, atomically:true)] let videoFileURL = NSURL(fileURLWithPath: filePath) func documentsPathForFileName(name: String) -> String { let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] return documentsPath.stringByAppendingString(name) } 

您不能将所有string转换为URL。 URL是统一资源定位器。 这意味着它是一个包含远程或本地目标文件或资源path的string。 如果您想要保留video数据并使用该video实例化video播放器,请先将video数据保存到一个文件,然后实例化具有该文件path的video播放器。

使用下面的代码

 let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first! let videoURL = documentsURL.URLByAppendingPathComponent("video.mp4")//what ever your filename and extention videoData.writeToURL(videoURL, atomically: true) //uese videoURL to instantiate video player