# Opus Plugin for Flutter 一个用于在 Flutter 中使用 Opus 音频编解码器的插件,支持 Android 和 iOS 平台。 ## 功能 - Opus 编码:将 PCM 音频数据编码为 Opus 格式 - Opus 解码:将 Opus 数据解码为 PCM 音频 - 支持灵活设置编码参数:采样率、声道数、应用类型、复杂度等 - 兼容 Android 和 iOS 平台 ## 使用方法 ### 添加依赖 由于这是本地插件,在 `pubspec.yaml` 中添加: ```yaml dependencies: opus: path: local_plugins/opus ``` ### 初始化编解码器 ```dart // 创建编码器 await Opus.createEncoder( sampleRate: 48000, // 采样率 (Hz) channels: 2, // 声道数 (1=单声道, 2=立体声) application: OpusApplicationType.audio, // 应用类型 complexity: 10, // 复杂度 (0-10) frameSize: 960, // 帧大小 ); // 创建解码器 await Opus.createDecoder( sampleRate: 48000, channels: 2, ); ``` ### 编码和解码 ```dart // 编码 PCM 数据 Uint8List pcmData = ...; // 16位 PCM 音频数据 Uint8List? opusData = await Opus.encodeData(pcmData); // 解码 Opus 数据 Uint8List opusData = ...; // Opus 编码数据 Uint8List? pcmData = await Opus.decodeData(opusData, frameSize: 960); ``` ### 释放资源 ```dart // 释放编码器资源 await Opus.disposeEncoder(); // 释放解码器资源 await Opus.disposeDecoder(); ``` ## 关于 Opus Opus 是一种开源、免版税的音频编解码器,专为通过互联网传输音频而设计。它可变比特率从 6 kbit/s 到 510 kbit/s,帧大小从 2.5 ms 到 60 ms,支持采样率从 8 kHz(窄带)到 48 kHz(全频带)。 Opus 特点: - 低延迟 (5-20ms) - 高音质 - 灵活的比特率 - 支持语音和音乐 - 强大的丢包恢复能力 ## 配置说明 ### Android 配置 需要将 libopus.so 文件放在以下目录: - android/src/main/jniLibs/armeabi-v7a/libopus.so - android/src/main/jniLibs/arm64-v8a/libopus.so > 注意:若需要自行编译 Opus,可参考 https://opus-codec.org/ 官方指南。 ### iOS 配置 需要将 opus.framework 或 libopus.a 放在 ios/Frameworks 目录下。 ## 示例 查看 [example](example) 目录中的示例代码,了解如何使用此插件生成、编码和解码音频数据。