我有一个视频,我从我的服务器获取并作为数据接收。我试图将原始数据覆盖到URL中,以便我可以使用它来实例化AVPlayerItem并在手机上播放视频。但是,当我打印" videoDataString"时,此代码返回nil。如果我打印" videoData"虽然有结果。这是我尝试转换的代码,我的错误是编码部分吗?
let videoDataString = NSString(data: videoData, encoding: NSUTF8StringEncoding)
let videoURL = NSURL(string: String(videoDataString))
答案 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