【发布时间】:2012-11-11 19:09:20
【问题描述】:
我的应用以 amr 格式录制音频。它在某些设备上运行良好,但在其他设备上却无法在通话期间录制音频。从录制的文件中,您可以清楚地看出录制没问题,您可以听到所有声音,直到电话开始响起,然后音频被静音。
这是在运行 ICS 4.0.4 的三星 GT-I9000 上观察到的,而在我的 htc 上它运行良好。
这是我设置录音机的方法:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
final String path = getRecordingAbsPath();
mRecorder.setOutputFile(path);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.prepare();
mRecorder.start();
【问题讨论】:
-
是的,这似乎是一个类似的问题,但我看到他们只是假设它依赖于平台。我想知道我应该如何在三星设备上录制音频而不会出现这个问题。我愿意将格式从 amr 更改为其他格式。
-
正如我在回答另一个问题时所写的那样,在某些设备上可能根本不可能。我已经在一堆 Android 手机上研究过音频 HAL,所以这不仅仅是一个空洞的假设。最有可能成功的格式(除了您已经尝试过的 AMR_NB 之外)可能是 8 kHz 单声道 16 位 PCM。
-
感谢@Michael 所以 pcm 这对应于常量 mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);正确的?我是否也应该更改这一行 mRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);?希望这会奏效。
标签: android audio-recording samsung-mobile android-mediarecorder