问题描述
我正在使用麦克风包来录制语音,Flutter 将音频存储了一段时间,我们可以将其作为音频 url 播放,但我需要将语音 url 以文件形式存储在 firebase 存储中。 听我的代码....
void handleAudioState(AudioState state) {
setState(() {
if (audioState == AudioState.not) {
// Starts recording
try{
_recorder.start();
audioState = AudioState.recording;
}
catch(e){
print(e.toString());
}
// Finished recording
}
else if (audioState == AudioState.recording) {
audioState = AudioState.play;
_recorder.stop();
// Play recorded audio
}
else if (audioState == AudioState.play) {
audioState = AudioState.stop;
dynamic rec=_recorder.toBytes();
print(rec.toString());
// var file= File.fromrawPath(rec);
//print(file);
_audioPlayer=AudioPlayer();
_audioPlayer.setUrl(_recorder.value.recording!.url).then((value){
print(_recorder.value.recording!.url);
return _audioPlayer.play().then((value){
setState(() {
audioState = AudioState.play;
});
});
});
// Stop recorded audio
} else if (audioState == AudioState.stop) {
audioState = AudioState.play;
_audioPlayer.stop();
}
});
}
void handleAudioState(AudioState state) {
setState(() {
if (audioState == AudioState.not) {
// Starts recording
try{
_recorder.start();
audioState = AudioState.recording;
}
catch(e){
print(e.toString());
}
// Finished recording
} else if (audioState == AudioState.recording) {
audioState = AudioState.play;
_recorder.stop();
// Play recorded audio
} else if (audioState == AudioState.play) {
audioState = AudioState.stop;
dynamic rec=_recorder.toBytes();
print(rec.toString());
// var file= File.fromrawPath(rec);
//print(file);
_audioPlayer=AudioPlayer();
_audioPlayer.setUrl(_recorder.value.recording!.url).then((value){
print(_recorder.value.recording!.url);
return _audioPlayer.play().then((value){
setState(() {
audioState = AudioState.play;
});
});
});
// Stop recorded audio
} else if (audioState == AudioState.stop) {
audioState = AudioState.play;
_audioPlayer.stop();
}
});
}
我正在使用以下软件包 just_audio: ^0.8.0 麦克风: 请让我知道如何做到这一点, 感谢期待
解决方法
您必须首先将录制的音频转换为字节, 然后使用 dart html 中存在的 File 类来创建文件;
import 'dart:html' as html;
final file = html.File(bytes,filename);
您可以上传然后将此文件上传到 Firebase 存储。 Firebase 存储还支持字节上传,因此您可以直接上传字节