ios - 如何从磁盘上的视频文件中获取 NSData

标签 ios nsdata

给定一个像这样的网址:

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/

相关文章:

ios - UIRectCornerTopRight 的圆角不起作用

iphone - iOS设备硬件修订号列表

java - 为什么 Java 的 BufferedReader 不像 Objective-C 的 NSData?

arrays - 无法从数组获取数据

swift - 转换 NSData 中的 CKRecord

ios - 将 nsdata 写入文件中的特定位置

ios - Swift iOS : Parsing of date from a string does not work for some devices. 太奇怪了

objective-c - 为什么这个屏幕尺寸范围是错误的?

ios - 在滚动 tableview 时,我的 waves 动画在 iOS 中停止

xcode - 在 Swift 中从 NSString 创建 NSData