【发布时间】:2013-03-07 16:38:05
【问题描述】:
我在 android 上遇到音频问题。
小问题:
我需要在所有 Android 设备上播放和录制 aac 格式的音频。
我发现它可以从 API 10 开始,但在我的 BLU 设备(2.3.5)上,它通过使用 MediaRecorder 和 MediaPlayer 工作。
但在 HTC Nexus One 上它不起作用。
你有什么建议吗?
长问题:
要以 AAC 格式录制和播放音频,我使用以下代码。它非常简单和愚蠢,但它适用于测试。
String pathForAppFiles = getFilesDir()
.getAbsolutePath();
pathForAppFiles += "/bla.mp4";
if (audioRecorder == null) {
File file = new File(pathForAppFiles);
if (file.exists())
file.delete();
audioRecorder = new MediaRecorder();
audioRecorder
.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder
.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
audioRecorder
.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
audioRecorder.setOutputFile(pathForAppFiles);
try {
audioRecorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
audioRecorder.start();
} else {
audioRecorder.stop();
audioRecorder.release();
audioRecorder = null;
new AudioUtils().playSound(pathForAppFiles);
}
new AudioUtils().playSound(pathForAppFiles); - 创建 MediaPlayer 并从文件中播放声音;
为了让它在 nexus 上工作,我尝试了 aac-decoder - 它不会播放文件到最后(仅播放 10 秒文件中的 6 秒)。而且它不会播放上面代码录制的声音。
我也尝试安装 FFmpeg,但我没有使这个库工作的经验。
那你能推荐点什么吗?
【问题讨论】:
-
aac-decoder 是 aacplayer 的短版。它不会将aac文件播放到最后,也不会播放设备录制的声音。
-
我找到了部分解决方案。 1. 在某些设备上未播放音频,因为我试图从文件 derectiory 播放它 - data/data/com.myapp.player/files/music.aac。 2. 在某些设备上它不工作,但 aacdecoder 可以播放文件到最后。只需将其设置为小缓冲区大小 AACPlayer aacPlayer = new MultiPlayer(clb, 200, 200);