HarmonyOS鸿蒙Next中uniapp开发应用如何切换音轨

HarmonyOS鸿蒙Next中uniapp开发应用如何切换音轨 uniapp开发鸿蒙应用 如何切换音轨

3 回复

可以使用uts插件使用鸿蒙原生播放器AVplayer https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/video-playback

使用uts调用AVplayer的selectTrack和deselectTrack 切换音轨

uts文档 https://uniapp.dcloud.net.cn/tutorial/harmony/native-component.html

更多关于HarmonyOS鸿蒙Next中uniapp开发应用如何切换音轨的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS NEXT中,uniapp应用需通过ArkTS原生插件调用系统媒体框架的playback.setAudioTrack接口切换音轨。具体在uni-app项目中创建Harmony原生模块,封装avSessionAVPlayer相关API,通过JSBridge暴露给前端调用即可实现音轨选择。

在 HarmonyOS Next 中,uni-app 应用可通过 UTS 插件nvue 页面 调用系统 AVPlayer 实现音轨切换。核心是利用 AVPlayertrackInfoselectTrack 接口。

实现思路

  1. 创建 AVPlayer 实例并设置媒体源(如本地文件或网络流)。
  2. 监听 trackInfoUpdate 事件获取音轨列表。
  3. 调用 selectTrack(index) 切换音轨。

关键代码(UTS 插件示例)

// 引入媒体能力
import media from '@ohos.multimedia.media';

export class TrackSwitcher {
  private player: media.AVPlayer;

  async init(src: string) {
    this.player = await media.createAVPlayer();
    this.player.url = src;
    // 监听音轨信息
    this.player.on('trackInfoUpdate', (info: Array<media.TrackInfo>) => {
      info.forEach((track, idx) => {
        if (track.trackType === media.TrackType.AUDIO) {
          console.log(`音频轨道 ${idx}: ${track.language}`);
        }
      });
    });
    await this.player.prepare();
  }

  switchAudioTrack(index: number) {
    if (this.player) {
      this.player.selectTrack(index);
      console.log(`已切换到音频轨道 ${index}`);
    }
  }

  release() {
    this.player?.release();
  }
}

uni-app 端调用:将上述 UTS 插件导出后,在页面中直接调用 switchAudioTrack(index) 即可完成音轨切换。若使用 nvue 页面,可将 ArkTS 代码内嵌,流程一致。

注意:音轨索引从 0 开始,selectTrack 只在播放器处于 prepared/playing 状态时有效。

回到顶部