gpt4 book ai didi

android - MediaCodec 创建输入表面

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:56 31 4
gpt4 key购买 nike

我想使用 MediaCodec 将 Surface 编码为 H.264。

使用 API 18,有一种方法可以通过调用 createInputSurface() 然后在该表面上绘制来对表面的内容进行编码。

我在 createInputSurface() 上遇到 IllegalStateException。这是额外的 logcat 输出:

D/H264Encoder(17570): MediaFormat: {frame-rate=25, bitrate=1000000, height=600, mime=video/avc, color-format=19, i-frame-interval=75, width=800}
D/NvOsDebugPrintf( 125): NvMMLiteOpen : Block : BlockType = 4
D/NvOsDebugPrintf( 125): NvRmPowerModuleClockControl on MOD[29] INST[0]
D/NvOsDebugPrintf( 125): NvRmModuleResetWithHold deassert MOD[29] INST[0]
D/NvOsDebugPrintf( 125): NvMMLiteBlockCreate : Block : BlockType = 4
I/ACodec (17570): setupVideoEncoder succeeded
E/OMXNodeInstance( 125): OMX_EnableAndroidNativeBuffers failed with error -2147479547 (0x80001005)
E/OMXNodeInstance( 125): createInputSurface requires AndroidOpaque color format
E/ACodec (17570): [OMX.Nvidia.h264.encoder] onCreateInputSurface returning error -38
W/MediaCodec(17570): createInputSurface failed, err=-38

任何关于新 API 工作原理的见解都会有所帮助。

最佳答案

重要的错误信息是这样的:

createInputSurface requires AndroidOpaque color format

对于 Surface 输入,您必须将颜色格式设置为 COLOR_FormatSurface(也称为 AndroidOpaque。)

查看示例 here ,尤其是 EncodeAndMuxTest。

关于android - MediaCodec 创建输入表面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845859/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com