gpt4 book ai didi

android - 如何在 Flutter 应用中播放 .mp3 文件?

转载 作者:IT老高 更新时间:2023-10-28 12:46:28 26 4
gpt4 key购买 nike

我编写了一个 Dart 网络应用程序,它从服务器检索 .mp3 文件并播放它们;我正在尝试使用 Flutter 编写移动版本。我知道 dart:web_audio 是 Web 应用程序的主要选项,但 Flutter 在我的 SDK 中找不到它。我知道它在那里,因为我可以将以下内容编译为 Javascript:

import 'dart:html';
import 'dart:convert';
import 'dart:web_audio';
AudioContext audioContext;

main() async {
audioContext = new AudioContext();
var ul = (querySelector('#songs') as UListElement);
var signal = await HttpRequest.getString('http://10.0.0.6:8000/api/filelist');
// Map json = JSON.decode(signal);
// for (Map file in json['songs']) {
print("signal: $signal");
Map json = JSON.decode(signal);
for (Map file in json['songs']) {
var li = new LIElement()
..appendText(file['title']);
var button = new ButtonElement();
button.setAttribute("id", "#${file['file']}");
button.appendText("Play");

li.append(button);
new Song(button, file['file']);
ul.append(li);

}

}

class Song {
ButtonElement button;
bool _playing = false;
// AudioContext _audioContext;
AudioBufferSourceNode _source;
String title;

Song(this.button, this.title) {

button..onClick.listen((e) => _toggle());
}

_toggle() {
_playing = !_playing;
_playing ? _start() : _stop();
}

_start() {
return HttpRequest
.request("http://10.0.0.6:8000/music/$title", responseType: "arraybuffer")
.then((HttpRequest httpRequest) {
return audioContext
.decodeAudioData(httpRequest.response)
.then((AudioBuffer buffer) {
_source = audioContext.createBufferSource();
_source.buffer = buffer;
_source.connectNode(audioContext.destination);
_source.start(0);
button.text = "Stop";
_source.onEnded.listen((e){
_playing = false;
button.text = "Play";
});
});
});
}

_stop() {
_source.stop(0);
button.text = "Play";
}
}

我将如何为 Flutter 应用重写代码的 dart:web_audio 部分? Flutter 可以访问 MediaPlayer 吗?如果是这样,我将如何在 pubspec.yaml 中引用它?

最佳答案

正如上面提到的 raju-bitter,Flutter 曾经在其核心引擎中提供了一些内置的音频包装器,但这些已被删除:https://github.com/flutter/flutter/issues/1364 .

使用 Flutter 的应用程序只是 iOS 或 Android 应用程序,因此可以使用 hello_services 模型 (https://github.com/flutter/flutter/tree/master/examples/hello_services ) 中的一些 Java 或 Obj-C 代码通过 Flutter 执行底层 iOS/Android 可以执行的任何操作。此模型记录在 https://flutter.io/platform-services .它还没有我们希望的那么容易。许多改进即将推出。

关于android - 如何在 Flutter 应用中播放 .mp3 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41031984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com