文档章节

MPMoviePlayerController

D
 DavidHacker
发布于 2015/10/05 12:47
字数 877
阅读 191
收藏 0

MPMoviePlayerController用于管理视频的播放,视频可以来自于本地文件或者是网络数据流。视频可以全屏或者内置在moviePlayer拥有的view中播放。你可以在你的app中在一个view包含视频播放的view,或者使用MPMoviePlayerViewController来管理。

默认支持AirPlay

当我们将MPMoviePlayerController加入到视图中时,需要合理设置frame

MPMoviePlayerController *player =
        [[MPMoviePlayerController alloc] initWithContentURL: myURL];
[player prepareToPlay]
[player.view setFrame: myView.bounds];  // player's frame must match parent's
[myView addSubview: player.view];
// ...
[player play];

(1)添加自定义子视图

将moviePlayer认为是一个封闭的结构,你可以在movie的Layer content上添加自定义的子试图但是绝不要修改它已经存在的子试图。 (view)

除了在movie上添加子视图,可以在backgroundView上添加子控件。在内置和全屏模式下,自定义的控件都被支持。但是必须调整两种情况下的位置。可以使用通知来判断和调整。(backgroundView)

Use the MPMoviePlayerWillEnterFullscreenNotification and MPMoviePlayerWillExitFullscreenNotification notifications to detect changes to and from fullscreen mode

MPMoviePlayerController支持代码控制,也提供了供用户使用的按钮。你可以使用MPMoviePlayerController实现的协议

MPMediaPlayback 中的方法用代码来控制视频播放的大部分操作。该协议中的方法能让你开始,停止,根据当前播放的内容向前或者向后,甚至改变播放的速率。controlStyle属性能够展示一些系统提供的标准的控制按钮来控制视频的播放。同时你也可以设置shouldAutoplay属性来决定是否自动播放网络视频文件。

当你创建了一个MPMoviePlayerController的时候,你指定了要播放的视频文件。但是,你可以通过设置contentUrl属性来改变正在播放的视频。改变这个属性使你重新利用了同一个movie Player

NOTE

Although you can create multiple MPMoviePlayerController objects and present their views in your interface, only one movie player at a time can play its movie.

为长视频创建video书签和章节链接提供便利。MPMoviePlayerController提供了在特定时间生成缩略图的方法。可以使用

thumbnailImageAtTime:timeOption:方法来创建单张缩略图或者用requestThumbnailImagesAtTimes:timeOption:

来创建多张缩略图。


To play a network stream whose URL requires access credentials, first create an appropriate NSURLCredential object. Do this by calling, for example, the initWithUser:password:persistence: method, as shown here:


  • NSURLCredential *credential = [[NSURLCredential alloc]

  •                         initWithUser: @"userName"

  •                             password: @"password"

  •                         persistence: NSURLCredentialPersistenceForSession];

  •  

  • self.credential = credential;

  • [credential release];

In addition, create an appropriate NSURLProtectionSpace object, as shown here. Make appropriate modifications for the realm you are accessing:


  • NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc]

  •                             initWithHost: "@streams.mydomain.com"

  •                                     port: 80

  •                                 protocol: @"http"

  •                                   realm: @"mydomain.com"

  •                     authenticationMethod: NSURLAuthenticationMethodDefault];

  •  

  • self.protectionSpace = protectionSpace;

  • [protectionSpace release];

Add the URL credential and the protection space to the Singleton NSURLCredentialStorage object. Do this by calling, for example, the setCredential:forProtectionSpace: method, as shown here:


  • [[NSURLCredentialStorage sharedCredentialStorage]

  •                     setDefaultCredential: credential

  •                       forProtectionSpace: protectionSpace];

With the credential and protection space information in place, you can then play the protected stream.



一 Movie Player Notifications

MPMoviePlayerController是通过通知而非我们常见的代理来通知视频播放的状态的。以下情况会发送通知

  1. 视频开始播放,暂停,快进,快退(四个)

  2. AirPlay播放开始,结束(两个)

  3. 视屏的scaling mode改变了

  4. 视频进入全屏或者退出全屏

  5. 网络视频的load state改变了

  6. 网络视频的meta-information可以获得了


二 支持的格式

.mov, .mp4, .mpv, and .3g

  • H.264 Baseline Profile Level 3.0 video, up to 640 x 480 at 30 fps. (The Baseline profile does not support B frames.) 

  • MPEG-4 Part 2 video (Simple Profile)

If you use this class to play audio files, it displays a white screen with a QuickTime logo while the audio plays. For audio files, this class supports AAC-LC audio at up to 48 kHz, and MP3 (MPEG-1 Audio Layer 3) up to 48 kHz, stereo audio.



© 著作权归作者所有

D
粉丝 0
博文 27
码字总数 5175
作品 0
苏州
私信 提问
MPMoviePlayerController导致statusBar消失,导致内存泄露leak

1、MPMoviePlayerController使statusBar消失 同事写项目时,运行程序总导致statusBar状态条消失,然后就是界面会上移20个像素,导致最下面空白界面,找原因一直不知道什么导致的。然后请教老...

长平狐
2013/12/25
103
0
iOS开发之视频播放

1、如何播放视频 iOS提供了MPMoviePlayerController、MPMoviePlayerViewController两个类,可以用来轻松播放视频和网络流媒体网络音频。 提示:网络音频同样使用此控制器播放。YouTobe就是用...

feng_blog
2015/08/31
295
1
MPMoviePlayerController的用法

MPMoviePlayerController的一些用法 delay框架手机 1.计算使用MPMoviePlayerController播放的视频的长度有两种方法: 第一种方法 NSDictionary opts = [NSDictionary dictionaryWithObject:[...

hanbing94
2015/08/31
413
0
iOS 视频播放

#import "ViewController.h" #import <MediaPlayer/MediaPlayer.h> @interface ViewController () @property (nonatomic, strong) MPMoviePlayerController *moviePlayer; @end @implementat......

我爱觉觉
2016/03/22
33
0
使用MPMoviePlayerController播放视频

MPMoviePlayerController播放视频 基本的视频播放,应该都是用MPMoviePlayerController吧,SDK文档里给出的例子也是这样的。 一般的步骤: 1. 准备好视频路径,创建MPMoviePlayerController...

万能的匹诺曹
2016/06/29
45
0

没有更多内容

加载失败,请刷新页面

加载更多

zk服务预启动和启动选举过程

QuorumPeerMain类public static void main(String[] args) { QuorumPeerMain main = new QuorumPeerMain(); try { main.initializeAndRun(args); } catch (Illega......

writeademo
24分钟前
4
0
深究递归和迭代的区别、联系、优缺点及实例对比

http://blog.csdn.net/laoyang360/article/details/7855860 http://www.zhihu.com/question/20278387 深究递归和迭代的区别、联系、优缺点及实例对比 1.概念区分 递归的基本概念:程序调用自身...

slagga
27分钟前
3
0
基于SOM-TL6678核心板而研发的TL6678-EasyEVM开发板硬件说明书

TL6678-EasyEVM是广州创龙基于SOM-TL6678核心板而研发的一款多核高性能DSP开发板。开发板采用核心板+底板方式,底板采用沉金无铅工艺的四层板设计,尺寸为200mm*106.65mm,它为用户提供了SOM...

Tronlong创龙
30分钟前
3
0
分别在有网和无网状态下批量安装python库

## 连网状态下,批量安装python库查看当前python环境下已安装的库包版本查看命令:pip freeze"""alabaster==0.7.10anaconda-client==1.6.3anaconda-navigator==1.6.2anaconda-projec......

KYO4321
33分钟前
3
0
fiddler、Charles-断点

一、添加Charles断点 1、用Charles抓包发起一次接口请求 2、对要打断点的接口右键,选择【Breakpoints】 二、Charles断点设置 1、点击Charles菜单-【Proxy】-【Breakpoint...】,此时会弹出【...

果树啊
33分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部