【问题标题】:Sending Jcodec H264 Encoded RTMP Message to Wowza向 Wowza 发送 Jcodec H264 编码的 RTMP 消息
【发布时间】:2015-01-01 00:48:44
【问题描述】:

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

【问题讨论】:

    标签: streaming live rtmp wowza


    【解决方案1】:

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

    如果 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 if 编码切片 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 here,如果你想看看它是如何完成的。

    【讨论】:

      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 2013-09-04
      • 2012-06-14
      • 2015-04-30
      • 2011-09-12
      • 2013-07-28
      • 2019-09-16
      相关资源
      最近更新 更多