AVPlayer实现视频播放
Demo
实现功能:
1.视频的播放/暂停
2.播放进度前进后退
ViewController
import AVFoundation/AVFoundation.h
import “TQPlayView.h”
@interface ViewController ()
@property (nonatomic,strong) AVPlayer *player;
@property (nonatomic,strong) AVPlayerItem *item;
@property (nonatomic) CMTime time;
@property (weak, nonatomic) IBOutlet UISlider *proSlider;
- (IBAction)proChange:(id)sender;
- (IBAction)start:(id)sender;
@end
//UIView —> CALayer
//AVPlayer —> layer —> AVPlayerLayer.player
//UIView
@implementation ViewController
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.NSString *path = [[NSBundle mainBundle] pathForResource:@”3” ofType:@”mp4”];
//
self.item = [[AVPlayerItem alloc] initWithURL:[NSURL fileURLWithPath:path]];self.player = [[AVPlayer alloc] initWithPlayerItem:self.item];
TQPlayView *playView = [[TQPlayView alloc] initWithFrame:self.view.bounds];
//CALayer
((AVPlayerLayer *)playView.layer).player = self.player;
[self.view addSubview:playView];
[self.view sendSubviewToBack:playView];//
[self.item addObserver:self forKeyPath:@”status” options:NSKeyValueObservingOptionNew context:nil];
}
-(void)observeValueForKeyPath:(NSString )keyPath ofObject:(id)object change:(NSDictionary )change context:(void *)context
{
AVPlayerItemStatus s = [change[NSKeyValueChangeNewKey] integerValue];
if(s == AVPlayerItemStatusReadyToPlay)
{//总时间//帧率 CMTime value 总帧数 timescale 每秒播放的帧数self.proSlider.maximumValue = self.item.duration.value / self.item.duration.timescale;self.time = self.item.duration;//防止循环引用__weak UISlider *slider = self.proSlider;//添加一个定时 间隔时间 1[self.player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:nil usingBlock:^(CMTime time) {//time 当前的播放时间slider.value = time.value / time.timescale;}];
}
}
(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}(IBAction)proChange:(UISlider *)sender {
//sender.value * timescale
[self.player seekToTime:CMTimeMake(sender.value * self.time.timescale, self.time.timescale)];
}(IBAction)start:(UIButton *)sender {
if(!sender.selected)
{
[self.player play];
}
else
{
[self.player pause];
}sender.selected = !sender.selected;
}
TQPlayView.m
import AVFoundation/AVFoundation.h
@implementation TQPlayView
//改变layer的类型 AVPlayerLayer
+(Class)layerClass
{
return [AVPlayerLayer class];
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
@end
AVPlayer实现视频播放相关推荐
- AVPlayer进行视频播放
一.说明 AVPlayer是AVFoundation框架中的一个类,它比较接近于底层,可以利用该类进行自定义样式的视频播放.AVPlayer本身并不能显示视频,如果AVPlayer要显示视频,则它必须 ...
- 通过AVPlayer实现视频播放
最近在琢磨视频播放,现在重新梳理下发出来. 现在实现的功能为:播放本地.网络视频,进度条,缓冲条,加载圈,暂停,开始,拖拽控制进度,滑动控制亮度及声音这些基本功能. 利用控件AVPlayer. 一.搭 ...
- AVPlayer自定义视频播放器
我的avplayer播放器,能横屏,竖屏,适应屏幕,上代码 1.我把我的那个最主要的类的.m的主要的代码附上 @implementation LDZMoviePlayerController- (vo ...
- iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器
1.前言 标题必须要浮夸!要感觉像是一个大新闻.长者如是说. 其实是前几天去面试的时候,被要求说必须做过视频播放相关项目.有点闹心之余,就花了点时间在家写了一个简单播放器,基本实现了主流播放器的大致功 ...
- AVPlayer自定制视频播放器(2)——耳机线控、中断以及AVAudioSession的使用
在上一篇博客中说到了使用AVPlayer进行自定义视频播放器.这里讲继续讲述视频播放器的自定制.下面是上一篇博客的链接,本篇博客将承接上一篇博客进行讲解,如果有AVPlayer自定制视频播放器基础的同 ...
- 【iOS开发进阶】-AVPlayer视频播放
1.AVPlayer介绍 iOS提供了多种方法来实现视频播放,包括MPMoviePlayerController,MPMoviePlayerViewController,AVPlayer,AVPlay ...
- nPlayer Plus视频播放器 免越狱直装
这是一款付费软件,略有小贵,plus版本为60元,普通版本为30元,lite版本为免费,但是会有广告.前几年买过一款叫Avplayer的视频播放器,听这个名字就很有诱惑力,但是刚买不久,它就不更新了. ...
- iOS 视频播放从零开始(二)
iOS 9之后苹果推荐使用AVPlayer进行视频播放,AVPlayer相对于MPMediaPlayerViewController功能更加强大,有更多的灵活性,当然,也需要你去自定义构建UI.其他优 ...
- swiftui视频_swiftui视频播放器实时处理核心图像
swiftui视频 SwiftUI in iOS 14 introduced native support for playing movie files. The new VideoPlayer c ...
最新文章
- [LeetCode] Permutations II 全排列之二
- Anaconda中安装pytorch,并在pycharm中配置【win10】
- python登录网页版微信发送消息
- python源码精要(5)-C代码规范
- EDM数据库营销是什么?-EDM数据库营销的概念
- python教程答案十九章_Python 编程从入门到实践 第19章 注销一节问题
- python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...
- 一个15年的架构师谈“如何成为一名优秀的解决方案架构师”
- Python可以用于客户端Web开发吗?
- 乔布斯不在了,世界一大步,苹果一小步。
- 实时数据库介绍(转载)
- 爱国者MID产品介绍
- Atitit 关于建立知识库体系的方案
- Java数据库的介绍和使用
- Eclipse使用(入门教程)
- 43大学计算机,加州大学戴维斯分校计算机科学排名第43(2020年TFE美国排名)
- 关于vue项目中移动端实现用户选择照片、照片裁剪、一次上传多张图片功能。
- Spring Boot 集成 批处理框架Spring batch
- android的vmos虚拟机,vmospro虚拟机
- 软件测试网课笔记(持续更新)