我试图了解比特率在
MediaRecorder
中的工作原理
我设置了例如 192 kbps:
MediaRecorder.setAudioEncodingBitRate(192000)
但是当我从 MediaStore(或 Android/PC 上的任何其他软件)检索录音的比特率时,我总是得到更高的值:
获取比特率194411
private fun getBitrate(context: Context, uri: Uri): Int? {
try {
context.contentResolver.query(
uri,
arrayOf(MediaStore.MediaColumns.BITRATE),
null, null, null
)?.use { cursor ->
var bitrate: Int? = null
var duration: Long? = null
if (cursor.moveToFirst()) {
val bitrateColumnIdx = cursor.getColumnIndex(MediaStore.MediaColumns.BITRATE)
if (bitrateColumnIdx != -1) {
return cursor.getIntOrNull(bitrateColumnIdx).also {
Timber.d("getBitrate $it")
}
}
}
}
} catch (e: Throwable) {
e.printStackTrace()
}
return null
}
为什么会这样?
下面的代码在 Chrome 上运行良好
var options = { mimeType: 'video/webm; codecs=av1,opus', audioBitsPerSecond: 8000, videoBitsPerSecond: 32000 };
尝试为 videoBitsPerSeconds 设置更高的数字(例如 512000),您会发现视频质量更好