Rae*_*vik 3 audio android microphone noise mediarecorder
我正在开始一个项目,使用如下代码试验 Android 麦克风:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Run Code Online (Sandbox Code Playgroud)
之后,准备()和开始()开始录制麦克风音频。
问题是,我还尝试添加一些音频处理效果,例如 NoiseSuppressor。API 文档声明 NoiseSuppressor 是这样完成的:
NoiseSuppressor create (int audioSession)
Run Code Online (Sandbox Code Playgroud)
初始化录制流并获取该流的 audioSession 的适当方法是什么?我很惊讶地发现我无法从 mediaRecorder 获取 audioSession。
为什么存在两种设置音频流的方法?我看到了 AudioRecord 方法,但是 API 文档建议首选上述方法。
是什么赋予了?
来自安卓开发者:
要将 NoiseSuppressor 附加到特定的 AudioRecord,请在创建 NoiseSuppressor 时指定此 AudioRecord 的音频会话 ID。通过在 AudioRecord 实例上调用 AudioRecord.getAudioSessionId() 来检索音频会话。
这意味着NoiseSuppressor需要audioSessionId像这样创建噪声抑制器实例
val suppressor = NoiseSuppressor.create(
recorder!!.audioSessionId)
Run Code Online (Sandbox Code Playgroud)
如果您查看getaudiosessionid 参考资料,您将看到音频会话只能由Media Player或Audio Recorder创建。
因此,您不能Noise Suppressor与Media Recorder. 但是Noise Suppressor可以由平台开发者根据MediaRecorder.AudioSource使用情况默认插入到捕获路径中。
无论如何,如果您仍然想尝试 Audio Recorder,那么我会说我已经尝试在Audio Recorder 中启用 NS 并且当我调用NoiseSuppressor.isAvailable()它时总是返回false。
| 归档时间: |
|
| 查看次数: |
5688 次 |
| 最近记录: |