我NSFileHandle
用来获取正在录制的视频数据。
它在通知方面工作得很好,我正在使用NSFileHandleDataAvailableNotification
. 问题是视频文件最终不起作用。
每次将原始文件与使用 NSFileHandle 数据创建的文件进行比较时,总是只有几个字节是错误的,这意味着 NSFileHandle 读取它们不正确。
这就是我附加数据的方式
-(void) gotData: (NSNotification *) not{
NSFileHandle *handle = not.object;
NSData *data = [handle availableData];
if(data.length){
NSLog(@"got %d", data.length);
[test appendData: data];
[handle waitForDataInBackgroundAndNotify];
}else{
NSLog(@"Ended");
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSFileHandleDataAvailableNotification object: handle];
}
}
这就是我最终写入数据的方式:
[test writeToFile:[NSTemporaryDirectory() stringByAppendingPathComponent:@"x.mp4"] atomically:YES];
当在原始文件和来自 NSFileHandle 的文件之间进行差异时,这里的字节错误(即使两者的大小完全相同):
我对这种奇怪的行为一无所知,如果您遇到类似的问题,我希望您能提供帮助。