CDN服务消息块的大小是可以设定和更改的,RTMP一般通过协议控制消息(后面会介绍到相关消息)来实现,可以设置的大小范围在128字节到65536字节之间,默认情况下是128字节。消息块的格式。
第一部分中的消息块类型指示了第二部分的编码格式,RTMP中定义了4种编码格式,这4种编码格式的长度分别为11字节、7字节、3字节和0字节。采用4种编码格式是为了压缩传输的字节数,使得一个消息块流中的多个同类型消息块可以共用某些头部字节,因此部分消息块采用较多字节的格式,部分消息块采用较少字节的格式。11字节的编码格式如图6-10所示。
长度为7字节的编码格式与11字节的相比,CDN服务不包含消息流ID,说明这个消息块的消息流ID与上一个消息块的消息流ID一致。长度为3字节的编码格式与11字节的相比,只保留了时间戳部分,使用这个格式的消息头说明消息块的消息流ID和消息长度都与上一个一致,消息长度为固定值的数据(比如音频流数据)可以使用这种编码格式。0字节的编码格式表示消息块的消息头与前一个完全一致,当只有单个消息发送时,被分割后的消息块(第一个消息块除外)可以使用这种类型的编码格式。
从消息块的格式看,CDN服务消息块本身的长度并没有在消息块中被定义。RTMP中消息块长度一般默认为128字节,如果要修改消息块的长度,需要客户端与服务器建立连接后通过发送信令来进行协商,理论上可以修改的最大长度为65536字节,这个长度值是指消息块负荷的长度,不包括前面的基本头、消息头和扩展时间戳三个部分。如果消息的长度超过了消息块的长度,消息需要被分割成几部分来装进消息块。比如消息的长度为2000字节,而消息块的长度为1500字节,所有消息需要被分成两部分,一部分1500字节,一部分500字节,最后变成两个消息块。