Qt截屏 X265lib编码 rtsp请求 rtp流发送 (rtp)实现





我们把x265编码后的数据称作一个nal包.因为交换机的MTU一般为1500大小,也就是说如过一个数据包大小超过1500就应该对这个数据进行切分.切分后的数据发送到客户端是无法识别的,所以我们需要对切分的数据包添加头部标识,让客户端有标识可以识别这是个什么数据包.这就叫x265 的 nal fu分包.

nal头:

2020-01-12 16-32-02屏幕截图.png

F位: 16位只能为0;
Type:7位nal类型位; 
LayerId 6位:保留位值为0;
TID:为0是非法的;

fu切片:

2020-01-12 17-26-18屏幕截图.png

PayloadHdr :16位 值为49表示fu分包
Fu head: 8位 如下图
2020-01-12 17-03-07屏幕截图.png

S位:第一个fu分片时为1;
E位:最后一个fu分片时为1,其余分片为0;
FuType:原来的nal type值;

2020-01-12 17-46-47屏幕截图.png

可以看出rtp头是4*32=128 bit;
v:版本号2位,现在是2版也就是0b10;
P:位1位 0b0
X:位1位 0b0
M:位1位 一组gop最后一包时设置1
PT:位8位 h265/h264值为96
sequence number: 16位技术器,fu分片时从第一个分片到最后一个分片的值不变.换句话说就是每一帧自增1;
timestamp:媒体时间戳算法为:波特率/每秒帧数*当前帧数.
SSRC:唯一标识_可能不对但是并没有影响到我的需求
CSRC:唯一标识_可能不对但是并没有影响到我的需求


代码:
https://github.com/wangqinfeng511/x265_encoder

你可能感兴趣的:(Qt截屏 X265lib编码 rtsp请求 rtp流发送 (rtp)实现)