关于MPMoviePlayerController以及MPMoviePlayerViewControlle流媒体视频播放

项目中用到了视频播放,我网上查了一下,发现了用类MPMoviePlayerController以及MPMoviePlayerViewControlle来实现.其实后面的MPMoviePlayerViewControlle还是通过MPMoviePlayerController来实现的.因为MPMoviePlayerViewController.moviePlayer  =   MPMoviePlayerController
.所以,下面我主要说MPMoviePlayerController.

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

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

第一 你得导入相应的头文件

#import<MediaPlayer/MediaPlayer.h>

第二 ,你得给出视频所在的路径或者URL

//方法一

NSString * path = [[NSBundle mainBundle]resourcePath];

//stringByAppendingPathComponent会自动加上/

NSString * videoPath = [path stringByAppendingPathComponent:@"1.mp4"];

//方法二

NSString * newPath = [[NSBundlemainBundle]pathForResource:@"1"ofType:@"mp4"];

第三 初始化对象

//这里的URL可以是网址,也可以是本地的视频在沙盒的路径

NSURL * url = [NSURLfileURLWithPath:newPath];

MPMoviePlayerController * moviePC = [[MPMoviePlayerControlleralloc]initWithContentURL:url];

第四 属性设置

//必须设置 播放本地视频或者网上视频

moviePC.movieSourceType =MPMovieSourceTypeFile;(这是个枚举,你自己选择,我这里选择播放本地视频)

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 ];

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

第五 , 通知

  • When the movie player begins playing, is paused, or begins seeking forward or backward
  • When AirPlay playback starts or ends
  • When the scaling mode of the movie changes
  • When the movie enters or exits fullscreen mode
  • When the load state for network-based movies changes
  • When meta-information about the movie itself becomes available

苹果API上这几种通知.

你的程序可以配置电影播放器在何时候发送通知,包括结束加载内容、技术播放、改变宽高比等。电影播放器会将事件发送到
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按钮后发出。

最后,我附上我的部分源码:

//初始化

<span style="font-family:Comic Sans MS;font-size:18px;"> //方法一
//    NSString * path = [[NSBundle mainBundle]resourcePath];
    //stringByAppendingPathComponent 会自动加上/
  //  NSString * videoPath = [path stringByAppendingPathComponent:@"1.mp4"];
 //     NSString * videoPath = [path stringByAppendingPathComponent:@"Launch.m4v"];

//    NSLog(@"videoPath = %@",videoPath);

    //方法二

    NSString * newPath = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"mp4"];

    NSURL * url = [NSURL fileURLWithPath:newPath];

    MPMoviePlayerController * moviePC = [[MPMoviePlayerController alloc]initWithContentURL:url];
    [moviePC prepareToPlay];

    //必须设置  播放本地视频或者网上视频
    moviePC.movieSourceType = MPMovieSourceTypeFile;

    moviePC.view.frame = self.view.bounds;
    [self.view addSubview:moviePC.view];

    [moviePC play];
    </span>

通知

<span style="font-family:Comic Sans MS;font-size:18px;"> [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playingDone) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
-(void)playingDone

{

    NSLog(@"播放完成");
    [_moviePlayerView.view removeFromSuperview];
    //    [moviePlayerView release];
    [self.navigationController popViewControllerAnimated:YES];

    _moviePlayerView = nil;
}</span>

播放本地视频:

OC代码

01 NSString *path=[[NSBundle mainBundle] pathForResource:@"stream0" ofType:@"mp4"];
02     NSURL *url=[[NSURL alloc] initFileURLWithPath:path];
03     self.rootPlayer=[[MPMoviePlayerController alloc] initWithContentURL:url];
04     self.rootPlayer.view.frame=CGRectMake(0, 0, 200, 200);
05     self.rootPlayer.movieSourceType=MPMovieSourceTypeFile;//本地文件播放要设置视频资源为文件类型资源,若设置为stream 则会错误
06     [self.rootPlayer prepareToPlay];
07     if(self.rootPlayer)
08     {
09         [self.rootPlayer play];
10     }
11     [self.view addSubview:self.rootPlayer.view];

播放网络视频:

OC代码

1 self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://125.76.230.133/cast/mp4/50-screen.mp4"]];
2     self.moviePlayer.movieSourceType=MPMovieSourceTypeStreaming;//网络文件要设置为stream
3     [self.moviePlayer play];
4     self.moviePlayer.view.frame= CGRectMake(0, 0, 300, 300);
5     [self.view addSubview:self.moviePlayer.view];

PS:播放器的对象必须是self的一个属性 ,否则播放5秒左右就会中断。

时间: 2024-11-05 17:18:32

关于MPMoviePlayerController以及MPMoviePlayerViewControlle流媒体视频播放的相关文章

【转】Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)

来自:http://blog.csdn.net/sunroyi666/article/details/52981639 一. 先介绍一下流媒体技术:所谓流媒体技术,是指将连续的影像和声音信息经过压缩处理后放在网站服务器上,让用户能够一边下载一边观看.收听(即所谓的"在线欣赏"),而不需要等整个压缩文件下载到自己的机器上才可以欣赏的网络传输技术. 一般来说,一个完整的流媒体服务系统需要三个部分组成:编码器.流服务器和播放器.. 编码器通过对内容来源(如MP3文件或者麦克风输入)进行编码,

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

iOS开发系列--音频播放.录音.视频播放.拍照.视频录制 转载:http://www.cnblogs.com/kenshincui/p/4186022.html#avFoundationCamera --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音

音频播放、录音、视频播放、拍照、视频录制-b

随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音效 音乐 音频会话 录音 音频队列服务 视频 MPMoviePlayerController MPMoviePlayerViewController AVPlayer 摄像头 UIImagePickerController拍照

iOS开发–音频播放、录音、视频播放、拍照、视频录制

概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音频的播放通常需要进行精确的控制

音频播放、录音、视频播放、拍照、视频录制

--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音效 音乐 音频会话 录音 音频队列服务 视频 MPMoviePlayerController MPMoviePlayerViewController AVPlayer 摄像头 UIImagePicker

iOS音频播放、录音、视频播放、拍照、视频录制

随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操作都提供了多套API.在今天的文章中将会对这些内容进行一一介绍: 音频 音效 音乐 音频会话 录音 音频队列服务 视频 MPMoviePlayerController MPMoviePlayerViewController AVPlayer 摄像头 UIImagePickerController拍照

2015元旦第一篇博文:Red5流媒体服务器搭建

今天是2015年的第一天,白天陪老婆孩子去BHG(华联)转了转,中午在九毛九吃了顿午饭,就这样过了元旦,虽然有点累,但是挺开心,北京今天的天气也比较给力,风和日丽,没有雾霾!现在是晚上十点,因为白天出去玩,老婆孩子有点累,现在已经熟睡,我不想就这样就结束2015的第一天,作为一个新的开始,我决定写2015年的第一篇博文.闲话少说,进入主题.流媒体这个概念在第一家公司就了解了,当时做一个Eleaning在线教育平台的时候,用Red5流媒体服务器技术,支持过视频模块的播放.下面就谈谈我对流媒体的认识

ios媒体视频播放器应用项目

源码WSY_XMHelper,基于ReactiveCocoa和MVVM架构的流媒体视频播放器应用,此项目为一个完整项目.基于MVVM架构, 集成流媒体视频下载及播放,支持下拉刷新,上拉加载等.如果你想学习MVVM,此项目为一个很好的例子. 项目源码下载:http://code.662p.com/view/9891.html<ignore_js_op> <ignore_js_op> 详细说明:http://ios.662p.com/thread-2344-1-1.html

iOS媒体视频播放器应用源码

源码WSY_XMHelper,基于ReactiveCocoa和MVVM架构的流媒体视频播放器应用,此项目为一个完整项目.基于MVVM架构, 集成流媒体视频下载及播放,支持下拉刷新,上拉加载等.如果你想学习MVVM,此项目为一个很好的例子. 源码下载: http://code.662p.com/view/9891.html 2015-1-7 15:12 上传 详细说明:http://ios.662p.com/thread-2344-1-1.html