MPMoviePlayerController 与AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController 可以直接通过远程URL初始化,而AVAudioPlayer则不可以。不过大体上用起来感觉差不多。废话少说进入体验。 

格式支持:MOV、MP4、M4V、与3GP等格式,还支持多种音频格式。

首先你得引入 MediaPlayer.framework.然后在使用到MPMoviePlayerController 的文件中导入相应的头文件。 


一、创建

MPMoviePlayerController 类通过一个NSURL来初始化,这个URL可以使本地的,也可以是远程的。初始化需要通过 initWithContentURL 方法来实现:

  1. MPMoviePlayerController *moviePlayer = [ [ MPMoviePlayerController alloc]initWithContentURL:[NSURL urlWithString:@"http://"] ];//远程

或者

  1. NSString* path =[ NSString stringWithFormat:@"%@/Documents/video.3gp",NSHomeDirectory()];//本地路径
  2. MPMoviePlayerController *moviePlayer = [ [ MPMoviePlayerController alloc]initWithContentURL:[NSURL fileURLWithPath:path]];//本地的

二、属性设置 


1.控制器样式

  1. moviePlayer.moviewControlMode = MPMovieControlModeDefault;

可以使用下列样式: 


MPMovieControlModeDefault            显示播放/暂停、音量和时间控制 


MPMovieControlModeVolumeOnly         只显示音量控制 


MPMovieControlModeHidden             没有控制器 


2.屏幕宽高比例

  1. moviePlayer.scallingMode = MPMovieScallingModeAspectFit;

你可以使用下列宽高比值: 


MPMovieScallingModeNone            不做任何缩放 


MPMovieScallingModeAspectFit       适应屏幕大小,保持宽高比 


MPMovieScallingModeAspectFill      适应屏幕大小,保持宽高比,可裁剪 


MPMovieScallingModeFill            充满屏幕,不保持宽高比 


3.背景色

背景色会在电影播放器转入转出时使用,当电影不能充满整个屏幕时,也会用来填充空白区域。默认的背景色是黑色,不过你可以使用 UIColor 对象设置backgroundColor属性,来改变背景色:

  1. moviePlayer.backgroundColor = [UIColor redColor];

三、播放和停止电影 


要播放电影请调用play 方法,电影播放控制器会自动将视图切换到电影播放器并开始播放:

  1. [ moviePlayer play ];

当用户点击Done按钮,或者 stop 方法被调用都会停止

  1. [ moviePlayer stop ];

当电影停止播放后会自动切回播放前应用程序所在的视图。 


四、通知

你的程序可以配置电影播放器在何时候发送通知,包括结束加载内容、技术播放、改变宽高比等。电影播放器会将事件发送到 Cocoa 的通知中心,你可以对其进行配置,指定将这些事件转发到你的应用程序的一个对象。要接收这些通知,需要使用 NSNotificationCenter 类,为电影播放器添加一个观察者(observer):

  1. NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter];
  2. [ notificationCenter addObserver:self selector:@selector(moviePlayerPreloadFinish:) name:MPMoviePlayerContentPreloadDidFinishNotification object:moviePlayer ];

通知会发到你指定的委托类和目标方法。通知参数让你可以知道是哪个事件触发了委托方法:

  1. -(void)moviePlayerPreloadDidFinish:(NSNotification*)notification{
  2. //添加你的处理代码
  3. }

你会观察到以下通知: 


MPMoviePlayerContentPreloadDidFinishNotification  


当电影播放器结束对内容的预加载后发出。因为内容可以在仅加载了一部分的情况下播放,所以这个通知可能在已经播放后才发出。 


MPMoviePlayerScallingModeDidChangedNotification  


当用户改变了电影的缩放模式后发出。用户可以点触缩放图标,在全屏播放和窗口播放之间切换。 


MPMoviePlayerPlaybackDidFinishNotification  


当电影播放完毕或者用户按下了Done按钮后发出。

MPMoviePlayerController 视频播放器—IOS开发的更多相关文章

  1. ios开发 MPMoviePlayerController 视频播放器

    项目中用到视频播放功能, 写点视频基础部分 MPMoviePlayerController是通过MediaPlayer.frame引入的,可用于播放在iOS支持的所有格式的视频,用起来很简单!!! M ...

  2. ios开发之 MPMoviePlayerController 视频播放器

    MPMoviePlayerController 与AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController 可以直接通过远程UR ...

  3. 从0到1搭建一款Vue可配置视频播放器组件(Npm已发布)

    前言 话不多说,这篇文章主要讲述如何从0到1搭建一款适用于Vue.js的自定义配置视频播放器.我们平时在PC端网站上观看视频时,会看到有很多丰富样式的视频播放器,而我们自己写的video标签样式却是那 ...

  4. ios开发视频播放后台下载功能实现 :1,ios播放视频 ,包含基于AVPlayer播放器,2,实现下载,iOS后台下载(多任务同时下载,单任务下载,下载进度,下载百分比,文件大小,下载状态)(真机调试功能正常)

    ABBPlayerKit ios开发视频播放后台下载功能实现 : 代码下载地址:https://github.com/niexiaobo/ABBPlayerKit github资料学习和下载地址:ht ...

  5. ios系统视频播放器MPMoviePlayerController应用遇到的坑

    最近在做视频播放时应用系统MPMoviePlayerController播放器播放视频,发现点击快进快退会出现黑屏现象,并且点击完成按钮也不会返回,代码以及界面如下所示: NSURL *url=[se ...

  6. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  7. iOS开发----音频播放、录音、视频播放、拍照、视频录制

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  8. iOS开发——视频播放 待更新……

    本文主要实现调用系统自带的播放器,自带的播放器已经做好了屏幕的适配,集成播放,暂停,快进等功能.能够满足基本的视频播放功能及iOS的视频播放的开发. 最后将其简单的封装成一个iOS视频播放工具类. 一 ...

  9. iOS开发系列- 视频MPMoviePlayerController

    MPMoviePlayerController 在iOS中播放视频可以使用MediaPlayer.framework种的MPMoviePlayerController类来完成,它支持本地视频和网络视频 ...

随机推荐

  1. 简单使用Junit

    不需要配置,导入相应jar,然后在测试的方法上面加入注解@Test 执行的时候选择junit即可.

  2. 查看事务锁:innodb_trx+innodb_locks+innodb_lock_waits

    当出现:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction,要解决是一件麻烦的事情:特别是当一个SQL ...

  3. 剑指offer—第三章高质量代码(o(1)时间删除链表节点)

    题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点,链表节点与函数的定义如下:struct ListNode{int m_nValue;ListNode* m_pValue ...

  4. 深入了解 Oracle Flex ASM 及其优点

    简介 Oracle Real Application Cluster (RAC) 是 Oracle 解决方案中的一个著名产品,用于保持业务数据的高可用性.Oracle RAC 允许在所有集群节点之间共 ...

  5. Android 图文教学让你彻底理解activity启动模式

    我们首先从最简单的开始, standard 这个模式就是默认的模式,我们都知道 当你用这个模式时,每次发送一个intent,都会生成一个新的实例! 我写一个简单的例子: <?xml versio ...

  6. Ruby on rail 开发准备

    下载安装Instant Rails ,该软件包中包含了Ruby,Rails,Apache(HTTP服务器软件),MySql,并且配置均可自动完成.完成安装后就可以拥有一个完整的Rails开发环境.下载 ...

  7. Java条件语句之 switch

    当需要对选项进行等值判断时,使用 switch 语句更加简洁明了.例如:根据考试的名次,给予前 4 名不同的奖品.第一名,奖励笔记本一台:第二名,奖励 IPAD 2 一个:第三名,奖励移动电源一个:最 ...

  8. uglifyjs使用

    1.安装Nodejs:去这里下载并安装. 2.打开cmd,运行npm,node应该会有输出东西 3.如果在window上运行Node.js的npm报Error: ENOENT, stat 'C:\Us ...

  9. SQL注入常用语句

    整形参数判断     1.直接加'  2.and 1=1  3. and 1=2     如果1.3运行异常 2正常就存在注入 字符型判断     1.直接加'  2.and '1'='1'  3. ...

  10. css overflow:hidden无效解决办法

    解决方案:只需要在设定overflow:hidden层加入定位即可 position:relative;left:0px;top:0px