【问题标题】:Objective-C direct upload on YouTubeObjective-C 直接上传到 YouTube
【发布时间】:2010-12-07 05:27:58
【问题描述】:

我在使用我的应用上传视频时遇到问题。我在 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];
}

【问题讨论】:

  • 你为什么不用official SDK?您是否尝试拦截 HTTP 请求以确保它没有格式错误?
  • 我没有使用官方SDK,因为我只需要上传视频文件。当然如果我找不到这个问题的解决方案我会使用官方的SDK

标签: iphone objective-c file-upload youtube-api video-encoding


【解决方案1】:

尝试将Content-Type: video/m4v改为Content-Type: video/x-m4v

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2016-01-21
    • 2012-04-01
    • 1970-01-01
    • 2015-06-24
    • 2015-04-07
    • 2013-06-30
    相关资源
    最近更新 更多