AudioRecord 文件有点大
Posted
技术标签:
【中文标题】AudioRecord 文件有点大【英文标题】:AudioRecord file size is a little large 【发布时间】:2017-03-05 01:20:38 【问题描述】:我正在为此苦苦挣扎,我更改了比特率以减小录制文件大小,我的应用程序正确地将音频文件发布到服务器,但我想最小化文件大小,这是我的录制代码
private void startRecording() throws IOException
String state = android.os.Environment.getExternalStorageState();
if (!state.equals(android.os.Environment.MEDIA_MOUNTED))
throw new IOException("No SD mounted. It is" + state
+ ".");
mRecorder = new MediaRecorder();
mRecorder.setAudiosource(MediaRecorder.AudioSource.MIC);
mRecorder.setAudioSamplingRate(44100);
mRecorder.setAudioEncodingBitRate(44100);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
File path = new File(Environment.getExternalStorageDirectory()
.getPath());
if (!path.exists() && !path.mkdirs())
throw new IOException("The file directory is invalid.");
else
try
archivo = File.createTempFile("audio", ".3gp", path);
catch (IOException e)
mRecorder.setOutputFile(archivo.getAbsolutePath());
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
try
mRecorder.prepare();
catch (IOException e)
Log.e(LOG_TAG, "prepare() failed");
mRecorder.start();
我现在 1 分钟的录音大约是 336 kb,我想 将其降低到每分钟 100 - 200 kb 左右而不会丢失 质量很好
【问题讨论】:
我挑战您找到任何编解码器(aac、mp3、flac...)的音频文件,您可以从该文件中以您要求的比特率(100 - 200 kb 每分钟)...为了获得合理的音频质量,您需要每秒钟而不是每分钟...这与移动流媒体无关,其纯粹的信息理论...每秒更多比特意味着音频曲线的锯齿状和耳朵更容易...接受增加的比特率或降低质量...我建议您尝试每个样本的 8 位深度,而不是每个样本 16 位的典型默认值,单声道 嗨@ScottStensland,我更改了值和压缩器,我以 335 kbs / 分钟的速度运行,这是合理的,而且质量仍然很好 问题是,对于一个主要使用音频作为源的应用程序,我不想在音频上每月浪费 TB 或 GB,我认为还有另一种方式@ScottStensland 【参考方案1】:您可以尝试几件事。
1) 使用 AMR(自适应多速率)进行更高的压缩:
recorder.setAudioEncoder(mRecorder.AudioEncoder.AMR_NB);
AMR Wideband 和 AMR Narrowband 是设备用于电话呼叫的编码方法。可能没有您需要的质量。
2) 使用单声道 1 声道:
mRecorder.setAudioChannels (1)
// Sets the number of audio channels for recording. Call this method before
// prepare().
// Usually it is either 1 (mono) or 2 (stereo).
【讨论】:
质量是损失,不是我想要的:( 你能否添加第 (3) 项,它显示了如何使用 8 位深度而不是典型的默认每个样本 16 位的默认值 AudioFormat 类允许您设置 ENCODING_PCM_8BIT 和 ENCODING_PCM_16BIT。这可以被 AudioTrack 和 AudioRecord 使用。这可能不适用于 MediaRecorder。此外,每个样本 8 位在某些设备上可能无法正常工作。以上是关于AudioRecord 文件有点大的主要内容,如果未能解决你的问题,请参考以下文章
以最小文件大小连续录制。 AudioRecord 或 MediaRecorder?
Android:AudioRecord 一个波形,单声道文件
Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能
无法在 Android 中播放使用 AudioRecord 录制的 pcm 文件