【鸿蒙实战开发】利用Media Kit实现音乐播放器

Media Kit介绍

Media Kit(媒体服务)提供了音视频的播放,录制开发方式,我们可以调用音视频的API实现相应的功能。

AVPlayer

AVPlayer主要工作是将Audio/Video媒体资源(比如mp4/mp3/mkv/mpeg-ts等)转码为可供渲染的图像和可听见的音频模拟信号,并通过输出设备进行播放。AVPlayer提供功能完善一体化播放能力,应用只需要提供流媒体来源,不负责数据解析和解码就可达成播放效果。

在进行应用开发的过程中,开发者可以通过AVPlayer的state属性主动获取当前状态或使用on(‘stateChange’)方法监听状态变化。如果应用在音频播放器处于错误状态时执行操作,系统可能会抛出异常或生成其他未定义的行为。

在此demo中实现音乐的播放,暂停与切换就是利用AVPlayer实现的。

开发流程

  • 在定义avplayer时,我们需要注意其初始化过程,以确保代码的合规性。同时,鉴于avplayer在使用过程中有可能出现null的情况,为了避免编译器报错和潜在的逻辑错误,我们在编写代码时还需加入对avplayer状态的检查机制。(当时我在写的时候就是因为这个卡了一下,大家也要注意。)
private avPlayer: media.AVPlayer|null=null;

  • 接下来简要介绍页面布局方面。我们运用了三个容器来划分界面,使主要的音乐列表(list)占据视觉中心,同时在列表下方增设了一个控制播放暂停的按钮(button),在这里实现音乐的暂停播放。

  • 为了实现音乐的播放功能,我们在列表项(list)中集成了点击事件。当用户点击列表中的某一音乐时,通过资源管理器接口获取对应的媒体文件,并利用avplayerfdSrc属性进行播放。我们在点击事件中首先创建一个avplayer的实例(若尚未存在),随后调用reset()方法以切换播放资源,从而确保在播放新音乐的同时能够结束上一首音乐的播放,避免了音乐重叠播放的混乱情况。

  async onPageShow() {
    // 创建avPlayer实例对象
    this.avPlayer = await media.createAVPlayer();
    // 创建状态机变化回调函数
    this.setAVPlayerCallback();
    console.info('播放器准备完成')
  }

  // 以下为使用资源管理接口获取打包在HAP内的媒体资源文件并通过fdSrc属性进行播放
  async avPlayerchange(item:number) {
    if (this.avPlayer !== null) {
      this.avPlayer?.reset()
      // 创建状态机变化回调函数
      this.setAVPlayerCallback();
      // 通过UIAbilityContext的resourceManager成员的getRawFd接口获
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值