插件介绍

just_audio 是一款功能丰富的音频播放器插件,支持 Android、iOS、macOS、Web、Linux、Windows 和鸿蒙平台。这款自定义修改版本的 just_audio 已适配鸿蒙平台,为鸿蒙开发者提供了强大的音频播放解决方案。

主要特性

  • 🎵 多格式支持:支持多种音频格式播放
  • 🎧 播放控制:完整的播放控制功能(播放、暂停、停止、快进、快退)
  • 🔊 音量控制:支持音量调节和静音
  • 速度调节:支持播放速度调节
  • 🎼 音调调节:支持音调调节
  • 📦 播放列表:支持播放列表管理
  • 🔄 循环播放:支持单曲循环和列表循环
  • 🎯 精准定位:支持精确的播放位置定位
  • 📡 网络音频:支持网络音频流播放
  • 📁 本地音频:支持本地音频文件播放
  • 🎨 音效处理:支持音频效果处理

如何使用插件

1. 包的引入

由于这个三方库为自定义修改版本,需要以 git 形式引入。在引用的项目中,pubspec.yaml 中 dependencies 新增配置:

dependencies:
  just_audio:
    git:
      url: "https://atomgit.com/"
      path: "fluttertpc_just_audio-master/just_audio"

执行命令安装依赖:

flutter pub get

2. 基本使用

导入包
import 'package:just_audio/just_audio.dart';
创建音频播放器
final player = AudioPlayer();
加载音频
// 加载网络音频
final duration = await player.setUrl('https://example.com/audio.mp3');

// 加载本地资源
await player.setAsset('assets/audio.mp3');

// 加载本地文件
await player.setFilePath('/path/to/audio.mp3');
播放控制
// 播放
await player.play();

// 暂停
await player.pause();

// 停止
await player.stop();

// 快进
await player.seek(Duration(seconds: 10));

// 调整播放速度
await player.setSpeed(2.0); // 2倍速

// 调整音量
await player.setVolume(0.5); // 50%音量

// 调整音调
await player.setPitch(1.5); // 1.5倍音调

3. 播放列表

// 定义播放列表
final playlist = ConcatenatingAudioSource(
  children: [
    AudioSource.uri(Uri.parse('https://example.com/track1.mp3')),
    AudioSource.uri(Uri.parse('https://example.com/track2.mp3')),
    AudioSource.uri(Uri.parse('https://example.com/track3.mp3')),
  ],
);

// 加载播放列表
await player.setAudioSource(playlist);

// 播放下一首
await player.seekToNext();

// 播放上一首
await player.seekToPrevious();

// 跳转到指定曲目
await player.seek(Duration.zero, index: 2);

// 设置循环模式
await player.setLoopMode(LoopMode.all); // 列表循环

4. 音频剪辑

// 播放 2-4 秒的片段
await player.setClip(start: Duration(seconds: 2), end: Duration(seconds: 4));
await player.play();

// 清除剪辑
await player.setClip();

5. 错误处理

// 加载时捕获错误
try {
  await player.setUrl("https://example.com/nonexistent.mp3");
} on PlayerException catch (e) {
  print("错误代码: ${e.code}");
  print("错误信息: ${e.message}");
} catch (e) {
  print('发生错误: $e');
}

// 播放时捕获错误
player.playbackEventStream.listen((event) {}, onError: (Object e, StackTrace st) {
  if (e is PlatformException) {
    print('错误代码: ${e.code}');
    print('错误信息: ${e.message}');
  } else {
    print('发生错误: $e');
  }
});

6. 状态监听

// 监听播放状态
player.playerStateStream.listen((state) {
  if (state.playing) {
    print('正在播放');
  } else {
    print('已暂停');
  }
});

// 监听播放位置
player.positionStream.listen((position) {
  print('当前位置: $position');
});

// 监听缓冲状态
player.bufferedPositionStream.listen((bufferedPosition) {
  print('缓冲位置: $bufferedPosition');
});

// 监听总时长
player.durationStream.listen((duration) {
  print('总时长: $duration');
});

7. 鸿蒙平台支持情况

功能 支持情况
播放/暂停
停止
快进/快退
音量控制
速度调节
音调调节
播放列表
循环播放
随机播放
音效处理

总结

just_audio 为鸿蒙平台的 Flutter 开发者提供了一个功能强大、易于使用的音频播放解决方案。通过本指南,你可以快速上手在鸿蒙平台上使用 just_audio 插件,从包的引入到高级播放控制,全面掌握 just_audio 的核心功能。

尽管鸿蒙平台目前不支持部分高级功能,但基础的播放控制功能已经完全可用,能够满足大多数应用的音频播放需求。

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐