【问题标题】:how to convert audio url into a file in flutter web?如何将音频 url 转换为 flutter web 中的文件?
【发布时间】:2021-09-07 15:03:55
【问题描述】:

我正在使用麦克风包录制语音,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();
      }
    });
  }

我正在使用以下软件包 只是_音频:^0.8.0 麦克风: 请让我知道如何做到这一点, 感谢期待

【问题讨论】:

    标签: flutter web audio microphone


    【解决方案1】:

    您必须先将录制的音频转换为字节, 然后使用 dart html 中的 File 类创建文件;

    import 'dart:html' as html;
    
    final file = html.File(bytes, filename);
    

    您可以上传此文件,然后将其上传到 Firebase 存储。 Firebase 存储也支持字节上传,因此您可以直接上传字节

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 2020-04-29
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 2022-07-06
      • 2020-12-08
      相关资源
      最近更新 更多