MPMoviePlayerController-播放视频文件
2014-12-11 11:04
344 查看
如果你只是想显示一个全屏的视频播放器,你可以使用MPMoviePlayerViewController 类,(举例来说)你可以将你的影片播放视图控制器推入到一 个导航控制器的视图控制器栈上,或者简单的使用 UIViewController 的 presentMoviePlayerViewControllerAnimated:实例方法,在别的控制器上展示你的影片播放视 图控制器。
MPMoviePlayerController 实例有一个 view 的属性。这个视图是一个 UIView 类型,而且 他是诸如视频之类的媒体播放的那个视图。作为程序员,你有责任将这个视图插入到你的应 用中的视图结构中,为你的用户展示播放的内容。因为你得到了一个
UIView 对象的引用, 你可以按照自己的想法修改这个视图。例如,你可以将视图的背景色修改为自定义颜色。
很多的多媒体操作依赖通知系统。例如,MPMoviePlayerController 并不和委托一起工作,作为替代,它依靠通知。这允许在系统库和 iOS 开发者写的程序代码间,实现非常灵活 的解耦。对于像 MPMoviePlayerController 的类,我们只要监听那个类所发出的通知就好了。我们使用默认的通知中心,并将我们自己加为某个通知的观察者。
开始尝试写一个播放视频的简单例子:
.h
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface ViewController :
UIViewController
@property (nonatomic,strong)MPMoviePlayerController *moviePlayer;
@property (nonatomic,strong)UIButton *playButton;
@end
.m
实现播放的方法
- (void)startPlayingVideo:(id)paramSender{
//创建视频的URl
NSString *filePath = [[NSBundlemainBundle]pathForResource:@"Sample"ofType:@"m4v"];
NSURL *url = [NSURLURLWithString:filePath];
//如果早先已经创建了一个视频播放器,要停止它
if (self.moviePlayer !=nil) {
[selfstopPlayingVideo:nil];
}
//创建一个新的视频播放器
_moviePlayer = [[MPMoviePlayerControlleralloc]initWithContentURL:url];
if (self.moviePlayer !=nil) {
/* Listen for the notification that the movie player sends us
whenever it finishes playing an audio file */
[[NSNotificationCenter
defaultCenter]addObserver:selfselector:@selector(videoHasFinishedPlaying:)name:MPMoviePlayerPlaybackDidFinishNotificationobject:_moviePlayer];
NSLog(@"Successfully instantiated the movie player.");
_moviePlayer.scalingMode =MPMovieScalingModeAspectFit;
[_moviePlayer
play];
[self.viewaddSubview:_moviePlayer.view];
[_moviePlayersetFullscreen:YESanimated:YES];
}else{
NSLog(@"Failed to instantiate the movie player.");
}
}
- (void) stopPlayingVideo:(id)paramSender{
if (_moviePlayer !=nil) {
[[NSNotificationCenterdefaultCenter]removeObserver:selfname:MPMoviePlayerPlaybackDidFinishNotificationobject:_moviePlayer];
[_moviePlayer
stop];
if ([_moviePlayer.view.superviewisEqual:self.view])
{
[_moviePlayer.viewremoveFromSuperview];
}
}
}
在视图控制器的 startPlayingVideo:实例方法中,我们注册了 MKMoviePlayerViewController 发送到默认通知中心的 MPMoviePlayerPlaybackDidFinishNotification 通知。我们在视图控制器的 videoHasFinishedPlaying:实例方法中监听这个通知。在这里,我们可以得知影片已经完成播放,然后可能处理影片播放对象:
- (void)videoHasFinishedPlaying:(NSNotification *)paramNotification{
/* Find out what the reason was for the player to stop */
NSNumber *reason = [paramNotification.userInfovalueForKey:MPMoviePlayerPlaybackDidFinishNotification];
if (reason !=
nil) {
NSInteger reasonAsInteger = [reason
integerValue];
switch (reasonAsInteger) {
caseMPMovieFinishReasonPlaybackEnded:
/*播放正常结束*/
break;
caseMPMovieFinishReasonPlaybackError:
/*发生了一个错误使播放结束*/
break;
caseMPMovieFinishReasonUserExited:
/*用户结束了播放*/
break;
default:
break;
}
NSLog(@"Finish Reason = %ld", (long)reasonAsInteger);
[selfstopPlayingVideo:nil];
}
}
http://www.it165.net/os/html/201301/4327.html
http://blog.csdn.net/zttjhm/article/details/38063605 ios下视频边下载连播放实现
_itemFailedToPlayToEnd: {
kind = 1;
new = 2;
old = 0;
} 视频播放出现此问题 ,解决:
http://blog.csdn.net/zttjhm/article/details/8581189
MPMoviePlayerController 实例有一个 view 的属性。这个视图是一个 UIView 类型,而且 他是诸如视频之类的媒体播放的那个视图。作为程序员,你有责任将这个视图插入到你的应 用中的视图结构中,为你的用户展示播放的内容。因为你得到了一个
UIView 对象的引用, 你可以按照自己的想法修改这个视图。例如,你可以将视图的背景色修改为自定义颜色。
很多的多媒体操作依赖通知系统。例如,MPMoviePlayerController 并不和委托一起工作,作为替代,它依靠通知。这允许在系统库和 iOS 开发者写的程序代码间,实现非常灵活 的解耦。对于像 MPMoviePlayerController 的类,我们只要监听那个类所发出的通知就好了。我们使用默认的通知中心,并将我们自己加为某个通知的观察者。
开始尝试写一个播放视频的简单例子:
.h
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
@interface ViewController :
UIViewController
@property (nonatomic,strong)MPMoviePlayerController *moviePlayer;
@property (nonatomic,strong)UIButton *playButton;
@end
.m
实现播放的方法
- (void)startPlayingVideo:(id)paramSender{
//创建视频的URl
NSString *filePath = [[NSBundlemainBundle]pathForResource:@"Sample"ofType:@"m4v"];
NSURL *url = [NSURLURLWithString:filePath];
//如果早先已经创建了一个视频播放器,要停止它
if (self.moviePlayer !=nil) {
[selfstopPlayingVideo:nil];
}
//创建一个新的视频播放器
_moviePlayer = [[MPMoviePlayerControlleralloc]initWithContentURL:url];
if (self.moviePlayer !=nil) {
/* Listen for the notification that the movie player sends us
whenever it finishes playing an audio file */
[[NSNotificationCenter
defaultCenter]addObserver:selfselector:@selector(videoHasFinishedPlaying:)name:MPMoviePlayerPlaybackDidFinishNotificationobject:_moviePlayer];
NSLog(@"Successfully instantiated the movie player.");
_moviePlayer.scalingMode =MPMovieScalingModeAspectFit;
[_moviePlayer
play];
[self.viewaddSubview:_moviePlayer.view];
[_moviePlayersetFullscreen:YESanimated:YES];
}else{
NSLog(@"Failed to instantiate the movie player.");
}
}
如果我们将影片播放器的视图添加到视图控制 器的视图上面,之后我们需要手动的移除它。即使我们释放了影片播放器,它的视图也不会 被视图控制器释放。下面的方法停止播放视频并将其相关的视图移除。
- (void) stopPlayingVideo:(id)paramSender{
if (_moviePlayer !=nil) {
[[NSNotificationCenterdefaultCenter]removeObserver:selfname:MPMoviePlayerPlaybackDidFinishNotificationobject:_moviePlayer];
[_moviePlayer
stop];
if ([_moviePlayer.view.superviewisEqual:self.view])
{
[_moviePlayer.viewremoveFromSuperview];
}
}
}
在视图控制器的 startPlayingVideo:实例方法中,我们注册了 MKMoviePlayerViewController 发送到默认通知中心的 MPMoviePlayerPlaybackDidFinishNotification 通知。我们在视图控制器的 videoHasFinishedPlaying:实例方法中监听这个通知。在这里,我们可以得知影片已经完成播放,然后可能处理影片播放对象:
- (void)videoHasFinishedPlaying:(NSNotification *)paramNotification{
/* Find out what the reason was for the player to stop */
NSNumber *reason = [paramNotification.userInfovalueForKey:MPMoviePlayerPlaybackDidFinishNotification];
if (reason !=
nil) {
NSInteger reasonAsInteger = [reason
integerValue];
switch (reasonAsInteger) {
caseMPMovieFinishReasonPlaybackEnded:
/*播放正常结束*/
break;
caseMPMovieFinishReasonPlaybackError:
/*发生了一个错误使播放结束*/
break;
caseMPMovieFinishReasonUserExited:
/*用户结束了播放*/
break;
default:
break;
}
NSLog(@"Finish Reason = %ld", (long)reasonAsInteger);
[selfstopPlayingVideo:nil];
}
}
解决pathForResource返回nil的问题
http://www.it165.net/os/html/201301/4327.htmlhttp://blog.csdn.net/zttjhm/article/details/38063605 ios下视频边下载连播放实现
_itemFailedToPlayToEnd: {
kind = 1;
new = 2;
old = 0;
} 视频播放出现此问题 ,解决:
http://blog.csdn.net/zttjhm/article/details/8581189
相关文章推荐
- 播放视频音频文件使用 MPMoviePlayerViewController
- ios播放视频文件一般使用 MPMoviePlayerViewController 和 MPMoviePlayerController
- 播放视频音频文件使用 MPMoviePlayerViewController
- MPMoviePlayerController支持播放哪些类型的文件
- 利用MPMoviePlayerViewController 播放视频 iOS
- MPMoviePlayerViewController或MPMoviePlayerController播放本地视频报错:_itemFailedToPlayToEnd: {kind = 1;new =
- MPMoviePlayerViewController视频播放
- 使用MPMoviePlayerController播放视频
- MPMoviePlayerViewController播放视频横屏播放
- SDK 4.0 MPMoviePlayerController 遇到无法播放视频问题
- 使用MPMoviePlayerViewController播放视频
- MPMoviePlayerViewController播放媒体文件时在ios5.0上的区别--修改
- MPMoviePlayerController循环播放与播放视频退出异常
- 详细介绍下ios用MPMoviePlayerController来播放视频
- 使用MPMoviePlayerViewController播放视频--
- IOS 播放视频 MPMoviePlayerController
- 用MPMoviePlayerController播放视频的方法
- 使用MPMoviePlayerViewController播放视频
- 用MPMoviePlayerController播放视频的方法
- iOS视频播放 [MPMoviePlayerController]