android - 如何在配置前获得 MediaCodec 的最大分辨率

标签 android android-mediacodec encoder-decoder

我的应用程序创建了多个 MediaCodec 实例它们作为视频/音频解码器和编码器并行工作。

我知道视频编解码器有限制缓冲区空间,这个限制取决于设备。

例如,在 Samsung SM-P600 选项卡上,我可以创建四个分辨率为 720p 的 MediaCodec:

1280*720*4=3686400

但不是五个:

1280*720*5=4608000

因为编解码器在配置过程中会返回错误:

E/OMX:  setParam  sum(4608000) > max resolution(4177920)
E/ACodec: [OMX.Exynos.AVC.Encoder] failed to set input port definition parameters.
E/ACodec:  configureCodec multi window instance fail  appPid : 17054
E/ACodec: [OMX.Exynos.AVC.Encoder] configureCodec returning error -1021
E/ACodec: signalError(omxError 0x80001001, internalError -1021)
E/MediaCodec: Codec reported err 0xfffffc03, actionCode 0, while in state 3
E/MediaCodec: configure failed with err 0xfffffc03, resetting...

在配置 MediaCodec 以计算我需要的所有 MediaCodec 的最大可用分辨率之前,如何获得最大分辨率 (4177920)

最佳答案

尝试在MediaCodecInfo.CodecCapabilities中使用getMaxSupportedInstances()。 https://developer.android.com/reference/android/media/MediaCodecInfo.CodecCapabilities.html

或 isSizeSupported(int width, int 高度)在 MediaCodecInfo.VideoCapabilities 中。 https://developer.android.com/reference/android/media/MediaCodecInfo.VideoCapabilities.html

关于android - 如何在配置前获得 MediaCodec 的最大分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44902334/

相关文章:

android - 在 Android 上清除剪贴板

安卓 JSON 对象

android - Firebase 函数响应返回 null

java - 智能转换为 'ObserverT!!' 是不可能的,因为 'item.get()' 是一个复杂的表达式

android - MediaCodec 的 presentationTimeUs 有什么用?

安卓 MediaExtractor readSampleData IllegalArgumentException

android - 使用 renderscript 进行处理,使用 mediacodec 进行编码

java - 如何在 windows 下将 Ffmpeg 扩展嵌入到 Exoplayer 中?

huggingface-transformers - 如何使用拥抱面部转换器为翻译任务训练编码器-解码器模型?