/**

*  创建媒体播放控制器MPMoviePlayerControlle 可以控制尺寸

*

*  @return 媒体播放控制器

*/

-(MPMoviePlayerController *)moviePlayer{

if (!_moviePlayer) {

NSURL *url=[self getFileUrl];

_moviePlayer=[[MPMoviePlayerController alloc]initWithContentURL:url];

_moviePlayer.view.frame=self.view.bounds;

_moviePlayer.view.autoresizingMask=UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

[self.view addSubview:_moviePlayer.view];

}

return _moviePlayer;

}

- (void)viewDidLoad {

[super viewDidLoad];

//播放

[self.moviePlayer play];

}

#pragma mark - 私有方法

//获取本地路径

-(NSURL *)getFileUrl{

NSString *urlStr=[[NSBundle mainBundle] pathForResource:@"xxx.mp4" ofType:nil];

NSURL *url=[NSURL fileURLWithPath:urlStr];

return url;

}

/**

*  取得网络文件路径

*

*  @return 文件路径

*/

-(NSURL *)getNetworkUrl{

NSString *urlStr=@"http://192.168.1.161/xxxx.mp4";

urlStr=[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *url=[NSURL URLWithString:urlStr];

return url;

}

/**

*  添加通知监控媒体播放控制器状态

*/

-(void)addNotification{

NSNotificationCenter *notificationCenter=[NSNotificationCenter defaultCenter];

[notificationCenter addObserver:self selector:@selector(mediaPlayerPlaybackStateChange:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:self.moviePlayer];

[notificationCenter addObserver:self selector:@selector(mediaPlayerPlaybackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayer];

}

/**

*  播放状态改变,注意播放完成时的状态是暂停

*

*  @param notification 通知对象

*/

-(void)mediaPlayerPlaybackStateChange:(NSNotification *)notification{

switch (self.moviePlayer.playbackState) {

case MPMoviePlaybackStatePlaying:

NSLog(@"正在播放...");

break;

case MPMoviePlaybackStatePaused:

NSLog(@"暂停播放.");

break;

case MPMoviePlaybackStateStopped:

NSLog(@"停止播放.");

break;

default:

NSLog(@"播放状态:%li",self.moviePlayer.playbackState);

break;

}

}

/**

*  播放完成

*

*  @param notification 通知对象

*/

-(void)mediaPlayerPlaybackFinished:(NSNotification *)notification{

NSLog(@"播放完成.%li",self.moviePlayer.playbackState);

}

//使用 MPMoviePlayerViewController,只能全屏

/**

*  视频播放控制器全屏

*/

@property (nonatomic,strong) MPMoviePlayerViewController *moviePlayerViewController;

-(MPMoviePlayerViewController *)moviePlayerViewController{

if (!_moviePlayerViewController) {

NSURL *url=self.videoUrl;

_moviePlayerViewController=[[MPMoviePlayerViewController alloc]initWithContentURL:url];

[self addNotification1];

}

return _moviePlayerViewController;

}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

//播放

[self presentMoviePlayerViewControllerAnimated:self.moviePlayerViewController];

}

-(void)addNotification1{

NSNotificationCenter *notificationCenter=[NSNotificationCenter defaultCenter];

[notificationCenter addObserver:self selector:@selector(mediaPlayerPlaybackStateChange1:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:self.moviePlayerViewController.moviePlayer];

[notificationCenter addObserver:self selector:@selector(mediaPlayerPlaybackFinished1:) name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerViewController.moviePlayer];

}

/**

*  播放状态改变,注意播放完成时的状态是暂停

*

*  @param notification 通知对象

*/

-(void)mediaPlayerPlaybackStateChange1:(NSNotification *)notification{

switch (self.moviePlayerViewController.moviePlayer.playbackState) {

case MPMoviePlaybackStatePlaying:

NSLog(@"正在播放...");

break;

case MPMoviePlaybackStatePaused:

NSLog(@"暂停播放.");

break;

case MPMoviePlaybackStateStopped:

NSLog(@"停止播放.");

self.moviePlayerViewController =nil;

break;

default:

NSLog(@"播放状态:%li",self.moviePlayerViewController.moviePlayer.playbackState);

break;

}

}

/**

*  播放完成

*

*  @param notification 通知对象

*/

-(void)mediaPlayerPlaybackFinished1:(NSNotification *)notification{

NSLog(@"播放完成.%li",self.moviePlayerViewController.moviePlayer.playbackState);

self.moviePlayerViewController =nil;

}

iOS 播放本地,网络视频的更多相关文章

  1. iOS 播放远程网络音乐的核心技术点

    一.前言 这两天做了个小项目涉及到了远程音乐播放,因为第一次做这种音乐项目,边查资料边做,其中涉及到主要技术点有: 如何播放远程网络音乐 如何切换当前正在播放中的音乐资源 如何监听音乐播放的各种状态( ...

  2. android 随手记 videoview循环播放网络视频 和mediaplayer+sufaceview播放网络视频

    1:videoview循环播放视频 1>xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res ...

  3. Android 视频播放器 VideoView 的使用,播放本地视频 和 网络 视频

    1.布局文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...

  4. Android使用VideoView播放本地视频及网络视频Demo

    1.xm文件 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...

  5. 照相、从相册上取照片、播放音频、播放本地视频、播放网络视频、MPMoviePlayerController

    一.照相.从相册上去照片 1. 先判断是否支持照相功能 *判断当前设备是否支持照相功能,支持返回YES 否则返回NO 注意:模拟器不支持照相功能 把握一个原则只要是物理硬件相关的功能模拟器都不支持 例 ...

  6. Atitit.android播放smb 网络邻居视频文件解决方案

    Atitit.android播放smb 网络邻居视频文件解决方案 Android4.4 1.1. Android4视频播放器不能直接地支持smb协议..子好先转换成个http流 1.2. ES文件浏览 ...

  7. Android Multimedia框架总结(二)MediaPlayer框架及播放网络视频案例

    前言:前面一篇我们介绍MediaPlayer相关方法,有人说,没有实际例子,看得不是很明白,今天在分析MediaPlayer时,顺带一个播放网络视频例子.可以自行试试.今天分析的都是下几篇介绍各个模块 ...

  8. iOS开发系列--音频播放(音效和音乐)播放本地的

    音频 在iOS中音频播放从形式上可以分为音效播放和音乐播放.前者主要指的是一些短音频播放,通常作为 点缀音频,对于这类音频不需要进行进度.循环等控制.后者指的是一些较长的音频,通常是主音频,对于这些音 ...

  9. Android播放器推荐:可以播放本地音乐、视频、在线播放音乐、视频、网络收音机等

    下载链接:http://www.eoeandroid.com/forum.php?mod=attachment&aid=MTAxNTczfGMyNjNkMzFlfDEzNzY1MzkwNTR8 ...

随机推荐

  1. 项目中Redis分库

    Redis中有16个库 默认第0个库 配置库的设置: 不同的库  key可以重复哈 公司的多个不同分布式项目,但是只有一个redis时候,以项目方式区分不同的库 每个项目连接相同 但是库不同

  2. Axios 请求配置参数详解

    axios API 可以通过向 axios 传递相关配置来创建请求 axios(config)   // 发送 POST 请求   axios({   method: 'post',   url: ' ...

  3. lucene倒排索引瘦身的一些实验——merge的本质是减少cfx文件 变为pos和doc;存储term vector多了tvx和tvd文件有337M

    store NO 压缩后的原始数据 原始数据大小 索引大小 索引时间 单词搜索时间 266 791 594 176 0.2 文件组成见后 运行forceMerge(3)后 merge的本质是减少cfx ...

  4. [原创]java实现word转pdf

    最近遇到一个项目需要把word 转成pdf,百度了一下网上的方案有很多,比如虚拟打印.给word 装扩展插件等,这些方案都依赖于ms word 程序,在java代码中也得使用诸如jacob或jcom这 ...

  5. hadoop异常:Be Replicated to 0 nodes, instead of 1

    Hadoop 坑爹的Be Replicated to 0 nodes, instead of 1 异常 博客分类: Java 编程 HadoopITeyeJSP算法Apache  有段时间不写博客了, ...

  6. ubuntu下tesseract 4.0安装及参数使用

    tesseract是一个开源的OCR引擎,最初是由惠普公司开发用来作为其平板扫描仪的OCR引擎,2005年惠普将其开源出来,之后google接手负责维护.目前稳定的版本是3.0.4.0版本加入了基 ...

  7. bzoj 2836 魔法树 —— 树链剖分

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2836 树链剖分裸题: 写码五分钟,调码两小时,RE不断,狂交二十五遍,终于找到一处小细节—— ...

  8. 一梦浮生2012 IOS高级进阶目录

    一梦浮生2012 精通iphone的UI开发,能熟练操作复杂表视图,熟练使用图层技术, 可以自定义UI控件,使用类别扩展系统控件功能; 擅长通讯技术,熟悉各种通信协议,精通xml, json, 二进制 ...

  9. JavaScript-Tool:Uploadify-un

    ylbtech-JavaScript-Tool:Uploadify 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. http://www.uploadify ...

  10. 【213】IDL函数汇总

    名称 功能说明 类型  语法&举例 IDL_VALIDNAME 判断变量名是否有效,无效返回值为空或者自动修改 函数   DEFSYSV 自定义系统变量,全局变量 过程   MAKE_ARRA ...