【发布时间】:2022-01-12 13:52:44
【问题描述】:
我想用颤振构建一个录音机,但我似乎找不到任何方法来记录从设备播放的音频而不是麦克风本身。有什么办法可以做到吗?
【问题讨论】:
标签: android flutter audio-recording
我想用颤振构建一个录音机,但我似乎找不到任何方法来记录从设备播放的音频而不是麦克风本身。有什么办法可以做到吗?
【问题讨论】:
标签: android flutter audio-recording
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();
}
【讨论】: