我想这不是特定于视频上传的,因为我只是在图表上发帖,但是当我使用以下代码时,上传有时会停止。较小的视频 (<20MB) 确实可以通过,但较大的视频 (50 到 200 MB) 肯定会失败。
NSData *videoData = [NSData dataWithContentsOfFile:video.localURL options:NSDataReadingMappedAlways error:&error];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
videoData, video.localURL,
@"video/quicktime", @"contentType",
video.name, @"title",
NSLocalizedString(@"Test http://www.apple.com", @"Facebook upload description"), @"description",
nil];
FBRequest *request = [FBRequest requestWithGraphPath:@"me/videos" parameters:params HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
NSLog(@"result: %@, error: %@", result, error);
[[NSNotificationCenter defaultCenter] postNotificationName:FacbookUploadFinishedNotification object:nil];
}];
我已修补 FBURLConnection 以获取有关上传进度的通知:
- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
NSDictionary *userInfo = [NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects:
[NSNumber numberWithInt:totalBytesWritten],
[NSNumber numberWithInt:totalBytesExpectedToWrite],
nil]
forKeys:
[NSArray arrayWithObjects:
@"bytes",
@"totalBytes",
nil]
];
[[NSNotificationCenter defaultCenter] postNotificationName:FacebookUploadProgressNotification
object:self
userInfo:userInfo];
}
在我看来,Facebook 服务器似乎只是停止响应...... didSendBodyData 停止被调用,并且请求在一段时间后超时。
使用 FB 应用上传相同的视频是可行的……</p>
编辑:啊,忘了补充我在这个应用程序中使用的 Facebook 应用程序 ID 尚未提交。请求是否可能会发送到一些(不太可靠的)测试服务器?上传的视频会出现在我的时间线中……</p>