下面的代码A来自示例项目。
它使用代码B记录语音并将其保存为文件。
码B
setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
setAudioEncoder(MediaRecorder.AudioEncoder.AAC)您知道,getExtensionText()将返回两种音频格式,mp3或m4a由用户设置,有不同的音频格式。
我不知道为什么作者只能使用代码B生成两个不同的音频格式文件。
MediaRecorder能否在Android中将声音保存为mp3或m4a音频格式文件,自动基于文件扩展名?
码A
// mp4 output format with aac encoding should produce good enough m4a files according to https://stackoverflow.com/a/33054794/1967672
private fun startRecording() {
val baseFolder = if (isQPlus()) {
cacheDir
} else {
val defaultFolder = File(config.saveRecordingsFolder)
if (!defaultFolder.exists()) {
defaultFolder.mkdir()
}
defaultFolder.absolutePath
}
currFilePath = "$baseFolder/${getCurrentFormattedDateTime()}.${config.getExtensionText()}"
recorder = MediaRecorder().apply {
setAudioSource(MediaRecorder.AudioSource.CAMCORDER)
setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
setAudioEncodingBitRate(128000)
setAudioSamplingRate(44100)
...
}
class Config(context: Context) : BaseConfig(context) {
...
fun getExtensionText() = context.getString(when (extension) {
EXTENSION_M4A -> R.string.m4a
else -> R.string.mp3
})
}发布于 2021-04-16 18:13:59
实际上,他们已经在SettingsActivity.kt中定义了文件扩展名,但是您可以在扩展名中使用文件名。实际上,在这段代码中,您可以使用支持的媒体格式的任何扩展。
mediaRecorder = MediaRecorder()
output = Environment.getExternalStorageDirectory().absolutePath + "/recording.mp3"
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC)
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
mediaRecorder.setOutputFile(output)https://stackoverflow.com/questions/66979105
复制相似问题