【问题标题】:Is it possible to record the audio output with flutter?是否可以用颤振记录音频输出?
【发布时间】:2022-01-12 13:52:44
【问题描述】:

我想用颤振构建一个录音机,但我似乎找不到任何方法来记录从设备播放的音频而不是麦克风本身。有什么办法可以做到吗?

【问题讨论】:

    标签: android flutter audio-recording


    【解决方案1】:

    https://pub.dev/packages/flutter_audio_recorder

    https://pub.dev/packages/audioplayers

    这两个包对于在flutter中实现音频重新编码和播放很有用。

    这里有一些代码参考-

      bool isRecordingStarted = false;
      bool isPlaying = false;
      FlutterAudioRecorder _recorder;
      Recording _recording;
      Timer _t;
      var recordedAudio;
      RecordingStatus _currentStatus = RecordingStatus.Unset;
      IconData _recordIcon = Icons.mic_none;
      Duration _duration;
      Duration _position;
    
      Future _startRecording() async {
        await _recorder.start();
        var current = await _recorder.current();
        setState(() {
          _recording = current;
        });
    
        _t = Timer.periodic(Duration(milliseconds: 10), (Timer t) async {
          var current = await _recorder.current();
          setState(() {
            _recording = current;
            _t = t;
          });
        });
      }
    
      Future _stopRecording() async {
        var result = await _recorder.stop();
        _t.cancel();
    
        setState(() {
          // _recording = result;
          _recording = new Recording();
        });
        print("_recording.path : ${result.path}");
        setState(() {
          recordedAudio = result.path;
        });
        // Navigator.pushNamed(context, Screen.AudioPostingView.toString(),
        //     arguments: {"audioUrl": result.path});
      }
    

    ///用于音频播放

     playLocal() async {
        int result = await advancedPlayer.play(recordedAudio, isLocal: true);
        // setState(() => playerState = PlayerState.playing);
      }
    
      @override
      void initState() {
        // getLastPost();
        _init();
        _loadRiveFile();
        _prepare();
        _getDuration();
        // startTimer();
    
        advancedPlayer.onDurationChanged
            .listen((d) => setState(() => _duration = d));
        // _initAudioPlayer();
        super.initState();
      }
    

    【讨论】:

    • 这真的是录制设备音频,而不是麦克风音频吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多