多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 4.2 视频数据编码 **接口定义**: DWORD MediaCodec_VideoCodec_Encode(MediaCodecContext* lpContext, MediaPacket* InPacket, MediaPacket* OutPacket); **返 回 值**:编码成功返回 0,否则返回出错代码,或-1 **参 数** : MediaCodecContext* lpContext CODEC 上下文句柄 MediaPacket* InPacket 输入数据包,指向视频帧 YUV 数据 MediaPacket* OutPacket 输出数据包,返回编码后的视频流 **详细说明**: AnyChat 内核每次输入一帧完整的图像数据,编码完成后,CODEC 内部将编码后的数据保存在“OutPacket”所指向的内存空间,并将“OutPacket”中的“dwSize”修改为实际输出的数据长度。 当 视 频 编 码 CODEC 输 出 的 数 据 是 关 键 帧 时 , 标 志 域 需 要 设 置“ MEDIACODEC_FLAGS_KEYFRAME ”标志 ( 当 初 始 化 编 码 器 时 设置MEDIACODEC_FLAGS_WANTSPSPPS 标志后,AnyChat 内核会自动探测帧类型并设置关键帧标志)。 AnyChat 内核要求编码器能定期输出关键帧(如 H.264 的 IDR 帧,同时包含 PPS、SPS 等 NAL 信息),输出间隔可参考 CODEC 上下文句柄中的 dwGopSize 参数值,如果 CODEC 不能定期输出关键帧,则可能导致对方接收到视频流之后无法正常解码。