利用MediaPlayer框架进行视频播放
2015-11-25 15:39
423 查看
一、概述:
在苹果中进行多媒体的播放有两种技术,一种是利用MediaPlayer框架进行播放;另外一种是利用AVFoundation进行播放。利用前者可以快速集成视频播放,而后者可以更深层次的处理视频播放。在这里我们先介绍一下MediaPlayer框架的使用。
二、对MediaPlayer的介绍
利用MediaPlayer进行视频播放又有两种方式,第一种是利用MPMoviePlayerController进行播放,第二种是利用MPMoviePlayerViewController进行播放。 MPMoviePlayerController:它继承自NSObject,所以它并不是一个视图控制器。它有view属
性,可以设置其大小等属性。
MPMoviePlayerViewController:它是一个控制器,弹出一个全屏的视频播放器界面,不支持改变其大小。
三、MPMoviePlayerController进行视频播放
下面的例子是一个全屏循环播放视频的例子:// // ViewController.m // 视频播放 // // Created by QiZhang on 11/25/15. // Copyright (c) 2015 QiZhang. All rights reserved. // #import "ViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface ViewController () @property (nonatomic,strong) MPMoviePlayerController* moviePlayer; @end @implementation ViewController - (MPMoviePlayerController *)moviePlayer { if (_moviePlayer == nil) { NSURL *url = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"tvuanywhere" ofType:@"mp4"]]; _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; [_moviePlayer.view setFrame:self.view.bounds]; _moviePlayer.initialPlaybackTime = 1; _moviePlayer.controlStyle = MPMovieControlStyleNone; // 把控制条去掉 } return _moviePlayer; } - (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:self.moviePlayer.view]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMovieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer]; [self.moviePlayer play]; } - (void)myMovieFinishedCallback:(NSNotification *)notification { MPMoviePlayerController *theMovie = [notification object]; [theMovie play]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
说明:
当视频播放完后,moviePlayer.view并不会自动移除,并且系统会产生一个播放完毕的通知,所以在代码中我建立了一个通知中心来处理视频播放完毕以后的操作(此处为继续播放)
MPMoviePlayerViewController进行视频播放
// // ViewController.m // 视频播放 // // Created by QiZhang on 11/25/15. // Copyright (c) 2015 QiZhang. All rights reserved. // #import "ViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface ViewController () @property (nonatomic,strong) MPMoviePlayerViewController* moviePlayerVC; @end @implementation ViewController - (MPMoviePlayerViewController *)moviePlayerVC { if (_moviePlayerVC == nil) { NSURL *url = [[NSURL alloc] initFileURLWithPath:[[NSBundle mainBundle] pathForResource:@"tvuanywhere" ofType:@"mp4"]]; _moviePlayerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; } return _moviePlayerVC; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [self presentViewController:self.moviePlayerVC animated:YES completion:nil]; } - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
注意:
使用MedaiPlayer框架进行播放时不能设置播放器的自定义样式。。该框架的播放器已经足够强大,几乎不用写几行代码就能完成一个播放器,但是正是由于它的高度封装是的要自定义这个播放器变得非常不发,甚至是不可能完成。。所以,如果要对视频的自由的控制则可以使用AVPlayer. AVPlayer存在于AVFoundation中,它更接近于底层,所以灵活性更强。相关文章推荐
- VS2010 MFC UDP数据接收
- MySQL主从复制
- 关于使用ssh框架时,最底层的代码
- docker常用命令手册
- NSTimeZone (API+时区概念,GMT)
- 图的邻接矩阵代码实现
- 数据分析---线性回归
- 安卓新闻客户端(三) 自定义ViewPagerIndicator tab指示符
- jQuery :插件开发(三)
- 基于httpclient网络框架库在android 6.0sdk问题的直接解决方案
- CentOS编译安装GCC
- FatMouse的交易问题
- springmvc 类对象新的理解
- Android单文件上传到服务器
- 基于全注解方式的SSH基础框架(自认为拿得出手,欢迎拍砖,欢迎继续完善)
- 怎样在swift中创建一个CocoaPods
- 何时使用Swift Structs和Classes
- jQuery :插件开发(二)
- 如何更改 Mac OS X 系统默认用户名
- JFinal教程1——小白的第一个JFinal程序