如何在Flutter中使用audioplayer插件播放本地的mp3文件

15

如何在Flutter中使用audioplayer 0.2.0播放本地mp3文件。

pubspec.yaml

flutter:
    assets:
    - sounds/music.mp3
Future<ByteData> loadAsset() async {
    return await rootBundle.load('sounds/music.mp3');
}

// FIXME: This code is not working.
Future playLocal() async {
    final result = await audioPlayer.play(loadAsset());
    if (result == 1) setState(() => playerState = PlayerState.playing);
}

我能从rootBundle获得本地资源路径吗? 我能在audioPlayer上使用ByteData支付音频吗?


1
包“audioplayers”而不是“audioplayer”具有一个很好的类AudioCache,专门用于此目的。 更多信息请参见:https://github.com/luanpotter/audioplayers/blob/master/doc/audio_cache.md - oidualc
您现在可以在此处阅读有关AudioCache类的信息:https://github.com/AgeOfLearning/flutter_audioplayers/blob/master/doc/audio_cache.md - F KIng
4个回答

11

audioplayer插件目前仅支持网络路径和文件。您可以将资产移动到临时文件夹并使用此代码播放:

import 'package:path_provider/path_provider.dart';

...

final file = new File('${(await getTemporaryDirectory()).path}/music.mp3');
await file.writeAsBytes((await loadAsset()).buffer.asUint8List());
final result = await audioPlayer.play(file.path, isLocal: true);

非常感谢。 我能够以这种方式播放mp3。 - granoeste
5
如何设置资产/声音/1.mp3 播放? - Nicholas Jela

4

1
感谢提供示例代码。 - Kostya Vyrodov

3

我发现一个有效的方法是创建assets文件夹,并将mp3文件加载到该目录中。

然后使用Future加载该文件。

 AudioPlayer audio = await AudioCache.play("filetobeloaded.mp3");

如何暂停或停止这个音频?使用这种方法。 - Adnan haider

0
使用这段代码,它会起作用的。 如果在pubsec.yaml中已经提到了文件夹名称,请不要再提及。
onPressed: () async{
          final player = AudioPlayer();
          await player.play(AssetSource("note1.wav"));

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到更多关于如何撰写好答案的信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接