我正在制作基于java的应用程序的屏幕共享。我完成了使用JCodec java Library将帧编码到H264中。我在字节缓冲区中有图片数据。 我将如何通过rtmp客户端将这些编码的帧发送到Wowza? Wowza可以识别由Jcodec库编码的H264编码帧吗?
答案 0 :(得分:1)
几乎任何" flash"媒体服务器将了解流中的h264数据。您需要使用基线或主要配置文件对帧进行编码,然后" package"编码的字节为flv流格式。第一步是创建一个AMF视频数据项,这意味着基于它的" NALU"为h264编码的字节数组添加前缀和后缀。内容;在伪代码中它看起来像这样:
if idr flv[0] = 0x17 // 0x10 key frame; 0x07 h264 codec id flv[1] = 0x01 // 0 sequence header; 1 nalu; 2 end of seq flv[2] = 0 // pres offset flv[3] = 0 // pres offset flv[4] = 0 // pres offset flv[5] = 0 // size flv[6] = 0 // size cont flv[7] = 0 // size cont flv[8] = 0 // size cont else if coded slice flv[0] = 0x27 flv[1] = 0x01 flv[2] = 0 // pres offset flv[3] = 0 // pres offset flv[4] = 0 // pres offset flv[5] = 0 // size flv[6] = 0 // size cont flv[7] = 0 // size cont flv[8] = 0 // size cont else if PPS or SPS .... skipping this here as its really complicated, this is the h264/AVC configuration data copy(encoded, 0, flv, 9, encoded.length) flv[flv.length - 1] = 0
下一步是将AMF视频数据打包成RTMP消息。我建议您查看flazr或其中一个android rtmp库,了解此步骤的详细信息。
我有一个小示例项目,它采用原始编码的h264并将其写入flv here,如果你想看看它是如何完成的。