- 2010年8月31日 21:49
- iPhone
iPhoneアプリからYouTubeへの動画アップを実装しました。
その際、かなりつまずいたので解決策をメモしておきます。
つまづいたポイント
- YouTubeアカウント ID&PWが通らない
- アップロード中、エラーで中断する
まず、gdata-objectivec-client ライブラリは下記からDLしてください。
http://code.google.com/p/gdata-objectivec-client/
ビルドするのにかなりつまづきました。
ビルドは下記を参考にしました。
Google Data API クライアントライブラリのビルド
その他、基本的なことはgdata-objectivec-client に入っている。
Examples/YouTubeSampleを参照してください。
1.YouTubeアカウント ID&PWが通らない
ある特定のYouTubeアカウントだとなぜか通らないことがあります。
問題は、サンプルの
YouTubeSampleWindowController.m
- (void)uploadVideoFile;
NSString *username = [mUsernameField stringValue]; NSString *clientID = [mClientIDField stringValue]; NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:username clientID:clientID];
サンプルの通りだとエラーになるアカウントがあります。
これを、
NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:@"default" clientID:@""];
usernameを使わずに@"default"にすると問題は解決されました。
以下参考:
http://code.google.com/p/gdata-objectivec-client/issues/detail?id=22
2.アップロード中、エラーで中断する
次に、何のタイミングでエラーが起きているのかは不明なのですが、
アップロード中に突然中断してしまい、localizedDescriptionには Cannot allocate memory というエラーメッセージがサーバから戻ってくることがありました。
また、NSErrorFailingURLStringKeyにはresume用のアドレスが戻ってきます。
今回検証していて上記のエラー頻発したのは、3GS iOS4でした。(でも3G 3.1.3ではほとんど起きなかった!?)
メッセージの通りメモリか、と。しかし対処法が無いと途方に暮れていたのですが、何とか解決できました。
やはりポイントは
YouTubeSampleWindowController.m
- (void)uploadVideoFile; 内の
サンプルではアップロードする動画ファイルを下記で行っています。
NSData *data = [NSData dataWithContentsOfFile:path];
どうも、これだとメモリを食うらしく、上記を
NSData *data = [NSData dataWithContentsOfMappedFile:path];
にしてやれば、上記のエラーは出なくなりました。
アップロードもどんなに時間がかかっても最後まで無事にできるようになりました。
かなり、ネット上でも情報が乏しかったので、大変でしたが何とか解決出来て良かったです。
また誰かのお役に立てればと思います。
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://www.hirano-dept.com/mt/mt-tb.cgi/105
- Listed below are links to weblogs that reference
- iPhone gdata-objectivec-client でYouTubeへ動画をアップ from 袖触れ合うも多少の縁