使用 flutter_soloud 播放或流式传输声音与音乐
了解如何在你的 Flutter 应用中使用 flutter_soloud package 播放或流式传输音频。
本实用教程演示如何将 flutter_soloud package
集成到你的 Flutter 应用中,以低延迟播放音效和背景音乐。要开始使用该 package,请按以下步骤操作:
1. 添加 package 依赖
#要将 package:flutter_soloud 添加为依赖,请使用 flutter pub add:
flutter pub add flutter_soloud
2. 初始化 SoLoud
#
在播放任何音频之前,你需要初始化 SoLoud 实例。你还可以配置采样率、缓冲区大小和声道数等播放设置。
import 'package:flutter_soloud/flutter_soloud.dart';
// Initialize with default settings.
await SoLoud.instance.init();
// Or configure with custom settings.
await SoLoud.instance.init(
sampleRate: 44100,
bufferSize: 2048,
channels: Channels.stereo,
);
3. 加载音频
#
flutter_soloud package 支持 MP3、WAV、OGG、FLAC 等多种音频格式。你可以从不同来源加载音频。
从本地文件:
final sound = await SoLoud.instance.loadFile('path/to/sound.mp3');
从应用资源:
final sound = await SoLoud.instance.loadAsset('assets/sound.mp3');
从网络 URL:
final sound = await SoLoud.instance.loadUrl(
'https://example.com/sound.mp3',
mode: LoadMode.memory,
);
从内存中的字节:
// TODO: Replace with your actual audio data.
final soundBytes = Uint8List.fromList([]);
final sound = await SoLoud.instance.loadMem(
'reference_name.mp3',
soundBytes,
mode: LoadMode.memory,
);
4. 播放音频
#
音频加载完成后,你可以使用 SoLoud.instance.play 播放。你还可以配置无缝循环。
// Play the sound.
var handle = await SoLoud.instance.play(sound);
// Play with gapless looping.
handle = await SoLoud.instance.play(
sound,
looping: true,
loopingStartAt: Duration(seconds: 1),
);
play 方法返回一个 handle,用于引用正在播放的该声音实例。你可以使用此 handle 控制播放。
5. 控制播放
#使用 play 返回的 handle,你可以执行暂停或恢复播放等多种操作:
// Toggle pause state.
SoLoud.instance.pauseSwitch(handle);
跳转到指定时间戳:
SoLoud.instance.seek(handle, Duration(seconds: 5));
设置播放速度:
// Play twice as fast.
SoLoud.instance.setRelativePlaySpeed(handle, 2.0);
调整播放音量:
// Set playback to 50% volume.
SoLoud.instance.setVolume(handle, 0.5);
淡入淡出音量:
SoLoud.instance.fadeVolume(
handle,
0.0, // The volume to fade to.
Duration(seconds: 2), // The duration of the fade.
);
停止播放:
await SoLoud.instance.stop(handle);
6. 释放声音源
#当你不再使用某个声音源时,记得释放它以释放资源。
await SoLoud.instance.disposeSource(sound);
7. [可选] 流式传输音频
#flutter_soloud package 还支持实时流式传输音频数据。
初始化并配置缓冲区流:
final stream = SoLoud.instance.setBufferStream(
bufferingType: BufferingType.released,
sampleRate: 24000,
channels: Channels.mono,
format: BufferType.s16le, // pcm16bits
);
播放流:
final handle = await SoLoud.instance.play(stream);
当你的应用收到音频数据时,将其添加到流中:
// TODO: Replace with your actual audio data.
final audioChunk = Uint8List.fromList([]);
SoLoud.instance.addAudioDataStream(
stream,
audioChunk,
);
当你完成音频流时,将其标记为已完成:
SoLoud.instance.setDataIsEnded(stream);
更多信息
#
更多详细信息和示例,请访问 pub.dev 上的 flutter_soloud package,或观看 flutter_soloud Package of the Week 视频。
除非另有说明,本文档之所提及适用于 Flutter 3.44.0 版本。本页面最后更新时间:2026-06-18。查看文档源码 或者 为本页面内容提出建议。