AVPlayer播放视频
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播放视频相关推荐
- 使用AVPlayer播放视频
iOS里面视频播放用到的是AVPlayer(包含在AVFoundation框架内)与AVAudioplayer有点类似 但是AVPlayer得功能跟加强大,他可以用来播放音频也可以用来播放视频 而且在 ...
- AVPlayer播放视频(本地视频,或网络视频)
https://github.com/potato512/SYAVPlayer 使用AVPlayer播放本地视频,或网络视频,需要添加AVFoundation框架. 使用AVPlayer播放视频的优势 ...
- iOS12 AVPlayer播放视频 AVFoundationErrorDomain Code=-11800
iOS12 AVPlayer播放视频 AVFoundationErrorDomain Code=-11800 报错信息如题,iOS13的系统测试手机不会 最后需要再info.plist加上 NSApp ...
- iOS - AVPlayer播放视频,获取视频尺寸(宽高)
公司启动页要求播放视频,其实很简单,AVPlayer可以胜任此任务. - (void)playVideoWithType:(NSString *)type {//获取视频sizeNSURL *medi ...
- AVFoundation系列二:用AVPlayer播放视频
发现一个比较好的文章,搬来借用,这是根据苹果官方文档翻译的,并加入了自己的见解:尤其是加载网络的url分析见解,之后可能会根据另一大神的开源demo,总结一下边下边播,所以这里我无耻的设为了原创 AV ...
- iOS开发之仿微博视频边下边播之自定义AVPlayer播放器, 边下边播解剖。视频处理流程,建立连接-请求数据-统筹数据-解码数据-视频呈现
Tips:这次的内容分为两篇文章讲述 01.[iOS]仿微博视频边下边播之封装播放器 讲述如何封装一个实现了边下边播并且缓存的视频播放器. 02.[iOS]仿微博视频边下边播之滑动TableView自 ...
- 播放视频AVPlayer使用详解
在开发中,单纯使用AVPlayer类是无法显示视频的,要将视频层添加至AVPlayerLayer中,这样才能将视频显示出来. 属性含义: /* 播放器 */ @property (nonatomic, ...
- [iOS]调和 pop 手势导致 AVPlayer 播放卡顿
作者 NewPan 关注 2017.07.15 14:24* 字数 3110 阅读 749评论 8喜欢 17 声明:我为这个框架写了四篇文章: 第一篇:[iOS]UINavigationControl ...
- iOS】AVPlayer 播放音视频
1.常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求. 常用的音频播放器有 AVAudioPlayer.AVPlayer 等.不同的是,AVAudioPlayer 只支持本地音频的 ...
最新文章
- GitHub有趣分享:Thanos(灭霸命令)
- 【Network Security!】ping命令的用法(全)
- android viewflipper图片轮播,使用ViewFlipper实现图片轮播
- 推荐安装的chrome插件
- 3D Button Suite
- unittest单元测试简单介绍
- C++ 11 深度学习(九)C++文件IO
- Python GUI
- 邮件服务系列之一基础原理
- 专业的WiFi检测工具有哪些?如何解决wifi信号不好?
- Word:开机即启动Word程序(转)
- 金蝶k/3 现金流量表编制口诀
- 重庆理工大学控制工程matlab大作业,(论文答辩)第六届校园数学建模知识竞赛决赛答辩会成功举行...
- Exponetial BackOff(指数退避算法)
- C/C++:计算N的N次方的个位数(火眼金睛找规律,解决此题数据问题)
- 十五、分布式相关理论
- 梦幻西游代理途径有哪些?需要注意什么
- 长沙博物馆 乐在其中,思在其中
- 网页抓取软件Wget用法详解
- scilab系列---概述
热门文章
- spring22:Aspectj实现环绕通知@Around
- linux目录结构及常用命令
- 【开源推荐】进阶实战,从一款音乐播放器开始
- 利用HttpRequester进行接口测试
- java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^
- 仅IE6中链接A的href为javascript协议时不能在当前页面跳转
- 地...地...地震了
- 股价相对于转股价溢价的时候,可转债就是折价状态。这就意味着只要正股保持目前的价格,赚钱的概率较高。...
- Python的函数名作为参数传入调用以及map、reduce、filter
- 【2017-11-26】Linq表连接查询