自定义Android Producer推流KVS遇Invalid Codec Private Data异常
自定义Android KVS Producer推H.265流时Codec Private Data解析失败问题
实现背景
- 基于AmazonKinesisVideoDemoApp及aws-sdk-android中的ImageFileMediaSource、ImageFileMediaSourceConfiguration示例,实现自定义Android Producer
- AWS控制台显示数据推流正常:
问题详情
推流为H.265编码视频流,提取的**Codec Private Data(CPD)**如下:
00 00 00 01 40 01 0c 01 ff ff 01 40 00 00 03 00 80 00 00 03 00 00 03 00 78 ac 0c 00 00 0f a0 00 01 d4 c2 00 fa 28 00 00 00 01 42 01 01 01 40 00 00 03 00 80 00 00 03 00 00 03 00 78 a0 03 c0 80 10 e7 fa 2e ec 91 77 a2 5d 58 10 00 00 3e 80 00 07 53 0c 40 00 00 00 01 44 01 c1 ad f0 13 64
该CPD包含Video Parameter Set(VPS)、Sequence Parameter Set(SPS)、**Picture Parameter Set(PPS)**帧,每帧均以00 00 00 01开头。
在自定义MediaSource实现的getStreamInfo方法中创建StreamInfo对象时,将上述CPD以字节数组形式传入codecPrivateData参数:
new byte[]{0x00, 0x00, 0x00, 0x01, 0x40, 0x01, 0x0c, 0x01, (byte) 0xff, (byte) 0xff, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, (byte) 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x78, (byte) 0xac, 0x0c, 0x00, 0x00, 0x0f, (byte) 0xa0, 0x00, 0x01, (byte) 0xd4, (byte) 0xc2, 0x00, (byte) 0xfa, 0x28, 0x00, 0x00, 0x00, 0x01, 0x42, 0x01, 0x01, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, (byte) 0x80, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x78, (byte) 0xa0, 0x03, (byte) 0xc0, (byte) 0x80, 0x10, (byte) 0xe7, (byte) 0xfa, 0x2e, (byte) 0xec, (byte) 0x91, 0x77, (byte) 0xa2, 0x5d, 0x58, 0x10, 0x00, 0x00, 0x3e, (byte) 0x80, 0x00, 0x07, 0x53, 0x0c, 0x40, 0x00, 0x00, 0x00, 0x01, 0x44, 0x01, (byte) 0xc1, (byte) 0xad, (byte) 0xf0, 0x13, 0x64 },
同时创建StreamInfo时指定了NAL_ADAPTATION_ANNEXB_CPD_AND_FRAME_NALS标志,符合Annex-B格式的NALU分隔要求。
尽管完成上述设置,在KVS media viewer中仍出现以下错误:
"message": "Could not parse CPD in HEVC (H.265) format.", "code": "InvalidCodecPrivateDataException",
已准备10秒H.265测试视频,用于调试并验证CPD正确性。
内容的提问来源于stack exchange,提问作者Jernej Jerin
相关产品推荐
相关产品推荐

