我在Android上遇到音频问题。
简短问题:
我需要以aac格式播放和录制所有Android设备的音频。
我发现可以从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,但我没有经验让这个库工作。
你能推荐什么吗?
答案 0 :(得分:1)
我通过将音频类型更改为MP3来解决此问题,因为某些设备(如Kindle Fire)无法从任何地方播放aac。
我的建议是: 如果你想制作跨平台的声音 - 使用MP3。您可以使用lame encoder将任意声音转换为MP3。