小编Pie*_*iet的帖子

如何检查Android MediaCodec是否支持恒定质量模式

我有一个屏幕录制应用程序,它使用MediaCodec编码器对视频帧进行编码.这是我检索视频编码器的一种方法:

videoCodec = MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_VIDEO_AVC);
Run Code Online (Sandbox Code Playgroud)

然后我尝试确定此编码器支持的最佳比特率模式,我的优先顺序是"恒定质量"模式,可变比特率模式,恒定比特率模式.这是我尝试这样做的方式:

MediaCodecInfo.CodecCapabilities capabilities = videoCodec.getCodecInfo().getCapabilitiesForType(MediaFormat.MIMETYPE_VIDEO_AVC);
MediaCodecInfo.EncoderCapabilities encoderCapabilities = capabilities.getEncoderCapabilities();

if (encoderCapabilities.isBitrateModeSupported(MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CQ)) {
    Timber.i("Setting bitrate mode to constant quality");
    videoFormat.setInteger(MediaFormat.KEY_BITRATE_MODE, MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CQ);
} else if (encoderCapabilities.isBitrateModeSupported(MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_VBR)) {
    Timber.w("Setting bitrate mode to variable bitrate");
    videoFormat.setInteger(MediaFormat.KEY_BITRATE_MODE, MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_VBR);
} else if (encoderCapabilities.isBitrateModeSupported(MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CBR)) {
    Timber.w("Setting bitrate mode to constant bitrate");
    videoFormat.setInteger(MediaFormat.KEY_BITRATE_MODE, MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CBR);
}
Run Code Online (Sandbox Code Playgroud)

在我的三星Galaxy S7上运行它最终选择VBR模式,即据说不支持恒定质量模式.但是,如果我只是将BITRATE_MODE设置为恒定质量,它不仅可以工作,而且实际上可以产生比VBR模式更高质量的视频.

因此,如果此编码器显然支持恒定质量模式,为什么我会从isBitrateModeSupported()获得误报?我在这里错过了什么吗?

android video-capture video-encoding mediacodec

8
推荐指数
1
解决办法
814
查看次数

配置AVCaptureSession的私有AudioSession

我的用例如下:我正在尝试将 AVCaptureSession 的音频录制添加到应用程序中。该应用程序可能会播放音乐/声音,但我不想更改有关该应用程序的 AVAudioSession 的任何内容。即,共享音频会话可能具有与 PlayAndRecord 不同的类别。所以,没问题,我可以usesApplicationAudioSession在 AVCaptureSession 上设置为 false,它将使用与应用程序的音频会话不同的新 AudioSession。然而,文档指出,这

如果您的应用程序使用自己的音频会话进行播放,则可能会导致中断。

确实如此。我的问题是:有没有办法访问 AVCaptureSession 的私有音频会话(并以与其他音频源混合的方式配置它)?正如我所说,对于这种情况,我不想更改应用程序共享音频会话配置的任何内容。

任何帮助或提示将不胜感激。

audio ios avcapturesession avaudiosession

5
推荐指数
0
解决办法
161
查看次数