Sye*_*aan 0 android android-layout android-mediaplayer android-mediarecorder android-studio
我正在尝试使用媒体记录器在 android 中录制音频。它适用于 3gp 音频,但是当我尝试使用 aac 格式的相同代码时,它失败了。(这是我的 aac 格式代码):
final String outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.acc";
final MediaRecorder myAudioRecorder = new MediaRecorder();
myAudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AAC_ADTS);
myAudioRecorder.setOutputFile(outputFile);
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(outputFile);
mediaPlayer.prepare();
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)
我已经添加了权限,我正在使用按钮正确触发这些功能。我在这里只写了主要代码只是为了简单 我的问题:
以 aac 格式录制和播放声音的正确方法是什么?
使用媒体记录器和媒体播放器在 android 中录制和播放音频的最佳格式是什么,我该如何实现?我尝试使用 3gp,但它的声音质量很低。
解决了
我终于找到了自己录制高质量音频的正确工作解决方案。为了获得高质量的录音,您需要进行以下修改:
使用 .m4a 扩展名保存文件。
final String outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.m4a";
并做
myAudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
myAudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myAudioRecorder.setAudioEncodingBitRate(16*44100);
myAudioRecorder.setAudioSamplingRate(44100);
Run Code Online (Sandbox Code Playgroud)
stackoverflow 上的许多解决方案都会建议,.setAudioEncodingBiteRate(16)
但 16 太低并且毫无意义。
来源:@Grant 回答 stackoverflow使用 MediaRecorder 在我的 droidx 上录制的音频质量很差,为什么?
编辑:我想用 .aac 扩展名保存文件的唯一原因是我假设 .aac 文件会更清晰,但由于我能够在没有 .aac 扩展名的情况下以高质量保存文件,因此没有必要去做。
归档时间: |
|
查看次数: |
2661 次 |
最近记录: |