iOS 流媒体 基本使用 和方法注意
项目里面需要添加视频方法 我自定义 选用的是 avplayer 没选择 MediaPlayer 原因很简单 , avplayer 会更容易扩展 有篇博客 也很好地说明了 使用avplayer的优越性
在iOS開發上,如果遇到需要播放影片,如開機動畫…,我們很習慣地會使用MediaPlayer來播放影片,因為很方便使用,所以就一直使用下去。但是 隨著客戶的要求越來越嚴苛,尤其是過場動畫或互動效果上的表現。所以如果在一些動畫中還挾帶影片一起運算,那勢必機器會跑不動。所以在iOS 4之後,我們可以使用AVPlayer這個類別來進行更細微的操作。備註:MediaPlayer的影片是放在UIView 裡面,而AVPlayer是放在AVPlayerLayer裡面,AVPlayerLayer是CALayer 的子類別。
使用MediaPlayer前,要記得加入MediaPlayer.framework及#import <MediaPlayer/MediaPlayer.h>
使用AVPlayer前,要記得加入AVFoundation.frameworkk及#import <AVFoundation/AVFoundation.h>
請參考以下的範例:
使用MediaPlayer來播放影片NSString *filePath = [[NSBundle mainBundle] pathForResource:@"backspace" ofType:@"mov"];NSURL *sourceMovieURL = [NSURL fileURLWithPath:filePath];moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:sourceMovieURL];moviePlayer.view.frame=CGRectMake(0, 0, 1024, 768);moviePlayer.controlStyle=MPMovieControlStyleNone;// Play the movie![self.view addSubview:moviePlayer.view];
使用AVPlayer來播放影片NSString *filePath = [[NSBundle mainBundle] pathForResource:@"backspace" ofType:@"mov"];NSURL *sourceMovieURL = [NSURL fileURLWithPath:filePath];AVAsset *movieAsset = [AVURLAsset URLAssetWithURL:sourceMovieURL options:nil];AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:movieAsset];AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];playerLayer.frame = self.view.layer.bounds;playerLayer.videoGravity = AVLayerVideoGravityResizeAspect;[self.view.layer addSublayer:playerLayer];[player play];
基本写法有了 但是 至少我们还需要 play stop speed retreat 等方法. 写完 发现 有个 大bug : 反复 进出视频的页面 会崩溃. 方法 当然是标配 那是什么问题呢?
其实理解起来很简单, 反复进入,并且 视频流加载 肯定 不如 普通文本快, 那么反复进入加载 很容易出现 调用空指针 然后挂掉. 所以
第一步 处理流媒体崩溃问题 这块不能用简单的同步机制 要异步操作.
第二步 并且 重要的是 使用完 或者 提前退出 要把对应的通知 取消结束掉 这也是问题之一 .
以下作为参考方法:
需要添加 头文件 #import <AVFoundation/AVFoundation.h>
转载于:https://www.cnblogs.com/someonelikeyou/p/4861479.html
iOS 流媒体 基本使用 和方法注意相关推荐
- iOS流媒体直播整个框架介绍(HLS、RTSP)
iOS流媒体直播整个框架介绍(HLS.RTSP) 目录技术文章2016年7月17日 一.HTTP(WebService) 基于HTTP的渐进下载Progressive Download流媒体播放仅是在 ...
- iOS流媒体开发之三:HLS直播(M3U8)回看和下载功能的实现
1.概要 流媒体开发第一篇文章就说要把这些不是随便就可以百度到的知识献给"简书",拖了一个多月了,总算弄完了,深深松了口气,万幸没有食言,否则对不起小伙伴们. 流媒体始终是大众生活 ...
- iOS 高效开发-----实现description 方法 (续)
在 "iOS 高效开发-----实现description 方法"这篇文章的最后,我留下了一个问题,就是,如果要给每个自定义的类覆写description方法和debugDescr ...
- 【H5】解决ios禁止缩放失效的方法
[H5]解决ios禁止缩放失效的方法 参考文章: (1)[H5]解决ios禁止缩放失效的方法 (2)https://www.cnblogs.com/gentle-Lee/p/12154924.html ...
- ios android 内存不足,怎样解决手机内存不足?iOS系统可以试试这些方法
原标题:怎样解决手机内存不足?iOS系统可以试试这些方法 怎样解决手机内存不足?不管储存空间有多少GB,使用时间一长都会被满满的数据占据,有的时候甚至会出现储存空间不足的情况,怎么才能清理手机里的内存 ...
- IOS修改webView背景透明以及IOS调用前台js的方法
工作上遇到IOS的webView中的H5页面需要透明以显示webView的背景颜色.用H5自身的透明度的css样式或者js控制背景颜色及透明度都打不到想要的效果,最后还是通过ios设置webView中 ...
- gg 修改器游戏被保护_王者荣耀安卓和IOS修改超长游戏名字方法
王者荣耀安卓和IOS修改超长游戏名字方法 21个字超长游戏昵称代码 方法在文末 者荣耀中,游 戏ID虽然并不是被玩家所看重,但是更多的00后玩家喜欢一些酷炫一些并且与众不同的名字,因此又不少玩家都尝试 ...
- iOS开发中常用的方法
iOS开发中常用的方法 系统弹窗: 过期方法: UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"确认报价" ...
- IOS多国语言Localize方法
IOS多国语言Localize方法 摘要: 使用一系列的NSLocalizedString函数就是localize的本质.NSLocalizedString(NSString *key, NSStri ...
最新文章
- Eclipse的编码
- shiro(2)-架构与配置
- 应用程序的数据库从Sql Server迁移到Oracle
- Apple Mach-O Linker Error
- 【转】android如何查看cpu的占用率和内存泄漏
- 批量修改多目录下相同文件名的文件内容
- java 字符串文字筛选_拜托,Java。 最终是否支持多行字符串文字
- 小米2s自带rec刷root_刷Magisk模块开机卡Logo了怎么办?两种方法教你轻松解决
- 注意力机制--转载自我的学生隆兴写的博客
- 什么电脑的牌子好用_什么牌子的盘点机好用?
- java 2 实用教程部分课后答案
- mysql模糊匹配关键字_MySQL 关键字模糊匹配,并按照匹配度排序
- 怎样下载网页中.ts视频文件
- 电子元器件检测与维修从入门到精通视频教程
- Linux进程之如何查看进程详情?
- 样本不平衡的解决方案(很详细)
- C++面向对象-12-加号运算符重载
- 钒酸钠的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- java如何直接打印数组
- 嵌入式培训如何学?什么人适合转行嵌入式开发?
热门文章
- python 命名实体识别_使用Python和Keras的有关命名实体识别(NER)的完整教程
- mysql没有开启binlog能恢复数据吗_神了!一个妹子 rm -rf 把公司整个数据库删没了......
- 猜数游戏,随机目标数字,直到猜中退出
- php-fpm配置笔记
- 隐藏GridControl的“Drag a column header here to group by that column”
- Yii2 behavior运用
- 在虚机上安装WIN2003
- 《Excel与VBA程序设计》第一章
- 全国计算机等级考试题库二级C操作题100套(第48套)
- mysql 查询语句_SQL语言mysql基础查询语句