/**

*  创建媒体播放控制器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. SQL Server 数据库备份策略,第一周运行失败的原因

    一般生产库,采用 每10分钟备份Log,每天备份Diff,每周备份Full的策略. 同时存在异地备份.异地备份可使用SQL Server本身的cmdshell存储过程,调用系统命令. 在为新数据库,建 ...

  2. codeforces 437B. The Child and Set 解题报告

    题目链接:http://codeforces.com/contest/437/problem/B 题目意思:给出两个整数 sum 和 limit,问能否从1 - limit 这些数中选出一些数(注意: ...

  3. hdu2063 二分图(基础题)

    这个题目适合刚刚接触二分图的同学做哦: 给一个题目链接 点击打开链接. 题目大意,有K个男女匹配方式, 输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数.0 ...

  4. maven实战(6)-- pom.xml的编写

    pom.xml中可以编写的东西确实挺多的,经常看到别人写的pom文件中出现了一些没见过plugin或properties等等,不知有何作用,其实很简单,只要参看maven的官方文档即可:http:// ...

  5. CoderForces343D:Water Tree(dfs序+线段树&&特殊处理)

    Mad scientist Mike has constructed a rooted tree, which consists of n vertices. Each vertex is a res ...

  6. Struts2的各种标签库

    1 在JSP中使用taglib编译指令导入标签库 <%@ taglib prefix="s" uri="/struts-tags" %> ----- ...

  7. 【旧文章搬运】CsrssWalker学习笔记

    原文发表于百度空间及看雪论坛,2009-05-13 看雪论坛地址:https://bbs.pediy.com/thread-89708.htm============================= ...

  8. Linux常用的18个命令(复习)

    1. cd命令 它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径.如: cd /root/Docements # 切换到目录/root/Docements cd . ...

  9. Tomcat黑窗口改变Title

    start cmd /K " && call startup.bat && pause && exit " 设置Title之后,再手 ...

  10. 704. Binary Search

    Given a sorted (in ascending order) integer array nums of n elements and a target value, write a fun ...