RTMP协议蓝牙传输数据
RTMP传统定义
rtmp协议中基本的数据单元被称为消息(message)结构一般为:
- 时戳:4 byte,单位毫秒。超过最大值后会翻转。
- 长度:消息负载的长度。
- 类型ID:Type Id 一部分ID范围用于rtmp的控制信令。还有一部分可以供上层使用,rtmp只是透 传。这样可以方便的在rtmp上进行扩展。
- 消息流ID:Message Stream ID,用于区分不同流的消息。
消息在网络中传输时,会被分割成很多小的消息块,进行传输,增加传输的效率,而这些消息块是由消息头+消息体组成,消息头就是制定的标识消息的协议,消息体就是所传输的消息内容。
RTMP在蓝牙中的定义
手机蓝牙传输数据,无法保证双方手机时间同步,因此刨除时间戳定义改为固定字符串,因此messageHeader定义为:
struct message_header
{
uint32_t magic;//magic number, 0x98765432
uint32_t total;//包长度,从这一字段头算起
uint32_t msgid;//消息ID
uint32_t seqnum;//客户端使用,自增量
uint32_t version;//协议版本,目前为1
};
将需要传输的数据添加message_header
//GPBMEssage为protobuf库里的类,请参考上篇文章
-(NSMutableData*)returnData:(GPBMessage*)req messageId:(int)messageId {
NSString