我想使用MediaCodec将Surface编码到H.264中。
使用API 18,有一种方法可以通过调用createInputSurface()并在该曲面上进行绘图来从图面编码内容。
我得到了IllegalStateException on createInputSurface()。下面是额外的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如何工作的见解都会有帮助。
发布于 2013-07-24 22:35:52
重要的错误消息是:
createInputSurface requires AndroidOpaque color format对于曲面输入,必须将颜色格式设置为COLOR_FormatSurface (也称为AndroidOpaque)。
参见示例这里,特别是EncodeAndMuxTest。
https://stackoverflow.com/questions/17845859
复制相似问题