给定一个像这样的网址:
file:///private/var/mobile/Applications/C133BAE7-0CBC-4E4F-826B-509B5E1EB68E/tmp/uzhMyDkL0mSI-SCVideo-Merged.mov
如何获取此 NSData 表示形式以发送到服务器?我已经尝试过所有这些:
NSData *videoData = [NSData dataWithContentsOfURL:url];
NSData *videoData = [NSData dataWithContentsOfFile:[url absoluteString]];
NSData *videoData = [[NSFileManager defaultManager] contentsAtPath:[url path]];
videoData
每次都为零。
编辑: 对于更多上下文,我尝试使用 SCRecorder捕捉视频。
- (void)recorder:(SCRecorder *__nonnull)recorder didCompleteSegment:(SCRecordSessionSegment *__nullable)segment inSession:(SCRecordSession *__nonnull)session error:(NSError *__nullable)error {
[session mergeSegmentsUsingPreset:AVAssetExportPresetHighestQuality completionHandler:^(NSURL *url, NSError *error) {
if (error == nil) {
//NSData *videoData = [NSData dataWithContentsOfURL:url];
//NSData *videoData = [NSData dataWithContentsOfFile:[url absoluteString]];
NSData *videoData = [[NSFileManager defaultManager] contentsAtPath:[url path]];
} else {
NSLog(@"Bad things happened: %@", error);
}
}];
}
最佳答案
文件 URL 在我看来是正确的,但可以肯定的是,您应该在尝试获取 NSData 之前添加此方法:
NSError *error = nil;
if ([url checkResourceIsReachableAndReturnError: &error] == FALSE)
{
NSLog(@"URL %@ is not available because %@", [url absoluteString], [error localizedDescription]);
}
您也可以尝试通过以下方式获取文件:
NSError *error = nil;
NSData *videoData = [NSData dataWithContentsOfURL:url
options: NSDataReadingUncached
error:&error];
if (videoData == nil)
{
NSLog(@"URL %@ is not available because %@", [url absoluteString], [error localizedDescription]);
} else {
// you've likely got data, since videoData is not nil!
}
关于ios - 如何从磁盘上的视频文件中获取 NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36800651/