- 论坛徽章:
- 0
|
关于视频流的传输我也有了进一步的了解和掌握,主要流程是: DSP编码->存到buffer->取出buffer视频流数据->加入时间戳等信息->JRtpLib分段发送->PC应用端 那么终点就在于取出的buffer数据如何加入附加信息,打包成JRtp数据发送出去的呢? GO,GO!
 来看一个重要的数据结构:
- struct RTP_EXTENT_INFO
-
{
-
u16 segNum;
-
u16 segIndex;
-
u32 frameLength;
-
unsigned long long pts;
-
unsigned long long segSn;
-
u16 flag;
-
};
他列举了一些RTP的额外的数据信息。 H.264 分两层结构,包括视频编码层(VCL)和网络适配层(NAL) 。 视频编码层的主要任务是用高效的编码方式表述视频数据,也就是进行视频数据的压 缩;处理的是块、宏块和 slice 的数据,这些都是 slice 结构以下的数据;并尽量做到与网络 适配层独立,它是视频编码的核心,其中包含许多实现错误恢复的工具。 网络适配层则根据网络的特性对数据进行封装打包,把 VCL 层产生的比特串适配到不 同的网络和复用环境,使其适于网络传输。网络适配层处理的是 slice 结构以上的数据。
过程流图:

//SendPacketEx-第一个参数是要被发送的数据,而第二个参数则指明将要发送数据的长度,再往后依次是RTP负载类型、标识和时戳增量,后面是附加信息 int rt = SendPacketEx(buffer , SEGMENT_LENGTH, _pt, bSync, TimStampInc, 0, info, sizeof(RTP_EXTENT_INFO)/4);
|
|