今回は動画の再生について学習した。AV FoundationまたはMediaPlayerフレームワークを使う方法があり、書籍ではAV Foundationを使う方法が解説されている。
サンプルアプリは、画面上のUIViewをタップしてカメラロール(イメージピッカー)を起動させて動画を選択し、再生・停止・巻き戻しさせるというもの。viewDidLoadでタップジェスチャーを登録し、動画処理は、AVPlayerクラスのplay/pause/seekToTimeメソッドを呼んでる。iOSシミュレータにはデフォルトで動画が入っておらず、登録する必要がある。
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 動画を表示するビューがタップされたらchooseVideo:メソッドが呼ばれるようにする UITapGestureRecognizer *gesture; SEL sel; sel = @selector(chooseVideo:); gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:sel]; [self.previewView addGestureRecognizer:gesture]; } // 動画を表示するビューがタップされたときに呼ばれるメソッド - (void)chooseVideo:(UITapGestureRecognizer *)gesture { // ジェスチャーが完了状態になっているときのみ実行する if (gesture.state != UIGestureRecognizerStateEnded) { return; } // イメージピッカーを作成する UIImagePickerController *picker; picker = [[UIImagePickerController alloc] init]; // ライブラリから選択する picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; // 動画のみ表示する picker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; // デリゲートを設定する picker.delegate = self; // イメージピッカーを表示する [self presentViewController:picker animated:YES completion:nil]; } // イメージピッカーでファイルが選択されたときに呼ばれるメソッド - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // 選択された動画ファイルのURLを取得して、プロパティにセットする self.movieURL = [info objectForKey:UIImagePickerControllerMediaURL]; // 動画を再生するためにプレイヤーを作成する self.moviePlayer = [AVPlayer playerWithURL:self.movieURL]; // 現在表示している動画のレイヤーを削除する if (self.movieLayer) { [self.movieLayer removeFromSuperlayer]; } // 動画を表示するためのレイヤーを作成する self.movieLayer = [AVPlayerLayer playerLayerWithPlayer:self.moviePlayer]; // レイヤーの大きさを設定する self.movieLayer.frame = self.previewView.bounds; // 動画はアスペクト比を維持してリサイズして、全体を表示する self.movieLayer.videoGravity = AVLayerVideoGravityResizeAspect; // レイヤーを表示する [self.previewView.layer addSublayer:self.movieLayer]; // イメージピッカーを閉じる [picker dismissModalViewControllerAnimated:YES]; } // 巻き戻しボタンの処理 - (IBAction)rewind:(id)sender { // 再生位置を先頭に移動する [self.moviePlayer seekToTime:kCMTimeZero]; } // 再生ボタンの処理 - (IBAction)play:(id)sender { // 再生する [self.moviePlayer play]; } // 停止ボタンの処理 - (IBAction)stop:(id)sender { // 停止する [self.moviePlayer pause]; }
Chapter05-022までやった。ムービーをアプリで再生させる必要性を感じないのと、手元にムービー(アニメ)を作る環境がない(分からない)ので、ブラックジャック本体に組み込むところは飛ばした。
参考サイト
- iPhoneソーシャルゲーム開発 書籍詳細|株式会社 C&R研究所
- iPhone/iPadシュミレーターのカメラロールに動画を登録する方法 – 山本大@クロノスの日記
iOSシミュレータに動画を登録する方法を解説したエントリー
iPhoneソーシャルゲーム開発
posted with amazlet at 12.07.12
林 晃
シーアンドアール研究所
売り上げランキング: 245996
シーアンドアール研究所
売り上げランキング: 245996
関連エントリー