IOS提供了叫做MPMoviePlayerController  MPMoviePlayerViewController两个类。能够轻松用来实现视频播放。

MPMoviePlayerViewController仅仅能全屏播放视频。

#import "MainViewController.h"
#import <MediaPlayer/MediaPlayer.h> @interface MainViewController ()
//视频播放器
@property (strong, nonatomic) MPMoviePlayerController *player;
@property (strong, nonatomic) UIImageView *imageView;
@end @implementation MainViewController - (void)viewDidLoad
{
[super viewDidLoad];
//实例化视频播放器
NSURL *url = [[NSBundle mainBundle]URLForResource:@"promo_full" withExtension:@"mp4"]; //视频播放是流媒体的播放模式。所谓流媒体就是把视频数据像流水一样。变载入,变播放。
// //提示:假设url中包括中文。须要加入百分号。 // NSString *urlString = @"http:www.xxx.com/video/xxx.mp4";
// NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; self.player = [[MPMoviePlayerController alloc]initWithContentURL:url];
//1设置播放器的大小
[self.player.view setFrame:CGRectMake(0, 0, 320, 180)]; //16:9是主流媒体的样式
//2将播放器视图加入到根视图
[self.view addSubview:self.player.view]; //4播放
[self.player play];
//[self.player stop];
//通过通知中心。以观察者模式监听视频播放状态
//1 监听播放状态
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(stateChange) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
//2 监听播放完毕
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(finishedPlay) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
//3视频截图
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(caputerImage:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];
//3视频截图
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(caputerImage:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil]; //4退出全屏通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(exitFullScreen) name:MPMoviePlayerDidExitFullscreenNotification object:nil]; //异步视频截图,能够在attimes指定一个或者多个时间。
[self.player requestThumbnailImagesAtTimes:@[@10.0f, @20.0f] timeOption:MPMovieTimeOptionNearestKeyFrame]; UIImageView *thumbnailImageView = [[UIImageView alloc]initWithFrame:CGRectMake(80, 200, 160, 90)];
self.imageView = thumbnailImageView;
[self.view addSubview:thumbnailImageView];
} #pragma mark 退出全屏
- (void)exitFullScreen
{
NSLog(@"退出全屏");
} #pragma mark -播放器事件监听
#pragma mark 视频截图 这种方法是异步方法
- (void)caputerImage:(NSNotification *)notification
{
NSLog(@"截图 %@", notification);
UIImage *image = notification.userInfo[@"MPMoviePlayerThumbnailImageKey"];
[self.imageView setImage:image];
} #pragma mark 播放器事件监听
#pragma mark 播放完毕
- (void)finishedPlay
{
NSLog(@"播放完毕");
} #pragma mark 播放器视频的监听
#pragma mark 播放状态变化
/*
MPMoviePlaybackStateStopped, //停止
MPMoviePlaybackStatePlaying, //播放
MPMoviePlaybackStatePaused, //暂停
MPMoviePlaybackStateInterrupted, //中断
MPMoviePlaybackStateSeekingForward, //快进
MPMoviePlaybackStateSeekingBackward //快退
*/
- (void)stateChange
{
switch (self.player.playbackState) {
case MPMoviePlaybackStatePaused:
NSLog(@"暂停");
break;
case MPMoviePlaybackStatePlaying:
//设置全屏播放
[self.player setFullscreen:YES animated:YES];
NSLog(@"播放");
break;
case MPMoviePlaybackStateStopped:
//注意:正常播放完毕。是不会触发MPMoviePlaybackStateStopped事件的。
//调用[self.player stop];方法能够触发此事件。
NSLog(@"停止");
break;
default:
break;
}
} @end

ios网络学习------9 播放网络视频的更多相关文章

  1. FC网络学习笔记02 -网络配置方法

    随着新一代飞机的综合化航电系统对通信需求的不断提高,传统的ARINC429.1553B总线的传输速率分别只有100Kbps和1Mbps,其带宽已远远不 论文联盟 http://Www.LWlm.cOm ...

  2. OpenCV学习:播放avi视频文件

    #if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...

  3. Snail—iOS网络学习之得到网络上的数据

    在开发项目project中,尤其是手机APP,一般都是先把界面给搭建出来.然后再从网上down数据 来填充 那么网上的数据是怎么得来的呢,网络上的数据无非就经常使用的两种JSON和XML 如今 大部分 ...

  4. [svc]容器网络学习索引及网络监控

    整理的可能有些误失,抽时间在细细的分类完善下. 发现这篇对于网络从低到高层协议整理的还不错 每层都有一些有意思的话题 一些协议有一些设计上的弱点, 所以产生了种种的网络层安全问题 一般我们学一些 1, ...

  5. ios网络学习------6 json格式数据的请求处理

    ios网络学习------6 json格式数据的请求处理 分类: IOS2014-06-30 20:33 471人阅读 评论(3) 收藏 举报 #import "MainViewContro ...

  6. Android VideoView无法播放网络视频

    今天学习Android播放视频和音频,其中在练习播放视频的时候无法播放网络视频,网络视频是别人发布在网上的,但是把视频放在本地是可以的,最后推测是没有开放网络的访问权限的问题,果然开放了之后就能正常访 ...

  7. iOS音频篇:使用AVPlayer播放网络音乐

    http://www.cocoachina.com/ios/20160324/15767.html 引言 假如你现在打算做一个类似百度音乐.豆瓣电台的在线音乐类APP,你会怎样做? 首先了解一下音频播 ...

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

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

  9. ios网络学习------4 UIWebView的加载本地数据的三种方式

    ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...

随机推荐

  1. MyBatis入参类型是List时判断非空

    一.参数list时,先判断是否为空,否则会报错. 二.mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from tab ...

  2. 双面女间谍第一至五季/全集Alias迅雷下载

    本季第一至五季 Alias Season (2001-2005)看点:<双面女间谍>她在CIA拥有双重身份,是个美貌矫健的年轻女间谍,一个性感的女007.但在第一季中,讲述更多的却是她在间 ...

  3. android BitmapDrawable的使用

    <span style="font-size:18px;"> //功能:显示缩略图,大小为40*40 //通过openRawResource获取一个inputStrea ...

  4. 《MySQL Workbench数据建模与开发》

    <MySQL Workbench数据建模与开发> 基本信息 原书名:MySQL Workbench:Data Modeling & Development 原出版社: McGraw ...

  5. SVG.js 图案使用和use引用

    一.SVG.Pattern 图案设置 var draw = SVG('svg1').size(300, 300); //SVG.Pattern 图案设置 var pattern = draw.patt ...

  6. npm出错的解决方案

    npm show grpc # 返回版本号 # 安装旧版本: npm install grpc@1.2.0

  7. [转]有关Apache alias的一点问题

    转自:http://www.thinkphp.cn/topic/11973.html Apache 的Alias 指令映射URL到文件系统的特定区域 一个简单的例子: Alias /mytest /w ...

  8. [转]关于Infobright的数据导入

    FROM : http://www.mysqlsky.com/201109/infobright-data-load-error 题记 对于DW系统而言,庞大数据的迁移成本很高:所以导入和导出的速率及 ...

  9. @Dubbo概述

    Dubbo是什么 Dubbo是一个开源分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 有三个核心部分包括: 远程通讯:提供对多种基于长连接的NIO框架抽象封 ...

  10. Cantor展开式

    X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! 其中,a为整数,并且0<=ai<i(1<=i<=n).这就是康托展开 ...