rtmp实现音频频点播之服务篇

1 握手

     adobe修改了握手部分的协议,但是没有公开。根据rtmp specification 1.0里面的握手过程,flash player是播不了h264编码的视频。修正后的握手协议可以参照:http://blog.csdn.net/winlinvip/article/details/7714493

2 rtmp 包格式

     rtmp 使用块(chunk)的概念来发送数据,默认的块大小是128(不包括头部数据大小),如果要发送的数据超过了设定的块大小,就要分为多块进行发送。rtmp chunk的总体格式如下所示,rtmp chunk头部信息包括三部分:基本头,消息头,扩展时间戳。
+----------------+--------------------+-------------------------+----------------+
| Basic Header | Message Header | Extended Timestamp |  Chunk Data  |
+----------------+--------------------+-------------------------+----------------+
|                                                                                   |
|<------------------- Chunk Header ------------------------->|

2.1 rtmp chunk basic header

     rtmp 块的基本头包手两个信息:块格式(chunk format) 和 块流ID(chuck stream id)
  0  1 2  3   4  5  6  7
+-+-+-+-+-+-+-+-+
| fmt |   cs id           |
+-+-+-+-+-+-+-+-+
     fmt: rtmp块头的格式,有4种类型
     cs_id:
cs_id 块流ID 基本头的长度(字节)
>=2 cs_id 1
0 【第二字节的值】 + 64 2
1 【第三字节的值】*256+【第二字节的值】+64 3

2.2 rtmp message header

     rtmp 消息头一般包括:时间戳(3Bytes),消息长度(3Bytes),消息类型(1Byte),消息流Id(4Bytes)。
但是并不总是会包含这些信息。但是可以根据块基本头的fmt,来判断消息头中包含了哪些信息(如表格所示)。
 0                          1                            2                          3
0  1  2  3 4  5  6 7  8 9 0  1  2  3  4 5  6 7  8  9 0  1 2  3 4 5  6  7  8 9  0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   timestamp                                                   |   message length      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     message length (cont)                  |  message type id |  msg stream id         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           message stream id (cont)                                    |
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值