MPMoviePlayerController类可以播放多媒体文件,视频文件可以位于App文件系统中,或者远程URL处。下面是基于MPMoviePlayerController类实现的一个视频播放器App,项目名称 VideoPlayer。
开发环境:Xcode 4.5 + iOS 6 iPhone 模拟器
视频播放器VideoPlayer 运行界面:
首先在项目中需要引入Media Player 框架,并在相应的类中添加接口文件的引用:
#import <MediaPlayer/MediaPlayer.h>
本示例项目全部源代码如下,代码中详细的注释。
VideoPlayerViewController.h 头文件代码:
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface VideoPlayerViewController : UIViewController
@property (strong, nonatomic) MPMoviePlayerController *moviePlayer;
- (IBAction)playVideo:(id)sender;
@end
VideoPlayerViewController.m 实现文件代码:
#import "VideoPlayerViewController.h"
@interface VideoPlayerViewController ()
@end
@implementation VideoPlayerViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 获取视频文件路径
NSString *movieFile = [[NSBundle mainBundle] pathForResource:@"Mr-Taxi" ofType:@"mp4"];
// 设置视频播放器
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:movieFile]];
self.moviePlayer.allowsAirPlay = YES;
[self.moviePlayer.view setFrame:CGRectMake(0, 0, 320, 380)];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)playVideo:(id)sender {
// 将moviePlayer的视图添加到当前视图中
[self.view addSubview:self.moviePlayer.view];
// 播放完视频之后,MPMoviePlayerController 将发送
// MPMoviePlayerPlaybackDidFinishNotification 消息
// 登记该通知,接到该通知后,调用playVideoFinished:方法
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playVideoFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer];
[self.moviePlayer play];
}
- (void)playVideoFinished:(NSNotification *)theNotification{
// 取消监听
[[NSNotificationCenter defaultCenter]
removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer];
// 将视频视图从父视图中删除
[self.moviePlayer.view removeFromSuperview];
}
@end