Tôi muốn sử dụng MediaCodec để mã hóa một Bề mặt thành H.264.MediaCodec createInputSurface
Với API 18 có cách mã hóa từ bề mặt bằng cách gọi hàm createInputSurface() và vẽ trên bề mặt đó.
Tôi nhận được IllegalStateException trên createInputSurface(). Đây là đầu ra logcat bổ sung:
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
Bất kỳ thông tin chi tiết nào về cách hoạt động của api mới sẽ hữu ích.
Cảm ơn điều đó đã giúp ích rất nhiều! Tôi cho rằng nó có liên quan đến điều này nhưng không thể tìm thấy bất kỳ thứ gì trên AndroidOpaque – Broatian