Objective-C直接上传到YouTube
我在使用我的应用程序上传视频时遇到问题。我在 YouTube 上的“我的视频”中看到该视频,但随后显示:“无法转换视频文件”。我通过本机 YouTube 上传器成功上传了该视频。请告诉我我的代码有什么问题,以及该错误的含义。
代码在这里:
-(NSString*) GetHeader{
NSString* xml = [[NSString alloc] init];
xml = [xml stringByAppendingString:[NSString stringWithFormat:@"%@
%@Content-Type: application/atom+xml; charset=UTF-8%@%@",kboundary,
klineTerm, klineTerm, klineTerm]];
xml = [xml stringByAppendingString:@"<?xml version=\"1.0\"?>"];
xml = [xml stringByAppendingString:@"<entry xmlns=\"http://www.w3.org/
2005/Atom\" xmlns:media=\"http://search.yahoo.com/mrss/\" xmlns:yt=
\"http://gdata.youtube.com/schemas/2007\"> <media:group><media:title
type=\"plain\">Movie.m4v</media:title><media:description type=\"plain
\">I gave a bad toast at my friends wedding.</
media:description><media:category scheme=\"http://gdata.youtube.com/
schemas/2007/categories.cat\">People</
media:category><media:keywords>toast, wedding</media:keywords></
media:group></entry>\r\n"];
xml=[xml stringByAppendingString:[NSString stringWithFormat:@"%@
%@Content-Type: video/m4v%@Content-Transfer-Encoding: binary%@
%@",kboundary,klineTerm,klineTerm,klineTerm,klineTerm]];
return xml;
}
-(IBAction)uploadVideoByAuthKey:(id)respons{
NSMutableData* requestBody;
const char *utfMyString = [[self GetHeader] UTF8String];
const char *utfMyString1=[[NSString stringWithFormat:@"%@
%@--",klineTerm,kboundary] UTF8String];
requestBody=[NSMutableData dataWithBytes:utfMyString
length:strlen(utfMyString)+1];
//Add video file in body
NSURL* URL = [[NSBundle mainBundle] URLForResource:@"Movie"
withExtension:@"m4v"];
NSData*file=[NSData dataWithContentsOfURL:URL];
[requestBody appendData:file];
[requestBody appendData:[NSData dataWithBytes:utfMyString1
length:strlen(utfMyString1)+1]];
//Create request
NSMutableURLRequest* request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL URLWithString:kVideoRequestURL]];
[request setHTTPMethod:@"POST"];
[request addValue:[NSString stringWithFormat:@"multipart/related;
boundary=%@;",kboundaryheader] forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%i",[requestBody
length]] forHTTPHeaderField:@"Content-Length"];
[request addValue:[NSString stringWithFormat:@"GoogleLogin auth=
%@",authKey] forHTTPHeaderField:@"Authorization"];
[request addValue:[NSString stringWithFormat:@"key=%@",kdevKey]
forHTTPHeaderField:@"X-GData-Key"];
[request addValue:[NSString stringWithFormat:@"%@",@"Movie.m4v"]
forHTTPHeaderField:@"Slug"];
[request addValue:@"add_video_to_youtube" forHTTPHeaderField:@"X-
GData-Client" ];
[request setHTTPBody: requestBody];
}
I am having a problem uploading video with my app. I see the video in My Videos on YouTube, but then it says: "unable to convert video file". I uploaded this video through the native YouTube uploader successfully. Please tell me that wrong with my code, and what the error means.
Code here:
-(NSString*) GetHeader{
NSString* xml = [[NSString alloc] init];
xml = [xml stringByAppendingString:[NSString stringWithFormat:@"%@
%@Content-Type: application/atom+xml; charset=UTF-8%@%@",kboundary,
klineTerm, klineTerm, klineTerm]];
xml = [xml stringByAppendingString:@"<?xml version=\"1.0\"?>"];
xml = [xml stringByAppendingString:@"<entry xmlns=\"http://www.w3.org/
2005/Atom\" xmlns:media=\"http://search.yahoo.com/mrss/\" xmlns:yt=
\"http://gdata.youtube.com/schemas/2007\"> <media:group><media:title
type=\"plain\">Movie.m4v</media:title><media:description type=\"plain
\">I gave a bad toast at my friends wedding.</
media:description><media:category scheme=\"http://gdata.youtube.com/
schemas/2007/categories.cat\">People</
media:category><media:keywords>toast, wedding</media:keywords></
media:group></entry>\r\n"];
xml=[xml stringByAppendingString:[NSString stringWithFormat:@"%@
%@Content-Type: video/m4v%@Content-Transfer-Encoding: binary%@
%@",kboundary,klineTerm,klineTerm,klineTerm,klineTerm]];
return xml;
}
-(IBAction)uploadVideoByAuthKey:(id)respons{
NSMutableData* requestBody;
const char *utfMyString = [[self GetHeader] UTF8String];
const char *utfMyString1=[[NSString stringWithFormat:@"%@
%@--",klineTerm,kboundary] UTF8String];
requestBody=[NSMutableData dataWithBytes:utfMyString
length:strlen(utfMyString)+1];
//Add video file in body
NSURL* URL = [[NSBundle mainBundle] URLForResource:@"Movie"
withExtension:@"m4v"];
NSData*file=[NSData dataWithContentsOfURL:URL];
[requestBody appendData:file];
[requestBody appendData:[NSData dataWithBytes:utfMyString1
length:strlen(utfMyString1)+1]];
//Create request
NSMutableURLRequest* request = [[NSMutableURLRequest alloc]
initWithURL:[NSURL URLWithString:kVideoRequestURL]];
[request setHTTPMethod:@"POST"];
[request addValue:[NSString stringWithFormat:@"multipart/related;
boundary=%@;",kboundaryheader] forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%i",[requestBody
length]] forHTTPHeaderField:@"Content-Length"];
[request addValue:[NSString stringWithFormat:@"GoogleLogin auth=
%@",authKey] forHTTPHeaderField:@"Authorization"];
[request addValue:[NSString stringWithFormat:@"key=%@",kdevKey]
forHTTPHeaderField:@"X-GData-Key"];
[request addValue:[NSString stringWithFormat:@"%@",@"Movie.m4v"]
forHTTPHeaderField:@"Slug"];
[request addValue:@"add_video_to_youtube" forHTTPHeaderField:@"X-
GData-Client" ];
[request setHTTPBody: requestBody];
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试将
Content-Type: video/m4v
更改为Content-Type: video/x-m4v
Try to change
Content-Type: video/m4v
toContent-Type: video/x-m4v