我已经在这方面工作了几天,似乎无法在任何地方找到直接的答案或例子.我正试图从我的iPhone应用程序中将视频上传到Facebook.我可以连接到Facebook(并上传图片)没有问题使用:
_facebook = [[Facebook alloc] initWithAppId:kAppID];
_permissions = [[NSArray arrayWithObjects:@"publish_stream", @"offline_access",nil] retain];
[_facebook authorize:_permissions delegate:self];
Run Code Online (Sandbox Code Playgroud)
但是我似乎无法让我的视频上传工作.我目前的代码是:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"TestMovie" ofType:@"mp4"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
data, @"video",
nil, @"callback",
@"test", @"title",
@"upload testing", @"description",
@"EVERYONE", @"privacy",
nil];
[_facebook requestWithMethodName:@"video.upload"
andParams:params
andHttpMethod:@"POST"
andDelegate:self];
Run Code Online (Sandbox Code Playgroud)
由于必须将视频上传调用发送到不同的服务器,我将facebook.m文件中的restserver url更改为:
static NSString* kRestserverBaseURL = @"https://api-video.facebook.com/method/";
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,上传崩溃并出现错误:
facebookErrDomain err 353.
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
编辑:
在Zoul的帮助下,我现在实现了以下代码(我没有做任何改变他的上传类和它附带的SDK的版本).请求不再出错,但是没有上传任何内容.
我初始化facebook对象和上传对象:
_facebook = [[Facebook alloc] initWithAppId:kAppID];
_permissions = [NSArray arrayWithObjects:@"publish_stream", @"offline_access",nil];
[_facebook authorize:_permissions delegate:self];
_upload = …Run Code Online (Sandbox Code Playgroud) 我正在使用谷歌的GData API,以便从我的应用程序上传视频到youtube.上传工作正常,但上传的视频质量仅为360p,而原始视频的质量为720p.
这是否按预期工作?如果是这样,有什么方法可以让我的应用程序上传HQ电影吗?
这是我用来实现视频上传的代码,如果有任何帮助的话.
GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
[mediaGroup setMediaTitle:title];
[mediaGroup setMediaDescription:desc];
[mediaGroup addMediaCategory:category];
[mediaGroup setMediaKeywords:keywords];
[mediaGroup setIsPrivate:NO];
NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:outputURL.relativePath defaultMIMEType:@"video/quicktime"];
GDataEntryYouTubeUpload *entry;
entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup data:data MIMEType:mimeType slug:filename];
SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
[service setServiceUploadProgressSelector:progressSel];
GDataServiceTicket *ticket;
ticket = [service fetchEntryByInsertingEntry:entry forFeedURL:url delegate:self didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];
Run Code Online (Sandbox Code Playgroud)
布伦顿