/**

*  创建媒体播放控制器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. hdu-3592 World Exhibition(差分约束)

    题目链接: World Exhibition Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 32768/32768 K (Java/ ...

  2. codeforces 665E E. Beautiful Subarrays(trie树)

    题目链接: E. Beautiful Subarrays time limit per test 3 seconds memory limit per test 512 megabytes input ...

  3. C++ main函数中参数argc和argv含义及用法

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

  4. bzoj2431逆序对数列——递推

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2431 考虑新加入一个数i,根据放的位置不同,可以产生0~i-1个新逆序对: 所以f[i][j ...

  5. 数据库几种Top子句的使用方法

    转自:https://blog.csdn.net/melody_susan/article/details/47011331

  6. CentOS下安装SecureCRT的sz/rz工具包

    对于使用SecureCRT的玩家,rzsz是一个灰常灰常实用的功能.但是定制安装的linux可能没有把rzsz包安装到系统,这对用securecrt这样的windows工具传输文件特别不方便.为了使用 ...

  7. In-App Purchase Programming Guide----(三) ----Retrieving Product Information

    Retrieving Product Information In the first part of the purchase process, your app retrieves informa ...

  8. 任务46:Identity MVC:登录逻辑实现

    任务46:Identity MVC:登录逻辑实现 实现登陆的方法 退出方法 _layout里面增加如下的代码: Login.cshtml 运行代码测试: 这个地方的单词之前拼错了.这里进行修正 输入账 ...

  9. Codeforces702C【二分】

    题意: 给你几个城市,蜂窝塔量: 给出城市和塔的坐标可以重叠,非递减的方式给出: 输出最小的r,以至于所有的城市能被覆盖到: 思路: 目的就是要使每个城市覆盖到,那我对每个城市找离最近塔的距离,然后在 ...

  10. POJ2369【循环节】

    题意: 给一个序列,他需要几步就能变成原来的序列. 思路: 那么就是找一下各个循环节(用dfs随便搞了-),求一下最小公倍数就好了. 贴一发挫code- //#include <bits/std ...