当前位置: 首页 > news >正文

使用AVPlayer进行音频播放开发基础设计

在使用AvPlayer进行设计之前,需要获取相应对象,后期围绕该对象展开操作

    const player = await media.createAVPlayer()

然后对播放器进行初始化设置:

player.on('stateChange', (state) => {switch (state) {case 'initialized':player.prepare()break;case 'prepared':player.play()break;case 'playing':player.play()break;case 'paused':player.pause()break;case 'completed':player.stop() // 播放结束(如果需要循环播放这里可以用if判断是否循环,进入不同状态)break;case 'stopped':player.reset() // stop 时 reset -> 释放音频资源break;default:break;}

这里可以使用一个函数将AvPlayer对象的获取和初始化工作封装起来,方便后期调用,给出示例如下:

 async getAVPlayerInstance() {// 如果已存在,直接返回if (this.avPlayer !== null) {return this.avPlayer}// 初始化播放器const player = await media.createAVPlayer()player.on('stateChange', (state) => {switch (state) {case 'initialized':player.prepare()break;case 'prepared':player.play()break;case 'playing':player.play()break;case 'paused':player.pause()break;case 'completed':player.stop() // 播放结束break;case 'stopped':player.reset() // stop 时 reset -> 释放音频资源break;default:break;}})this.avPlayer = playerreturn this.avPlayer}

进行完初始化设置之后就可以将音频对象的各个状态进行监听并且能够进行相应的操作与更改,这里不多做展示。

接下来展示音频读取函数的一个书写示例(这里只展示RawFile资源文件的读取方法,沙箱文件读取或通过网络连接获取的数据需另行获取)

// 加载 src/main/resources/rawfile 的文件async playByRawSrc(rawFdPath: string) {const player = await this.getAVPlayerInstance()// 先释放原来的资源await player.reset()// 获取文件信息const context = getContext()// 加载 src/main/resources/rawfile 文件夹中的文件const fileDescriptor = await context.resourceManager.getRawFd(rawFdPath)// 设置播放路径player.fdSrc = fileDescriptor// 播放player.play()}

接下来给出一个暂停音频播放的函数,将播放器状态更改到其他状态的函数书写同理:

// 停止播放async stop() {const player = await this.getAVPlayerInstance()this.loop = falseplayer.stop()}

http://www.lryc.cn/news/470284.html

相关文章:

  • API网关的作用--为什么微服务需要一个API网关?
  • [0154].第5节:IDEA中创建Java Web工程
  • React03 组件 Props
  • 多线程——线程安全的集合类
  • 自动化数据库管理:如何通过存储过程动态创建 MySQL 对象
  • 480p 720p 1080p 2k 4k 8k 12k分辨率视频分别占用多大带宽?
  • unity中GameObject介绍
  • 洛谷——P8468 [Aya Round 1 C] 文文的构造游戏(01构造问题)
  • 双击热备和负载均衡的区别
  • 如何使用 cPanel 部署 WordPress临时网站
  • Android 自定义 Dialog 实现列表 单选,多选,搜索
  • 下载地址合辑(持续更新)
  • Android Kotlin 高阶函数详解及其在协程中的应用
  • CSS基础—网页布局(重点!)
  • 【Fargo】17:vs工程转qt构建:QT6 不支持32bit转向qt5.15.2
  • ​智能电表蓝牙芯片方案
  • miRNA分析流程学习(一)/TCGAmiRNA数据下载
  • 西南大学软件专硕考研难度分析!
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-21
  • 安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)
  • 【AI换装整合及教程】CatVTON:时尚与科技的完美融合
  • 接口测试(七)jmeter——参数化(RandomString函数)
  • simple_php
  • 网络搜索引擎Shodan(4)
  • 【Flask】一、安装与第一个测试程序
  • R语言笔记(二):向量
  • 信息安全工程师(71)隐私保护技术与应用
  • 层和块学习
  • Zookeeper面试整理-源码及实现细节
  • 岭回归的MATLAB步骤