我想提出基于屏幕共享Java应用程序。 我使用JCodec Java库与编码帧进行到H264。 我在字节缓冲图像数据。 我怎么会通过RTMP客户端这些编码的帧发送到Wowza? Wowza能认出H264编码的帧,通过Jcodec文库编码?
Answer 1:
几乎所有的“闪光”媒体服务器将理解流H264数据。 你需要与基线或主配置文件,然后“打包”的编码字节到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 这里 ,如果你想看看如何做。
文章来源: Sending Jcodec H264 Encoded RTMP Message to Wowza