2019独角兽企业重金招聘Python工程师标准>>>

//

//  ViewController.m

//  04-AVPlayer播放视频

//

//  Created by鹿微微鹿 on 16/5/6.

//  Copyright (c) 2016年 鹿微微鹿. All rights reserved.

//

#import "ViewController.h"

#import <AVFoundation/AVFoundation.h>

@interface ViewController ()

{

//播放器

AVPlayer *_player;

//显示画面的Layer

AVPlayerLayer *imageLayer;

UIProgressView *progress;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

NSString *path =

@"http://otmv.alicdn.com/new/mv_1_6/23/77/2306cd13e3dde338b53f404ece43a277.mp4?k=7125c1a8f09b70bb&t=1451830866";

//1.创建item

AVPlayerItem *item = [[AVPlayerItem alloc]

initWithURL:[NSURL URLWithString:path]];

//2.创建播放器对象

_player = [AVPlayer playerWithPlayerItem:item];

//3.播放

[_player play];

//==================显示图像========================

//4.创建显示视频的layer专门用来显示视频图像的

//参数:播放器

imageLayer   = [AVPlayerLayer playerLayerWithPlayer:

_player];

//2.设置frame

imageLayer.frame = self.view.bounds;

//3.添加到界面上

[self.view.layer addSublayer:imageLayer];

//4.获取视频界面的大小

CGRect rect = imageLayer.videoRect;

//=========屏幕旋转==================

[[NSNotificationCenter defaultCenter]

addObserver:self selector:@selector(screenChangeSite) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];

}

- (void)viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

CGRect rect = imageLayer.videoRect;

//5.创建一个进度条

progress = [[UIProgressView alloc]

initWithFrame:CGRectMake(rect.origin.x,rect.origin.y+rect.size.height, rect.size.width, 10)];

[self.view addSubview:progress];

__weak UIProgressView *p = progress;

[_player addPeriodicTimeObserverForInterval:CMTimeMake(1,10 ) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {

//更新进度

//总时间

float total =  _player.currentItem.duration.value / _player.currentItem.duration.timescale;

//当前时间

float current = time.value * 1.0f/time.timescale;

p.progress = current/total;

}];

//显示样式

//AVLayerVideoGravityResizeAspect 默认的,没有缩放

//AVLayerVideoGravityResize:layer有多大就显示多大视频有缩放

//AVLayerVideoGravityResizeAspectFill 按比例缩放,显示不全

[imageLayer setVideoGravity:AVLayerVideoGravityResizeAspect];

}

#pragma mark - 屏幕旋转frame改变

- (void)screenChangeSite{

NSLog(@"屏幕旋转");

imageLayer.frame = self.view.bounds;

CGRect rect = imageLayer.videoRect;

progress.frame = CGRectMake(rect.origin.x,rect.origin.y+rect.size.height, rect.size.width, 10);

}

@end

转载于:https://my.oschina.net/luhoney/blog/671226

AVPlayer播放视频相关推荐

  1. 使用AVPlayer播放视频

    iOS里面视频播放用到的是AVPlayer(包含在AVFoundation框架内)与AVAudioplayer有点类似 但是AVPlayer得功能跟加强大,他可以用来播放音频也可以用来播放视频 而且在 ...

  2. AVPlayer播放视频(本地视频,或网络视频)

    https://github.com/potato512/SYAVPlayer 使用AVPlayer播放本地视频,或网络视频,需要添加AVFoundation框架. 使用AVPlayer播放视频的优势 ...

  3. iOS12 AVPlayer播放视频 AVFoundationErrorDomain Code=-11800

    iOS12 AVPlayer播放视频 AVFoundationErrorDomain Code=-11800 报错信息如题,iOS13的系统测试手机不会 最后需要再info.plist加上 NSApp ...

  4. iOS - AVPlayer播放视频,获取视频尺寸(宽高)

    公司启动页要求播放视频,其实很简单,AVPlayer可以胜任此任务. - (void)playVideoWithType:(NSString *)type {//获取视频sizeNSURL *medi ...

  5. AVFoundation系列二:用AVPlayer播放视频

    发现一个比较好的文章,搬来借用,这是根据苹果官方文档翻译的,并加入了自己的见解:尤其是加载网络的url分析见解,之后可能会根据另一大神的开源demo,总结一下边下边播,所以这里我无耻的设为了原创 AV ...

  6. iOS开发之仿微博视频边下边播之自定义AVPlayer播放器, 边下边播解剖。视频处理流程,建立连接-请求数据-统筹数据-解码数据-视频呈现

    Tips:这次的内容分为两篇文章讲述 01.[iOS]仿微博视频边下边播之封装播放器 讲述如何封装一个实现了边下边播并且缓存的视频播放器. 02.[iOS]仿微博视频边下边播之滑动TableView自 ...

  7. 播放视频AVPlayer使用详解

    在开发中,单纯使用AVPlayer类是无法显示视频的,要将视频层添加至AVPlayerLayer中,这样才能将视频显示出来. 属性含义: /* 播放器 */ @property (nonatomic, ...

  8. [iOS]调和 pop 手势导致 AVPlayer 播放卡顿

    作者 NewPan 关注 2017.07.15 14:24* 字数 3110 阅读 749评论 8喜欢 17 声明:我为这个框架写了四篇文章: 第一篇:[iOS]UINavigationControl ...

  9. iOS】AVPlayer 播放音视频

    1.常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求. 常用的音频播放器有 AVAudioPlayer.AVPlayer 等.不同的是,AVAudioPlayer 只支持本地音频的 ...

最新文章

  1. GitHub有趣分享:Thanos(灭霸命令)
  2. 【Network Security!】ping命令的用法(全)
  3. android viewflipper图片轮播,使用ViewFlipper实现图片轮播
  4. 推荐安装的chrome插件
  5. 3D Button Suite
  6. unittest单元测试简单介绍
  7. C++ 11 深度学习(九)C++文件IO
  8. Python GUI
  9. 邮件服务系列之一基础原理
  10. 专业的WiFi检测工具有哪些?如何解决wifi信号不好?
  11. Word:开机即启动Word程序(转)
  12. 金蝶k/3 现金流量表编制口诀
  13. 重庆理工大学控制工程matlab大作业,(论文答辩)第六届校园数学建模知识竞赛决赛答辩会成功举行...
  14. Exponetial BackOff(指数退避算法)
  15. C/C++:计算N的N次方的个位数(火眼金睛找规律,解决此题数据问题)
  16. 十五、分布式相关理论
  17. 梦幻西游代理途径有哪些?需要注意什么
  18. 长沙博物馆 乐在其中,思在其中
  19. 网页抓取软件Wget用法详解
  20. scilab系列---概述

热门文章

  1. spring22:Aspectj实现环绕通知@Around
  2. linux目录结构及常用命令
  3. 【开源推荐】进阶实战,从一款音乐播放器开始
  4. 利用HttpRequester进行接口测试
  5. java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^
  6. 仅IE6中链接A的href为javascript协议时不能在当前页面跳转
  7. 地...地...地震了
  8. 股价相对于转股价溢价的时候,可转债就是折价状态。这就意味着只要正股保持目前的价格,赚钱的概率较高。...
  9. Python的函数名作为参数传入调用以及map、reduce、filter
  10. 【2017-11-26】Linq表连接查询