将Jcodec H264编码的RTMP消息发送到Wowza

时间:2014-08-15 06:01:09

标签: streaming live rtmp wowza

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

1 个答案:

答案 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,如果你想看看它是如何完成的。