Streaming 向Wowza发送Jcodec H264编码RTMP消息

Streaming 向Wowza发送Jcodec H264编码RTMP消息,streaming,live,rtmp,wowza,Streaming,Live,Rtmp,Wowza,我正在制作基于java的屏幕共享应用程序。我已经完成了使用JCodec java库将帧编码到H264中的工作。我有字节缓冲区中的图片数据。 我将如何通过rtmp客户端将这些编码帧发送到Wowza? Wowza能识别Jcodec库编码的H264编码帧吗?几乎所有“flash”媒体服务器都能理解流中的H264数据。您需要使用基线或主配置文件对帧进行编码,然后将编码的字节“打包”为flv流格式。第一步是创建AMF视频数据项,这意味着根据h264编码字节数组的“NALU”内容为其加前缀和后缀;在伪代码中

我正在制作基于java的屏幕共享应用程序。我已经完成了使用JCodec java库将帧编码到H264中的工作。我有字节缓冲区中的图片数据。 我将如何通过rtmp客户端将这些编码帧发送到Wowza? Wowza能识别Jcodec库编码的H264编码帧吗?

几乎所有“flash”媒体服务器都能理解流中的H264数据。您需要使用基线或主配置文件对帧进行编码,然后将编码的字节“打包”为flv流格式。第一步是创建AMF视频数据项,这意味着根据h264编码字节数组的“NALU”内容为其加前缀和后缀;在伪代码中,它看起来像这样:

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 如果idr flv[0]=0x17//0x10关键帧;0x07 h264编解码器id flv[1]=0x01//0序列头;1纳鲁;2序列的末尾 flv[2]=0//压力偏移 flv[3]=0//压力偏移 flv[4]=0//压力偏移 flv[5]=0//大小 flv[6]=0//尺寸控制 flv[7]=0//尺寸控制 flv[8]=0//尺寸控制 如果是编码片,则为else flv[0]=0x27 flv[1]=0x01 flv[2]=0//压力偏移 flv[3]=0//压力偏移 flv[4]=0//压力偏移 flv[5]=0//大小 flv[6]=0//尺寸控制 flv[7]=0//尺寸控制 flv[8]=0//尺寸控制 否则,如果PPS或SPS .... 跳过这里,因为它非常复杂,这是h264/AVC配置数据 副本(编码,0,flv,9,编码。长度) flv[flv.length-1]=0 下一步是将AMF视频数据打包到RTMP消息中。我建议您查看flazr或android rtmp库,了解这一步的详细信息

我有一个小的示例项目,它接受原始编码的h264并将其写入flv,如果您想了解它是如何完成的