公司启动页要求播放视频,其实很简单,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播放视频,获取视频尺寸(宽高)相关推荐

  1. iOS设备播放mkv格式视频无声音解决

    iOS设备播放mkv格式视频无声音解决 拿iPhone看随时随地看电影美剧十分方便,无奈mkv格式视频总是没有声音.google一下才知,视频中的ac3格式的音频由于版权问题,大部分免费的播放器都被不 ...

  2. ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式

    ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式 命令如下: ffmpeg -y -i Titanic.mkv -s 640*480 out.h264 运行效果: 一般的 使用 ffmpe ...

  3. 前端js获取图片大小 扩展名_前端 JS 获取 Image 图像 宽高 尺寸

    前端 JS 获取 Image 图像 宽高 尺寸 简介 项目中用到获取图片的原始尺寸,然后适配宽高:网上的大部分前端解决方案,都是new Image()后,在onload事件中获取image的尺寸. 在 ...

  4. Java代码实现上传视频获取视频某一帧作为截图封面(二)

    上一个文章讲了Java代码实现上传视频获取视频某一帧作为截图封面的一种方法,现在讲述第二种方法.为什么要在这里讲这种方法呢?第一.这种方法生成的图片占用的空间更小第二.这种方法可以获取很多信息 一.根 ...

  5. JS获取video真实宽高

    JS获取video真实宽高 JS代码 var video = document.querySelector('video'); video.addEventListener('canplay', fu ...

  6. 获取浏览器视口宽高以及元素宽高

    适用所有浏览器 var w = window.innerWidth || document.documentElement.clientWidth || document.body.clientWid ...

  7. java 获取图片的宽高

    博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): 通过java获取图片的宽高 获取本地文件的图片尺寸: import java.awt.image.BufferedIma ...

  8. 5分钟学会js上传图片校验图片格式、大小、尺寸宽高

    js上传图片校验图片格式.大小.尺寸宽高 一.前言        js上传图片校验图片格式.大小.尺寸宽高.        在此记录下,分享给大家. 二.代码 <input type=" ...

  9. 动态获取手机屏幕宽高及动态设置控件宽高

    1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetr ...

  10. RT/Metro商店应用如何如何获取图片的宽高

    RT/Metro商店应用如何如何获取图片的宽高 var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms ...

最新文章

  1. JavaScript常见集合操作
  2. 图论复习usaco2006jan gold分离的路径
  3. JDBC驱动程序的四种方式
  4. html 下拉框字体,怎么把select下拉菜单里的文字设置成左右滚动效果
  5. 《漫画算法2》源码整理-2 图算法
  6. Class文件结构(更新中)
  7. android版 模拟器哪个好,安卓模拟器电脑版哪个好
  8. 常用加解密工具集合|视频图片加解密方案
  9. 常用Arthas命令
  10. java 拼图_功能项目拼图将Java 9引入
  11. 两个数相乘积一定比每个因数都大_小升初数学知识点大全含公式+20类必考应用题(含答案解析),孩子考试一定用得上!...
  12. python 强制结束线程_在python中实现强制关闭线程的示例
  13. java 历届试题 合根植物
  14. vs code .lua.txt 后缀文件识别为lua的配置
  15. Python实战从入门到精通第十九讲——自定义字符串的格式化
  16. 在Apache中利用ServerAlias设置虚拟主机接收多个域名和设置域名泛解析
  17. 【NLP免费系列直播】图卷积神经网络, BERT,知识图谱, 对话生成
  18. brctl配置linux bridge及虚拟bridge实现
  19. matlab导弹追踪,导弹追踪代码
  20. 大学生计算机应用基础实验6,计算机应用基础实验6.doc

热门文章

  1. .net html5页面缓存技术,.net缓存技术详解
  2. linux系统rm什么命令,linux系统中rm命令的详细解释
  3. 计算机开机时间不对,电脑每次开机时间都不对?究竟是哪里出了问题?该怎么修复?...
  4. 3D视角旋转平移鼠标响应制作
  5. 架构师之路-2018
  6. 判断无穷积分是绝对收敛还是条件收敛---练习题
  7. 数据分析__探索性统计分析2
  8. 智能驾驶发展的前世今生 |既生瑜,何生亮,究竟何为PPP-RTK?
  9. 人工智能发展的三起两落
  10. keil iar c语言支持区别,mdk/iar汇编区别