使用AVPlayer播放视频

2023-11-17

iOS里面视频播放用到的是AVPlayer(包含在AVFoundation框架内)与AVAudioplayer有点类似
但是AVPlayer得功能跟加强大,他可以用来播放音频也可以用来播放视频 而且在播放音频方面能直接播放网络音频。
要使用AVPlayer播放视频 要引入这两个头文件:

#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>

具体实现:

@interface ViewController ()
//控制视频播放进度的控件
@property (weak, nonatomic) IBOutlet UISlider *progressSlider;
//声明播放视频的控件属性 [既可以播放视频也可以播放音频]
@property (nonatomic, strong) AVPlayer *player;
//播放的总时长
@property (nonatomic, assign)CGFloat sumPlayOperation;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    //设置播放的url
    NSString *playString = @"http://static.tripbe.com/videofiles/20121214/9533522808.f4v.mp4";
    NSURL *url = [NSURL URLWithString:playString];

    //设置播放的项目
    AVPlayerItem *item = [[AVPlayerItem alloc] initWithURL:url];
    //初始化player对象
    self.player = [[AVPlayer alloc] initWithPlayerItem:item];
    //设置播放页面
    AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:_player];
    //设置播放页面的大小
    layer.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 300);
    //设置背景颜色
    layer.backgroundColor = [UIColor purpleColor].CGColor;

    //设置播放窗口和当前视图之间的比例显示内容
    layer.videoGravity = AVLayerVideoGravityResizeAspect;

    //添加播放视图到self.view上
    [self.view.layer addSublayer:layer];

    //设置播放进度的默认值
    self.progressSlider.value = 0;

    //设置播放的默认音量
    self.player.volume = 1.0f;
}
#pragma mark - 开始播放按钮的响应方法
- (IBAction)startPlayer:(id)sender {
    [self.player play];
}
#pragma mark - 暂停播放按钮响应方法
- (IBAction)stopPlayer:(id)sender {
    [self.player pause];
}
#pragma mark - 播放进度条
- (IBAction)changeProgress:(id)sender {
    self.sumPlayOperation = self.player.currentItem.duration.value / self.player.currentItem.duration.timescale;
    //CMTtimeMake(a, b) a表示当前时间 b表示每秒钟有多少帧
    [self.player seekToTime:CMTimeMake(self.progressSlider.value * self.sumPlayOperation, self.player.currentItem.duration.timescale) completionHandler:^(BOOL finished) {
        [self.player play];
    }];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用AVPlayer播放视频 的相关文章

  • 拉普拉斯时域卷积定理_如何证明频域卷积定理

    展开全部 设抄 IF表示傅立叶逆变换 则 因此有袭 故频域卷积定2113理5261得证 4102 扩展资料 频域卷积定理 频域卷积定理表明两信号1653在时域的乘积对应于这两个信号傅立叶变换的卷积除以2 卷积定理揭示了时间域与频率域的对应关
  • nacos注册中心/配置中心的使用

    Nacos下载 https github com alibaba nacos releases Nacos启动 此处为了演示方便 下载的是 Windows版本 nacos server 2 2 2 zip 进入 nacos server 2
  • response.setCharacterEncoding(charset) 报错

    eclipse tomcat服务启动运行项目 代码 response setCharacterEncoding charset 标红 我自己百度了很多 有一个说法是最靠谱的 HttpServletResponse存在于servlet api
  • JQ了解

    jQuery 一 jQuery的了解 1 定义 jQuery是一个兼容多浏览器的JavaScript框架 可以使用户方便地处理HTML 事件 实现动画效果 并且为网站提供方便的Ajax交互 2 作用 JS操作DOM的一个库 特点 轻量级 出
  • Maven构建与管理项目(二)

    Maven构建与管理项目 二 Maven核心概念 Maven坐标 什么是坐标 在平面几何中坐标 x y 可以标识平面中唯一的一点 Maven坐标主要组成 groupId 组织标识 包名 artifactId 项目名称 version 项目的
  • ST外设使用出错,一般排查步骤

    FMC 通信有误排查过程 1 STM32 官方设计资源 https www stmcu com cn STM32中文官网 gt 设计资源 gt 实战经验 2 Cube 库当中的官方例程 使用 everything 搜索 FMC 关键词 从而
  • 新路子!chatGPT+Python爬虫接私单怎么玩?

    就在这两天 关于ChatGPT的疾呼突然在社交平台上刷屏 很多人发现自己的号已经不在了 用户们感到前所未有的惶恐 已经有不少公司把 chatGPT引入工作流 未来已来 AI智能时代真的来了 普通人如何在智能时代谋求发展 这里提供一个思路 c
  • C++异常

    全文目录 概念 异常的抛出 在函数调用链中异常栈展开匹配原则 异常的重新抛出 异常安全 异常规范 C 标准库的异常体系 异常的优缺点 概念 C语言处理异常的方式 终止程序 返回错误码 很多系统的库函数就是使用这中方式 C 异常 异常是一种处
  • iphone原彩显示对眼睛好吗_iphonex原彩显示有必要开吗

    配置来看 iphoneX更好也2113更贵 iphone8注重5261实用 iphoneX注重装X 有钱就买iphone X 预算不足买iphone 8 4102iphone8和iphoneX的区别 1653外观设计 iPhone 8 Pl
  • 工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计

    鸿鹄工程项目管理系统 Spring Cloud Spring Boot Mybatis Vue ElementUI 前后端分离构建工程项目管理系统 1 项目背景 一 随着公司的快速发展 企业人员和经营规模不断壮大 为了提高工程管理效率 减轻
  • caffe代码阅读7:LayerRegistry的实现细节-2016.3.18

    一 LayerRegistry的作用简介 LayerResistry的功能很简单 就是将类和对应的字符串类型放入到一个map当中去 以便灵活调用 主要就是注册类的功能 二 LayerRegistry类的详细介绍 1 构造函数和析构函数 构造
  • c-tree数据库(c-treeACE)(7):开发篇之一

    C tree提供了很多种的API 我们主要使用C 的 即c treeDB C API 主要的参考手册就是Faircom公司网站上提供的 c treeDB C API Developer s Guide 学习开发的一个最佳途径当时看看tuto
  • Python 中的自动点击器——2 种简单易行的方法

    在本教程中 我们将了解Python 中的自动答题器 我们将首先了解它的含义以及如何在 Python 中实现它 那么 事不宜迟 让我们进入正题 Auto Clicker是一种 Python 软件 允许用户以较短的时间间隔连续点击鼠标 它由用户
  • Mysql中关于NULL值的处理

    一 Mysql空值介绍 MySQL认为任何和NULL值做比较的表达式的值都为NULL 包括select null null和select null null 在对统计索引列不重复值的数量时如何对待NULL值 MySQL专门提供了一个inno
  • React 练习项目,仿简书博客写作平台

    Introduction 技术栈 react redux react router express Nginx 练习点 redux 连接 react router 路由跳转 scss 样式书写 容器组件与展示组件的设计 express 脚手
  • 【100%通过率 】【华为OD机试c++】人数最多的站点【2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 关注公园园区提供小火车单向通行 从园区站点编号最小到最大通行如1 2 3 4 1 然后供员工在各个办公园区穿梭 通过对公司N个员工调研统计到每个
  • cloudflare解析域名+CDN

    cloudflare解析域名 CloudFlare 是一家全球知名的 CDN 服务商 并且提供了免费的 CDN 套餐 还不限流量 所以我们完全不需要花一分钱就能使用它的 CDN 服务 接下来我就说明如何注册并使用 CloudFlare 1
  • C/C++中的数据结构对齐,#pragma pack() 和 __attribute__

    C C 中的数据结构对齐 总览 数据结构对齐是指在计算机内存中排列和访问数据的方式 它包含三个独立但相关的问题 数据对齐 data alignment 数据结构填充 data structure padding 和打包 packing 当数
  • Servlet传送对象给Applet使用

    前日 一位朋友与我谈论Servlet与Applet共享Java对象的问题 现发表出来与大家分享 文中瑕癖 之处甚多 望各位指教 朋友谈论的需求是这样的 他想通过页面上一个Applet呼叫一个服务器Servlet 而从Servlet产生 一个
  • Anaconda3安装TensorFlow2.0.0镜像并且配置好Jupyter Notebook

    我们安装TensorFlow1 2 1但是后面又要安装Tensorflow2 0 0 那么我们就需要让Tensorflow两个版本在windows电脑下进行共存 首先 我们先下载了anacoda3和配置好了清华镜像 我们打开anaconda

随机推荐

  • 从零开始编译OpenWrt固件

    从零开始编译OpenWrt固件 前言 进来阅读这篇文章的相信都是对OpenWrt有一定的了解的 对于OpenWrt的介绍这里就不再赘述 可以自行查找相关百科了解 OpenWrt是适合于嵌入式设备的一个Linux发行版 可以通过其提供的相关工
  • Docker使用基础命令(记录贴)

    Docker使用基础命令 基础命令 拉取 推送镜像 docker run命令 基础操作 保存镜像并压缩 基础命令 docker images grep xxx docker ps a grep xxx 导入容器 docker load i
  • vue+antD 表格中使用input

    vue antD 表格中使用input 在这里插入代码片
  • 【编程与算法基础】数据结构——时间复杂度与空间复杂度

    文章目录 算法的时间复杂度和空间复杂度 一 前言 1 算法的效率 2 复杂度的表示方法 大O渐进表示法 3 大O渐进表示法的规则 二 时间复杂度 1 时间复杂度的概念 2 简单时间复杂度计算举例 3 复杂时间复杂度的计算举例 三 空间间复杂
  • C++实践之Qt学习(六):Qt设计器之常用控件、布局和样式

    文章目录 常用控件 按钮 普通按钮 单选按钮 多选按钮 其他的按钮 显示控件 标签 其他显示控件 输入控件 数据项控件 容器控件 布局 Qt布局介绍 设置布局的方式 样式 外部样式表 常用控件 按钮 Buttons分类中包含了Qt中常用的按
  • Appium使用教程(七)——获取appPackage和appActivity

    appPackage和appActivity 进行appium自动化测试非常重要的两个参数 我们所测试的APP不同 这两个参数肯定也是不一样的 那如何快速的获取这APP的这两个参数呢 我这里介绍五个方法 方法一 最简单有效的方法 通过cmd
  • Ubuntu 之 docker 无法下载镜像

    问题 使用 docker pull 命令拉取镜像出现如下错误 解决方案 1 在 etc docker 中创建 daemon json 文件 vim etc docker daemon json 2 写入 registry mirrors h
  • Android 夜间模式(白/夜间模式的切换)

    在项目研发中 我们避免不了需求中会应用到夜间模式 这里对它做一些总结以及封装 从API 23后 Android就有自带的api能够实现夜间模式与白天模式的切换 Support Library 23 2 应用于API14 推出了适合Andro
  • 逐点比较法实现直线圆弧插补[数控机床]

    逐点比较法实现不同象限直线 圆弧插补 一 原理介绍 1 1 简介 1 2 逐点比较法偏差计算 直线 1 2 1 第一象限逐点比较法思路 1 2 2 四象限逐点比较法实现思路 1 3 逐点比较法偏差计算 圆弧 1 3 1 第一象限逐点比较法思
  • 笔记:快速上手shell编程

    SHELL学习笔记 变量赋值 赋值 A 10 不允许 赋值时不允许在等号两侧出现空格 A 10 允许 A 10 不允许 A 10 允许 当赋值时需要填充多个空格 可以使用 环境变量 root localhost gitee echo PWD
  • tf1.x和tf2.x查看TFRecord数据的方法

    Tensorflow 1 x和Tensorflow 2 x读取tfrecord方法略有不同 下面分别记录两段代码 Tensorflow 1 x for example in tf python io tf record iterator p
  • React基础之Refs的理解与使用

    目录 为什么会用到Refs 何时使用Refs Refs有哪些使用方式 字符串形式的refs 回调形式的refs createRef的使用 为什么会用到Refs 我们在使用React写代码的时候对Refs的使用比较少 因为我们很少直接操作底层
  • 常用DOC命令

    copy con 123 bat 创建批处理 color 改变cmd颜色 ping t l 65550 ip 死亡之ping ipconfig 查看ip ipconfig release 释放ip ipconfig renew 重获ip s
  • arm下蜂鸣器测试代码

    首先还是看内核蜂鸣器的实现 如下图 这个和led一样 都是比较简单的字符驱动 代码如下 include
  • JS 触发事件整理

    一般事件 onclick IE3 N2鼠标点击时触发此事件 ondblclick IE4 N4鼠标双击时触发此事件 onmousedown IE4 N4按下鼠标时触发此事件 onmouseup IE4 N4鼠标按下后松开鼠标时触发此事件 o
  • Android 最简单的应用间跳转小结

    不明所以的图示 通过 JumpOrigin 可以打开 JumpMe 以下简结了4种方式 1 通过查找包名直接启动 APP 这种方法最直接 通过解析包名 判断该应用是否安装 如果安装了就可以直接启动 也能够传递参数 代码如下 傻瓜式打开应用
  • 数据质量评价体系参考

    数据质量人人有责 这不仅仅只是一句口号 更是数据工作者的生命线 数据质量的好坏直接决定着数据价值高低 数据质量管理是指在数据创建 加工 使用和迁移等过程中 通过开展数据质量定义 过程控制 监测 问题分析和整改 评估与考核等一系列管理活动 提
  • MySQL--慢查询

    MySQL的慢查询日志是MySQL提供的一种日志记录 它用来记录在MySQL中响应时间超过阀值的语句 具体指运行时间超过long query time值的SQL 则会被记录到慢查询日志中 具体指运行时间超过long query time值的
  • 第8章 动态注入技术

    转自 http www epubit com cn book onlinechapter 33620 Android安全技术揭秘与防范 我们在讨论动态注入技术的时候 APIHook的技术由来已久 在操作系统未能提供所需功能的情况下 利用AP
  • 使用AVPlayer播放视频

    iOS里面视频播放用到的是AVPlayer 包含在AVFoundation框架内 与AVAudioplayer有点类似 但是AVPlayer得功能跟加强大 他可以用来播放音频也可以用来播放视频 而且在播放音频方面能直接播放网络音频 要使用A