gpt4 book ai didi

android - 在 Android 中使用 MediaRecorder 和 NoiseSuppressor

转载 作者:行者123 更新时间:2023-11-29 21:31:00 27 4
gpt4 key购买 nike

我正在开始一个项目,使用如下代码试验 Android 麦克风:

    mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

之后,prepare() 和 start() 开始录制麦克风音频。

问题是,我还试图添加一些音频处理效果,例如 NoiseSuppressor。 API 文档声明 NoiseSuppressor 已完成此操作:

 NoiseSuppressor create (int audioSession)

初始化录制流并获取该流的 audioSession 的合适方法是什么?我很惊讶地发现我无法从 mediaRecorder 获取 audioSession。

为什么存在两种设置音频流的方法?我看到了 AudioRecord 方法,但 API 文档建议首选上述方法。

什么给了?

最佳答案

来自 Android 开发者:

To attach the NoiseSuppressor to a particular AudioRecord, specify the audio session ID of this AudioRecord when creating the NoiseSuppressor. The audio session is retrieved by calling AudioRecord.getAudioSessionId() on the AudioRecord instance.

这意味着 NoiseSuppressor 需要 audioSessionId 来创建这样的噪声抑制器实例

val suppressor = NoiseSuppressor.create(
recorder!!.audioSessionId)

如果你看getaudiosessionid引用然后你会看到 Audio Session 只能由Media PlayerAudio Recorder 创建。

因此您不能将Noise SuppressorMedia Recorder一起使用。但是可以插入Noise Suppressor默认在采集路径中由平台开发者根据MediaRecorder.AudioSource使用。

无论如何,如果您仍想尝试录音机,那么我会说我已经尝试在 录音机 中启用 NS 并且当我调用 NoiseSuppressor.isAvailable() 时它总是返回 false

关于android - 在 Android 中使用 MediaRecorder 和 NoiseSuppressor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19527810/

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