如何将视频数据转换为NSURL

时间:2016-02-02 04:47:54

标签: ios swift

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

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

2 个答案:

答案 0 :(得分:4)

首先将视频数据保存到文件,然后尝试将其作为文件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 3.0:

let filePath = self.documentsPathForFileName("video.mp4")
        let videoAsData = NSData()
        videoAsData.write(toFile: filePath, atomically: true)
        let videoFileURL = NSURL(fileURLWithPath: filePath)

func documentsPathForFileName(name: String) -> String {
        let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
        return documentsPath.appending(name)
    }

答案 1 :(得分:1)

您无法将所有字符串转换为网址。 URL是统一资源定位器。这意味着它是一个字符串,包含远程或本地目标中文件或资源的路径。如果您想保留视频数据并使用该视频实例化视频播放器,请先将视频数据保存到文件中,然后使用该文件的路径实例化视频播放器。

使用以下代码

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