美文网首页
如何实现H.265的RTP的封装及传输?

如何实现H.265的RTP的封装及传输?

作者: 码农修仙 | 来源:发表于2021-03-11 09:12 被阅读0次

一、RTP协议概述

RTP(Real-time Transport Protocol)实时传输协议,由IETF的多媒体传输工作小组发布的网络传输协议,标准为RFC3550/3551。RTP协议支持TCP和UDP两种传输方式,RTP协议负责对流媒体数据进行封包并实现媒体流的实时传输,但并不能为按顺序传送的数据包提供可靠的传送机制,也不提供流量和拥塞控制,这些是依靠RTCP协议来完成的,两者配合使用。本文主要从数据处理的角度实现对H.265的RTP封装进行详细介绍。

二、RTP协议解析

RTP协议是由RTP Header和RTP Payload两部分组成的,具体如下图所示:

RTP Header RTP Payload

1、RTP Header

rtp header.png

RTP头部前12个字节的含义是固定的,具体的含义如下所示:
V:RTP协议的版本号,占2位,当前协议版本号为2。
P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。
X:扩展标志,占1位,如果X=1,则在RTP报头后有一个扩展头。
CC:CSRC计数器,占4位,指示CSRC 标志符的个数。
M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。
PT: 有效荷载类型,占7位,用于说明RTP报文中有效载荷的类型。
sequence number:序列号,占16位,用于表示发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。这个字段当下层的承载协议用UDP的时候,网络状况不好的时候可以用来检查丢包。同时出现网络抖动的情况可以用来对数据进行重新排序,序列号的初始值是随机的,同时音频包和视频包的sequence是分别计数的。
timestamp:相对时间戳,占32位,反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。
SSRC:同步信源标识符,占32位,用于标志同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
CSRC:特约信源标志符,每个CSRC标识符占32位,可以有0~15个。每个CSRC表示了包含在该RTP报文有效载荷中的所有特约信源。

2、RTP Payload

(1) 单个NALU包模式


PayloadHdr:单包模式下其值为H.265的NALU Header。

NAL unit payload data:负载数据。

示例:

[00 00 00 01 40 01 0c 01 ff ff 01 60 70 82......]

以上为一个H.265 NALU单元VPS,按单包封装为RTP格式如下:

[RTP Header] [40 01 0c 01 ff ff 01 60 70 82......]

即NALU单元去掉开始头,直接作为RTP Payload加上RTP Header进行发送即可。

(2)分包模式


PayloadHdr:与H.265 NALU Header结构一致,只是修改了其中的Type类型,Type=49。

FU header:具体组成如下所示

S:1bit,值为1表示分包开始,其余情况为0。

E:1bit,值为1表示分包结束,其余情况为0。

FUType:等于H.265 NALU Header中的Type类型。

[00 00 00 01 26 01 af 1d 78 06 90 ......]

开始包:

[RTP Header] [62 01 93 ......]

中间包:

[RTP Header] [62 01 13 ......]

结束包:

[RTP Header] [62 01 53 ......]

三、H265封装示例

读取一个H.265文件,封装为RTP协议格式进行传输,具体实现如下所示:
(1)单包模式

(2)分包模式

开始包:

中间包:

结束包

相关文章

  • Android:PS流解码(Java)

    RTP被划分在传输层,它建立在UDP上。同UDP协议一样,为了实现其实时传输功能,RTP也有固定的封装形式。R...

  • RTP/AVP & RTP/AVP/TCP

    RTSP流(传输RTP包)的传输方式有两种: RTP/AVP/UDP RTP/AVP/TCP.默认传输方式为: R...

  • WebRTC 的传输协议

    WebRTC 的实现中媒体数据和媒体控制数据通过 RTP/RTCP 来传,媒体数据的处理及媒体数据传输控制基于 R...

  • 初步了解RTP

    实时传输协议RTP(Real-time Transport Protocol)是一个网络传输协议,RTP协议...

  • 超越RFC3550 - RTP/RTCP协议族分析

    一 前言 RF3550定义实时传输协议RTP和它的控制协议RTCP。RTP协议是Internet上针对流媒体传输的...

  • webrtc-RTP/RTSP/RTCP的概念

    RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。 RTP Real-time T...

  • 常见的流媒体传输协议

    RTP RTP(Real-time Transport Protocol)实时传输协议 是一个由IETF(The ...

  • WebRTC源码分析之RTP/RTCP(二)

    WebRTC中RTP和RTCP共用一个UDP端口 WebRTC中的RTP和RTCP都使用udp传输,并且RTP和R...

  • RTSP/RTP/RTCP

    流媒体之RTSP/RTP/RTCP,RTSP是发起/终结流媒体、RTP是传输流媒体、RTCP是对RTP进行控制,同...

  • RTP 传输的核心思想

    1 RTP 的协议描述 实时传输协议RTP(Real-time Transport Protocol)是一个网络传...

网友评论

      本文标题:如何实现H.265的RTP的封装及传输?

      本文链接:https://www.haomeiwen.com/subject/dvbaqltx.html