记录.m4a文件Android

5

如何在Android 2.2中使用MediaRecorder录制M4A音频文件?

我需要设置什么输出格式、编码器和采样率?

我需要从麦克风录制并将其保存在SD卡中。

更新

我尝试了这段代码,但结果无效(例如不能在浏览器中播放):

recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // error here ?!?
recorder.setAudioSamplingRate(96000); // what value ?
3个回答

16

以下代码可以生成一个m4a文件:

    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC);
或者
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

带有

    mRecorder.setAudioChannels(1);
    mRecorder.setAudioSamplingRate(44100);
    mRecorder.setAudioEncodingBitRate(96000);
    mRecorder.setOutputFile(absFilePath);// must have an .m4a extension

但是对于ContentValues,你只能使用put(MediaStore.Audio.Media.MIME_TYPE, "audio/aac"),这样它将创建带有.aac扩展名的文件,而不是.m4a - undefined

2

我已经设置了MediaRecorder.OutputFormat.MPEG_4。第二个链接是关于3GP格式的。为什么如果我尝试从浏览器中读取它(从sdcard导出后),它不起作用?同时,VLC无法播放它,而Android播放器可以! - enfix

1
尝试一下,改变

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

to

recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接