iOS - AVPlayer播放视频,获取视频尺寸(宽高)
公司启动页要求播放视频,其实很简单,AVPlayer可以胜任此任务。
- (void)playVideoWithType:(NSString *)type {//获取视频sizeNSURL *mediaFileUrl;if ([type isEqualToString:@"default"]) {NSString *defaultVideoPath = [[NSBundle mainBundle] pathForResource:@"defaultVideo.mp4" ofType:nil];mediaFileUrl = [NSURL fileURLWithPath:defaultVideoPath];} else {NSString *filePath = [[ResourceManager sharedManager] resourceFilePathWithCategory:ResourceCategoryStartup];//通过移动该文件对文件重命名NSString *filePath2= [filePath stringByAppendingString:@"video.mp4"];NSFileManager *fileMgr = [NSFileManager defaultManager];//判断是否移动if (![fileMgr fileExistsAtPath:filePath2]) {NSError *error;if ([fileMgr copyItemAtPath:filePath toPath:filePath2 error:&error] != YES) {NSLog(@"reName faild!");[self.timer invalidate];self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(clickSkipButton) userInfo:nil repeats:NO];return;}}mediaFileUrl = [NSURL fileURLWithPath:filePath2];}
//获取视频尺寸
AVURLAsset *asset = [AVURLAsset assetWithURL:mediaFileUrl];NSArray *array = asset.tracks;CGSize videoSize = CGSizeZero;for (AVAssetTrack *track in array) {if ([track.mediaType isEqualToString:AVMediaTypeVideo]) {videoSize = track.naturalSize;}}if (videoSize.width == 0) {[self.timer invalidate];self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(clickSkipButton) userInfo:nil repeats:NO];return;}self.videoView.frame = [self caculateRealRectWithResourceRect:videoSize];//创建视频并将视频放入videoView的layer中AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset: asset];self.player = [[AVPlayer alloc]initWithPlayerItem:playerItem];AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player];playerLayer.frame = self.videoView.frame;playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;[self.videoView.layer addSublayer:playerLayer];//为视频设置 播放结束、播放未到达结尾、播放抛锚 的消息处理[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:AVPlayerItemDidPlayToEndTimeNotification object:self.player.currentItem];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:AVPlayerItemFailedToPlayToEndTimeNotification object:self.player.currentItem];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:AVPlayerItemPlaybackStalledNotification object:self.player.currentItem];//播放视频[self.player play];
}//视频结束处理
-(void)playbackFinished:(NSNotification *)notification{if (self.player) {[self.player pause];}
}
iOS - AVPlayer播放视频,获取视频尺寸(宽高)相关推荐
- iOS设备播放mkv格式视频无声音解决
iOS设备播放mkv格式视频无声音解决 拿iPhone看随时随地看电影美剧十分方便,无奈mkv格式视频总是没有声音.google一下才知,视频中的ac3格式的音频由于版权问题,大部分免费的播放器都被不 ...
- ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式
ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式 命令如下: ffmpeg -y -i Titanic.mkv -s 640*480 out.h264 运行效果: 一般的 使用 ffmpe ...
- 前端js获取图片大小 扩展名_前端 JS 获取 Image 图像 宽高 尺寸
前端 JS 获取 Image 图像 宽高 尺寸 简介 项目中用到获取图片的原始尺寸,然后适配宽高:网上的大部分前端解决方案,都是new Image()后,在onload事件中获取image的尺寸. 在 ...
- Java代码实现上传视频获取视频某一帧作为截图封面(二)
上一个文章讲了Java代码实现上传视频获取视频某一帧作为截图封面的一种方法,现在讲述第二种方法.为什么要在这里讲这种方法呢?第一.这种方法生成的图片占用的空间更小第二.这种方法可以获取很多信息 一.根 ...
- JS获取video真实宽高
JS获取video真实宽高 JS代码 var video = document.querySelector('video'); video.addEventListener('canplay', fu ...
- 获取浏览器视口宽高以及元素宽高
适用所有浏览器 var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWid ...
- java 获取图片的宽高
博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): 通过java获取图片的宽高 获取本地文件的图片尺寸: import java.awt.image.BufferedIma ...
- 5分钟学会js上传图片校验图片格式、大小、尺寸宽高
js上传图片校验图片格式.大小.尺寸宽高 一.前言 js上传图片校验图片格式.大小.尺寸宽高. 在此记录下,分享给大家. 二.代码 <input type=" ...
- 动态获取手机屏幕宽高及动态设置控件宽高
1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetr ...
- RT/Metro商店应用如何如何获取图片的宽高
RT/Metro商店应用如何如何获取图片的宽高 var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms ...
最新文章
- JavaScript常见集合操作
- 图论复习usaco2006jan gold分离的路径
- JDBC驱动程序的四种方式
- html 下拉框字体,怎么把select下拉菜单里的文字设置成左右滚动效果
- 《漫画算法2》源码整理-2 图算法
- Class文件结构(更新中)
- android版 模拟器哪个好,安卓模拟器电脑版哪个好
- 常用加解密工具集合|视频图片加解密方案
- 常用Arthas命令
- java 拼图_功能项目拼图将Java 9引入
- 两个数相乘积一定比每个因数都大_小升初数学知识点大全含公式+20类必考应用题(含答案解析),孩子考试一定用得上!...
- python 强制结束线程_在python中实现强制关闭线程的示例
- java 历届试题 合根植物
- vs code .lua.txt 后缀文件识别为lua的配置
- Python实战从入门到精通第十九讲——自定义字符串的格式化
- 在Apache中利用ServerAlias设置虚拟主机接收多个域名和设置域名泛解析
- 【NLP免费系列直播】图卷积神经网络, BERT,知识图谱, 对话生成
- brctl配置linux bridge及虚拟bridge实现
- matlab导弹追踪,导弹追踪代码
- 大学生计算机应用基础实验6,计算机应用基础实验6.doc
热门文章
- .net html5页面缓存技术,.net缓存技术详解
- linux系统rm什么命令,linux系统中rm命令的详细解释
- 计算机开机时间不对,电脑每次开机时间都不对?究竟是哪里出了问题?该怎么修复?...
- 3D视角旋转平移鼠标响应制作
- 架构师之路-2018
- 判断无穷积分是绝对收敛还是条件收敛---练习题
- 数据分析__探索性统计分析2
- 智能驾驶发展的前世今生 |既生瑜,何生亮,究竟何为PPP-RTK?
- 人工智能发展的三起两落
- keil iar c语言支持区别,mdk/iar汇编区别