
今回は動画の再生について学習した。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
関連エントリー
