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实现视频播放相关推荐

  1. AVPlayer进行视频播放

    一.说明 AVPlayer是AVFoundation框架中的一个类,它比较接近于底层,可以利用该类进行自定义样式的视频播放.AVPlayer本身并不能显示视频,如果AVPlayer要显示视频,则它必须 ...

  2. 通过AVPlayer实现视频播放

    最近在琢磨视频播放,现在重新梳理下发出来. 现在实现的功能为:播放本地.网络视频,进度条,缓冲条,加载圈,暂停,开始,拖拽控制进度,滑动控制亮度及声音这些基本功能. 利用控件AVPlayer. 一.搭 ...

  3. AVPlayer自定义视频播放器

    我的avplayer播放器,能横屏,竖屏,适应屏幕,上代码 1.我把我的那个最主要的类的.m的主要的代码附上 @implementation LDZMoviePlayerController- (vo ...

  4. iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器

    1.前言 标题必须要浮夸!要感觉像是一个大新闻.长者如是说. 其实是前几天去面试的时候,被要求说必须做过视频播放相关项目.有点闹心之余,就花了点时间在家写了一个简单播放器,基本实现了主流播放器的大致功 ...

  5. AVPlayer自定制视频播放器(2)——耳机线控、中断以及AVAudioSession的使用

    在上一篇博客中说到了使用AVPlayer进行自定义视频播放器.这里讲继续讲述视频播放器的自定制.下面是上一篇博客的链接,本篇博客将承接上一篇博客进行讲解,如果有AVPlayer自定制视频播放器基础的同 ...

  6. 【iOS开发进阶】-AVPlayer视频播放

    1.AVPlayer介绍 iOS提供了多种方法来实现视频播放,包括MPMoviePlayerController,MPMoviePlayerViewController,AVPlayer,AVPlay ...

  7. nPlayer Plus视频播放器 免越狱直装

    这是一款付费软件,略有小贵,plus版本为60元,普通版本为30元,lite版本为免费,但是会有广告.前几年买过一款叫Avplayer的视频播放器,听这个名字就很有诱惑力,但是刚买不久,它就不更新了. ...

  8. iOS 视频播放从零开始(二)

    iOS 9之后苹果推荐使用AVPlayer进行视频播放,AVPlayer相对于MPMediaPlayerViewController功能更加强大,有更多的灵活性,当然,也需要你去自定义构建UI.其他优 ...

  9. swiftui视频_swiftui视频播放器实时处理核心图像

    swiftui视频 SwiftUI in iOS 14 introduced native support for playing movie files. The new VideoPlayer c ...

最新文章

  1. [LeetCode] Permutations II 全排列之二
  2. Anaconda中安装pytorch,并在pycharm中配置【win10】
  3. python登录网页版微信发送消息
  4. python源码精要(5)-C代码规范
  5. EDM数据库营销是什么?-EDM数据库营销的概念
  6. python教程答案十九章_Python 编程从入门到实践 第19章 注销一节问题
  7. python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...
  8. 一个15年的架构师谈“如何成为一名优秀的解决方案架构师”
  9. Python可以用于客户端Web开发吗?
  10. 乔布斯不在了,世界一大步,苹果一小步。
  11. 实时数据库介绍(转载)
  12. 爱国者MID产品介绍
  13. Atitit 关于建立知识库体系的方案
  14. Java数据库的介绍和使用
  15. Eclipse使用(入门教程)
  16. 43大学计算机,加州大学戴维斯分校计算机科学排名第43(2020年TFE美国排名)
  17. 关于vue项目中移动端实现用户选择照片、照片裁剪、一次上传多张图片功能。
  18. Spring Boot 集成 批处理框架Spring batch
  19. android的vmos虚拟机,vmospro虚拟机
  20. 软件测试网课笔记(持续更新)

热门文章

  1. Springboot 序列化空对象报错解决办法
  2. 想在美国创业却没有H1B?这些大学可以帮忙搞定身份!
  3. 在文件夹及其子文件夹内,批量提取相同后缀名的文件
  4. 美团招聘-测试开发工程师
  5. 大学冷知识「高校的学生也有专属昵称」
  6. python实验二序列_Python合集之Python序列(二)
  7. 电脑有网却打不开网页(能ping通)
  8. 几个非常好用的CMD命令
  9. 不同点处泰勒展开的区别和意义
  10. Node.js(六)express 框架 使用