java rtp 分片_java實現RTP的h264分包發送

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值