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

MPMoviePlayerViewController仅仅能全屏播放视频。

  1. #import "MainViewController.h"
  2. #import <MediaPlayer/MediaPlayer.h>
  3.  
  4. @interface MainViewController ()
  5. //视频播放器
  6. @property (strong, nonatomic) MPMoviePlayerController *player;
  7. @property (strong, nonatomic) UIImageView *imageView;
  8. @end
  9.  
  10. @implementation MainViewController
  11.  
  12. - (void)viewDidLoad
  13. {
  14. [super viewDidLoad];
  15. //实例化视频播放器
  16. NSURL *url = [[NSBundle mainBundle]URLForResource:@"promo_full" withExtension:@"mp4"];
  17.  
  18. //视频播放是流媒体的播放模式。所谓流媒体就是把视频数据像流水一样。变载入,变播放。
  19. // //提示:假设url中包括中文。须要加入百分号。
  20.  
  21. // NSString *urlString = @"http:www.xxx.com/video/xxx.mp4";
  22. // NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
  23.  
  24. self.player = [[MPMoviePlayerController alloc]initWithContentURL:url];
  25. //1设置播放器的大小
  26. [self.player.view setFrame:CGRectMake(0, 0, 320, 180)]; //16:9是主流媒体的样式
  27. //2将播放器视图加入到根视图
  28. [self.view addSubview:self.player.view];
  29.  
  30. //4播放
  31. [self.player play];
  32. //[self.player stop];
  33. //通过通知中心。以观察者模式监听视频播放状态
  34. //1 监听播放状态
  35. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(stateChange) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];
  36. //2 监听播放完毕
  37. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(finishedPlay) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
  38. //3视频截图
  39. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(caputerImage:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];
  40. //3视频截图
  41. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(caputerImage:) name:MPMoviePlayerThumbnailImageRequestDidFinishNotification object:nil];
  42.  
  43. //4退出全屏通知
  44. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(exitFullScreen) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
  45.  
  46. //异步视频截图,能够在attimes指定一个或者多个时间。
  47. [self.player requestThumbnailImagesAtTimes:@[@10.0f, @20.0f] timeOption:MPMovieTimeOptionNearestKeyFrame];
  48.  
  49. UIImageView *thumbnailImageView = [[UIImageView alloc]initWithFrame:CGRectMake(80, 200, 160, 90)];
  50. self.imageView = thumbnailImageView;
  51. [self.view addSubview:thumbnailImageView];
  52. }
  53.  
  54. #pragma mark 退出全屏
  55. - (void)exitFullScreen
  56. {
  57. NSLog(@"退出全屏");
  58. }
  59.  
  60. #pragma mark -播放器事件监听
  61. #pragma mark 视频截图 这种方法是异步方法
  62. - (void)caputerImage:(NSNotification *)notification
  63. {
  64. NSLog(@"截图 %@", notification);
  65. UIImage *image = notification.userInfo[@"MPMoviePlayerThumbnailImageKey"];
  66. [self.imageView setImage:image];
  67. }
  68.  
  69. #pragma mark 播放器事件监听
  70. #pragma mark 播放完毕
  71. - (void)finishedPlay
  72. {
  73. NSLog(@"播放完毕");
  74. }
  75.  
  76. #pragma mark 播放器视频的监听
  77. #pragma mark 播放状态变化
  78. /*
  79. MPMoviePlaybackStateStopped, //停止
  80. MPMoviePlaybackStatePlaying, //播放
  81. MPMoviePlaybackStatePaused, //暂停
  82. MPMoviePlaybackStateInterrupted, //中断
  83. MPMoviePlaybackStateSeekingForward, //快进
  84. MPMoviePlaybackStateSeekingBackward //快退
  85. */
  86. - (void)stateChange
  87. {
  88. switch (self.player.playbackState) {
  89. case MPMoviePlaybackStatePaused:
  90. NSLog(@"暂停");
  91. break;
  92. case MPMoviePlaybackStatePlaying:
  93. //设置全屏播放
  94. [self.player setFullscreen:YES animated:YES];
  95. NSLog(@"播放");
  96. break;
  97. case MPMoviePlaybackStateStopped:
  98. //注意:正常播放完毕。是不会触发MPMoviePlaybackStateStopped事件的。
  99. //调用[self.player stop];方法能够触发此事件。
  100. NSLog(@"停止");
  101. break;
  102. default:
  103. break;
  104. }
  105. }
  106.  
  107. @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. jQuery Ajax 上传文件夹及文件

    我们先来看一下文件夹结构 这是上传处理的: 看一下系统日志: 升级 HTML5文件实现拖拽上传提示效果改进(支持三种状态提示) 拖拽过程详解: 1:文件未拖出文件选择框的时候提示:将要上传的文件或文件 ...

  2. 超人前传第一至十季/全集Smallville迅雷下载

    超人前传 第一至十季 Smallville Season 1-10 (2001-2010)本季看点:CW台的长寿剧<超人前传>在以帅哥靓女征服观众了这么多年后,也终于进入尾声,该剧将于今年 ...

  3. Visual Studio 2013 智能提示功能消失解决办法

    Visual Studio 2013中,智能提示功能突然用不了,查了一下,使用命令行重置VS的方法解决了这个问题.步骤如下: 开始菜单 -->所有程序-->Visual Studio 20 ...

  4. Node.js SDK与fabric链码交互开发

    1.本篇背景 前面已经对链码开发作了比较详细的介绍,并且对官方提供的 fabcar 链码进行了解读,本篇将介绍如何使用 Node.js SDK 与区块链网络中的链码进行交互. 本篇内容基本来自官方 H ...

  5. Guava ClassToInstanceMap

    概述 ClassToInstanceMap提供了一种是用Class作为Key, 对应实例作为Value的途径.他定义了T getInstance(Class<T>)和T putInstan ...

  6. hyper-V下虚拟机连接外网,怎么才能将Hyper-V 的虚拟机接入互联网?

    现在情况是这样的: windows hyper-V主机IP: 192.168.20.3 hyper-v虚拟网卡IP:192.168.20.13 虚拟机1IP:192.168.20.21 同一局域网主机 ...

  7. Downloading files from a server to client, using ASP.Net, when file size is too big for MemoryStream using Generic Handlers (ashx)

    Currently, I was trying to write an ASP.Net application that involved a user clicking a ASP.Net butt ...

  8. linux 如何正确的关闭mongodb

    有的朋友说可以通过下面的命令关闭mongodb: killall mongodb #or kill -9 mongo-pid 上面的方法确实可以关闭mongodb,但是正确的做法不是这样子的,mong ...

  9. 解决使用Properties读取中文乱码问题

    web服务返回的是多行以key和value对应的键值对,且编码为utf-8.我的项目使用的编码也是utf-8,但是我用Properties读取中文的时候,打印出来的总是乱码. 后来网上查了一下,得到如 ...

  10. Windows远程桌面连接的利器-mRemote

    mRemoteNG是Windows平台下一款开源的支持多标签.多协议的远程连接管理器.平时我们可能安装N多款管理工具,如putty.SecureCRT.xshell.SSHshell.mstsc.ex ...