private void sendData(byte[] r, int h264len)throws IOException {
memset(sendbuf, 0, 1500);
sendbuf[1] = (byte) (sendbuf[1] | 96); // 負載類型號96,其值為:01100000
sendbuf[0] = (byte) (sendbuf[0] | 0x80); // 版本號,此版本固定為2
sendbuf[1] = (byte) (sendbuf[1] & 254); //標志位,由具體協議規定其值,其值為:01100000
sendbuf[11] = 10;//隨機指定10,並在本RTP回話中全局唯一,java默認采用網絡字節序號 不用轉換(同源標識符的最后一個字節)
if (h264len <= packageSize) {
sendbuf[1] = (byte) (sendbuf[1] | 0x80); // 設置rtp M位為1,其值為:11100000,分包的最后一片,M位(第一位)為0,后7位是十進制的96,表示負載類型
System.arraycopy(intToByte(seq_num++), 0, sendbuf, 2, 2);//send[2]和send[3]為序列號,共兩位
{
// java默認的網絡字節序是大端字節序(無論在什么平台上),因為windows為小字節序,所以必須倒序
/**參考:
* http://blog.csdn.net/u011068702/article/details/51857557
* http://cpjsjxy.iteye.com/blog/1591261
*/
byte temp = 0;
temp = sendbuf[3];
sendbuf[3] = sendbuf[2];
sendbuf[2] = temp;
}
// FU-A HEADER, 並將這個HEADER填入sendbuf[12]
sendbuf[12] = (byte) (sendbuf[12] | ((byte) (r[0] & 0x80)) << 7);