MediaRecorder 输出文件中的比特率不正确?

问题描述 投票:0回答:1

我试图了解比特率在

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
}

为什么会这样?

android android-mediarecorder android-audiorecord
1个回答
0
投票

下面的代码在 Chrome 上运行良好

var options = { mimeType: 'video/webm; codecs=av1,opus', audioBitsPerSecond: 8000, videoBitsPerSecond: 32000 };

尝试为 videoBitsPerSeconds 设置更高的数字(例如 512000),您会发现视频质量更好

© www.soinside.com 2019 - 2024. All rights reserved.