当前位置: 首页 > 知识库问答 >
问题:

如何在Android中使用MediaRecder录制高质量的音频?

江阳羽
2023-03-14

我正在尝试使用媒体录制器在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();

我已经添加了权限,我正在使用按钮正确触发这些功能。我在这里只写了主要代码,只是为了简化我的问题:

以aac格式录制和播放声音的正确方法是什么?

在Android系统中,使用media recorder和media player录制和播放音频的最佳格式是什么?我该如何实现它?我试过使用3gp,但它的音质很低。

共有2个答案

曾航
2023-03-14

如果使用audioRecord对象而不是mediaRecorder对象,则您可以更自由地自定义录制和编码麦克风输出的方式。

不过,如果你想坚持使用mediaRecorder对象,那么我建议使用AAC_ADTS作为音频编码器,并允许输出格式THREE_GPP。

否则,这可能有助于您对原始AAC文件进行编码:

如何使用Android MediaCodec生成AAC ADTS基本流

田瀚
2023-03-14

解决了

我终于找到了正确的解决方案,可以自己录制高质量的音频。以下是您需要进行的几项修改,以获得高质量的录音:

使用保存文件。m4a扩展<代码>最终字符串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);

许多关于stackoverflow的解决方案都建议。SetAudioEncodingBitrate(16)但16太低,没有意义。

来源:@Grant answer on stackoverflow使用MediaRecorder在我的droidx上录制的音频质量非常差,为什么?

编辑:我想保存文件的唯一原因。aac扩展是我的假设。aac文件会更清晰,但因为我能够以良好的质量保存文件,而不必担心。aac分机没必要这么做。

 类似资料:
  • 输出Mp3 打开D:\data\test\n音频\mp3\8777828760-e5749e4c563bf5411c95442085d1ce1@10.58.13.40.mp3 MP3文件波形格式:MpegLayer3 8000Hz2通道每个样本0位 长度:3119616字节:00:01:37.4880000 ID3v1标记:无 ID3v2标记:无

  • 我正在为android开发一个音乐钢琴应用程序,在这个应用程序中我想记录用户通过点击钢琴按钮播放的声音。我在用soundpool弹钢琴。现在,对于录音,android给了我们两个API:MediaRecorder和AudioreCorder。但是对于这两者,我们都必须设置mediareCorder.audioSource。我不想从麦克风录制声音,因为用户声音可以包括在内,更重要的是录音质量下降。然

  • 问题内容: 有一些方法可以在Android Wear上录制音频吗?我使用了AudioRecord API,它使应用程序崩溃。 难道我做错了什么? 问题答案: 支持AudioRecord,并且可以在Android Wear上使用。如果要在仿真器上进行测试,则可能是不支持您提供的采样率11025,请尝试另一种,例如8000。 构造AudioRecord之后,您应在尝试记录之前检查状态以确认初始化是否成

  • 我想在我的Android应用程序中的exoplayer中播放HLS视频。下面是代码- 它工作正常,但我无法添加质量控制。HSL流有不同的质量格式,如249p,360p,480p,但我无法选择轨道。我应该在哪里更改代码?

  • 我的目标是暂停录制文件。我在Android开发者网站上看到了它的但Media Recorder并没有暂停选项。 Java支持以编程方式合并两个音频文件,但在android中不起作用。 从Java中加入两个WAV文件? 而且我还使用了默认设备录音机应用程序,该应用程序适用于所有设备,但在三星中,很少有设备没有返回录制路径。 任何一个帮助语音录音暂停功能。

  • 比较很简单:我用使用CameraManager的自定义相机拍照。然后,我用默认的Galaxy Note 5相机拍摄同一张照片。CameraManager可用的最大尺寸是1836年的3264,所以我使用它,并将三星相机的分辨率设置为相同的分辨率。结果 注5:我可以在照片中看到细节 相机经理:我看不到细节。图像质量很低。 然后我尝试将CameraManager照片设置为 仍然没有变化。嗯,只有一个变化