/**

*  创建媒体播放控制器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. linq to xml There are multiple root elements.

    添加xml结点的时候 var temp2 = temp1.Element("staticContent"); if (temp2 != null) { string str = & ...

  2. 禅道——Linux服务器部署禅道

    前言 2019年6月14日 22:01:24 看看时间我知道,我离猝死依然不远~ 禅道是什么 | 禅道是专业的研发项目管理软件 禅道的官网 | https://www.zentao.net/ 禅道开源 ...

  3. easyui 日期范围前后台的设置以及实现

    1.页面部分(引入相应的js) <td class="w40 tl pl10">从日期:</td> <td> <input class=& ...

  4. 开发工具、Object类(java基础知识十一)

    1.常见开发工具介绍 * A:操作系统自带的记事本软件 * B:高级记事本软件 * C:集成开发环境 IDE     * (Integrated Development Environment) *  ...

  5. ODC(Orthogonal Defect Classification)简介——正交缺陷分类法

    Defect分析是软件开发和测试中一个重要的环节,ODC介绍了一种不同于大家常用的非常有效的defect分类及分析方法.这篇文章简单的向大家介绍了什么是ODC,以及如何在项目和产品开发中使用ODC来改 ...

  6. JAVA编程思想中总结的与C++的区别

    Java和C++都是面向对象语言.也就是说,它们都能够实现面向对象思想(封装,继乘,多态).而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象 ...

  7. Autolayout UIScrollView

    http://www.cocoachina.com/ios/20141011/9871.html Xcode6中如何对scrollview进行自动布局(autolayout)   Xcode6中极大的 ...

  8. HTTP 请求的组成 方法 已经 请求的状态码

    HTTP请求是指从客户端到服务器端的请求消息. 包括:消息首行中,对资源的请求方法.资源的标识符及使用的协议.从客户端到服务器端的请求消息包括,消息首行中,对资源的请求方法.资源的标识符及使用的协议. ...

  9. 洛谷 - P1217 - 回文质数 - 枚举

    https://www.luogu.org/problemnew/show/P1217 考虑暴力生成所有的回文数然后再判断是不是质数.注意个位的选择实际上只有4种.所以是 $4*10^3*10^3=4 ...

  10. python __builtins__ int类 (36)

    36.'int', 用于将一个字符串或数字转换为整型 class int(object) | int(x=0) -> integer | int(x, base=10) -> intege ...