流媒体传输知识整理(一)

名词解释

RTP协议

Real-time Transport Protocol,实时传输协议,一个网络传输协议,该协议属于七层模型中的应用层协议。

大致作用:实时语音、视频数据经过模数转换和压缩编码处理后,先送给RTP封装成RTP数据单元,RTP数据单元被封装成UDP数据报,然后再向下传递给IP封装成IP数据包。

此协议详细说明了在互联网上传递音频和视频的标准数据包格式,一开始被设计为多播协议,后来被用于很多单播应用中。RTP协议常用于流媒体系统(配合RTSP协议),视频会议和一键通(Push toTalk)系统(配合H.323SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,它是建立在用户数据报协议(UDP)上的。

RTP为数据提供了具有实时特征的端对端传送服务,如在组播或者单播网络服务下的交互式视频音频或者模拟数据。应用程序通常在UDP上运行RTP以便使用其多路结点和校验服务;这两种协议都提供了传输层协议的功能。但是RTP可以与其他适合的底层网络或者传输协议一起使用。如果底层网络提供组播方式,那么RTP可以使用该组播表传输数据到多个目的地。

         RTP本身并没有提供按时发送机制或其他服务质量(QoS)保证,它依赖于底层服务去实现这一过程。RTP并不能保证传送或者防止传送,也不确定网络底层的可靠性。RTP实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。

         RTP与控制协议RTCP配合工作,RTCP使得大的组播网络能够监视数据传输。监视能使接收器侦测到任何的包丢失,还可以补偿任何的延迟抖动,两个协议都独立于下面的传输层和网络层协议。RTP头中的信息将告诉接收器如何重建数据,并描述了比特流是如何打包的。通常,RTP工作于用户数据报协议之上,但它也能使用其他的传输协议。会话发起协议(SIP)和H.232都使用RTP

         RTP的组成包括:序列号,用于侦测丢失的包;净负荷标识,描述了媒体的编码,他可以被更改以适应带宽的改变;帧指示,标记每一帧的开始与结束;源标识,标识帧的源;媒体内部同步,使用时间戳来侦测一个码流中不同的时延抖动,并对抖动进行补偿。

         分组结构表:

 

        

+ 比特

0-1

2

3

4-7

8

9-15

16-31

0

Ver.

P

X

CC

M

PT

sequence number

32

Timestamp

64

SSRC identifier

96

... CSRC identifiers ...

96+(CC×32)

Additional header (optional), indicates length "AHL"

96+(CC×32)
+ (X×(AHL+16))

 
Data
 

 

定义

所占位

描述

Ver

2

标明RTP版本号。协议初始版本为0RFC3550中规定的版本号为2

P

1

padding如果该位被设置,则在该包末尾包含了额外的附加信息,附加信息的最后一个字节表示额外附加信息的长度(包含该字节本身)。该字段存在的原因是一些加密机制需要固定长度的数据块,或者为了在一个底层协议数据单元中传输多个RTP

X

1

Extension如果该位被设置,则在固定的头部后存在一个扩展头部格式参见RFC3550 5.3.1

CC

4

CSRC count 在固定头部后存在多少个CSRC标记

M

1

marker 该位的功能依赖于profile的定义。Profile可以该变该位的长度,但是要保持markerpayload type总长度不变(共8bits

PT

7

payload type标记RTP包所携带信息的类型,用于说明RTP报文中有效载荷的类型, GSM音频、JPEM图像等。标准类型列出在RFC3551中,如果接收方不能识别该类型,必须忽略该包

sequence number

16

序列号,每个RTP包发送后该序列号加1,接收方可以根据该序列号重新排列数据包顺序。

timestamp

32

时间戳,RTP时间戳为同步不同的媒体流提供采样时间,用于重新建立原始音频或视频的时序。另外,它还可以帮助接收方确定数据到达时间的一致性或变化(有时被称为抖动)

SSRC

32

数据源标识,在一个RTP session中,其间每个数据流都会有一个不同的SSRC

CSRC

32*0~15

特约信源(CSRC)标识符: 每个CSRC标识符占32, 可以有015个。 网络中使用混合器时,混合器会在RTP报文头部之后插入新的同步源标识,其作用是区分多个同时的数据流。

 

RTCP协议

RTP 控制协议 RTCPRTP Control Protocol

RTP使用一个偶数UDP端口,则RTCP使用RTP的下一个奇数port

大致功能:为RTP媒体流提供信道外(out-of-band)控制。RTCP本身不传输数据,但是和RTP一起协作将多媒体数据打包和发送。RTCP定期在多媒体流会话参加者之间传输控制数据。RTCP的主要功能是为RTP所提供的服务质量(Quality of Service)提供反馈。RTCP收集相关媒体连接的统计信息(如:传输字节数,传输分组数,丢失分组数,jitter,单向和双向网络延迟等)。应用程序可利用RTCP所提供的信息视图提高服务质量(如:限制信息流量,改用压缩比较小的编解码器)。

注:RTCP本身不提供数据加密或身份认证。SRTCP可以用于此类用途。

RTP 控制协议(RTCP)采用与数据包相同的分发机制,将控制包周期性传输到所有会话参与者中。底层协议必须提供数据和控制包的多路发送,例如使用不同的 UDP 端口号。

  RTCP 提供数据分发质量反馈信息,这是 RTP 作为传输协议的部分功能并且它涉及到了其它传输协议的流控制和拥塞控制。

         RTCP RTP 源携带一个持久性传输层标识符,称为规范名或 CNAME。由于一旦发现冲突或程序重启时, SSRC 标识符会随之改变,所以(1)接收方需要 CNAME 来跟踪每一个参与者。(2)同时接收方还要求 CNAME 能够与一组相关 RTP 会话中来自于给定参与者的多重数据流相关联,例如同步视频和音频。这样,要完成这两个功能就要求所有的参与者都要发送RTCP包,此时,需要控制速率使得RTP按比例来增加大量的参与者。通过每一个参与者发送各自的控制包给其他所有参与者,每一个参与者能够独立观察到参与者数据量,该数量可用来计算控制包的发送速率。

         包结构表:

Version

p

rc

Packet-type

2

3

8

16

Length

 

包结构说明:

定义

所占位

描述

Version

2

识别 RTP 版本。RTP 数据包中的该值与 RTCP 数据包中的一样。当前规范定义的版本值为 2

P

3

Padding, 设置时, RTCP 数据包包含一些其它 padding 八位位组,它们不属于控制信息。Padding 的最后八位是用于计算应该忽略多少间隙八位位组。一些加密算法中需要计算固定块大小时也可能需要使用 Padding 字段。在一个复合 RTCP 数据包中,只有最后的个别数据包中才需要使用 padding ,这是因为复合数据包是作为一个整体来加密的。

Rc

8

接收方报告计数。包含在该数据包中的接收方报告块的数量,有效值为 0

packet

16

包括常量 200 ,识别这是一个 RTCP SR 数据包

Length

 

RTCP 数据包的大小(32 位字减去 1),包含头和任意间隙 (偏移量的引入使得 0 成为有效值,并避免了扫描复合 RTCP 数据包过程中的无限循环现象,而采用 32 位字计数方法则避免了对 4 的倍数的有效性校验 )。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容由流媒体协议等基本知识,视频媒体基本知识流媒体服务器搭建实战,流媒体工具使用实战等内容组成。由本人“天地会珠海分舵”(http://blog.csdn.net/zhubaitian)耗时一个月整理而成,现分享给大家。 章节内容分布如下: 第1章Streaming 协议和服务器概览学习摘录 7 1.1 Protocol support 8 1.2 Media Container format support 12 第2章Streaming 协议学习摘录 15 2.1 MMS协议简介 15 2.2 RTP相关协议简介 15 2.2.1 RTP与RTCP协议简介 15 2.2.2 RTSP协议简介 16 2.2.3 流传输过程 17 2.3 RTMP vs RTMFP 18 2.3.1 RTMP协议简介 18 2.3.3 RTMFP 简介 19 2.3.4 RTMP VS RTMFP 20 2.4 MPEG-TS 20 2.4.1 MPEG2-TS与MPEG2-PS的区别 20 2.4.2 PES/ES/TS简介 20 2.5 Smooth Streaming 21 2.5 HLS简介 24 2.6 MPEG-DASH 26 2.6.1 简介 26 2.6.2 Dash播放器列表 28 2.6.3 MPD格式 30 2.6.5 MPD在线检查器 31 2.6.5 MPD 格式理解个人小结 31 2.6.6 PMD格式的多样性 32 2.6.7 MPD 支持的Profiles 44 2.6.8 DASH传输协议支持 44 2.7 HLS VS MPEG-DASH 45 2.8 Real Data Transport Protocol 45 2.9 webM 45 第3章 视频容器格式学习摘录 47 3.1 视频容器VS 视频编码 47 3.2 3GP容器 48 3.2 AVI容器(.avi) 49 3.3 WMV vs ASF 容器(.wmv/.asf) 49 3.3.1 ASF高级串流格式简介以及和WMA/WMV的区别 49 3.3.2 ASF和WMA/WMV的区别官方解析 50 3.4 QuickTime容器(.mov) 50 3.5 Ogg vs Ogm容器(.ogg) 51 3.5.1 Ogg容器格式 51 3.5.2 Ogm 51 3.5.3 Ogg vs Ogm 52 3.6 Matroska容器(.mkv|.mka|.mks) 52 3.7 MP4容器 53 3.7.1 简介 53 3.7.2 MP4格式详解 53 3.8 MPEGE TS容器 61 3.9 FLV容器 62 3.10 ABS – Adaptive Bitrate Streaming 自适应串流容器 62 3.11 码率 63 3.12 流媒体的3种格式 63 3.12.1 压缩媒体文件格式 63 3.12.2 流文件格式 64 3.12.3 流媒体发布格式 64 第4章 视频编码格式学习摘录 66 4.1视频编码格式简介 66 4.2主流视频编码格式比较 67 4.2.1 MPEG编码格式 67 4.2.2 DivX/XviD编码格式 68 4.2.3 H.264/X264编码格式 69 4.2.4 WMA-HD/VC-1编码格式 71 4.2.5 各主流编码格式比较 72 4.3 视频解码 73 第5章ffmpeg学习摘录 74 5.1 简介 74 5.2 功能 74 5.3 支持的格式和编码 75 5.4 支持的流媒体协议 76 5.5 ffmpeg视频解码架构示例简略 76 5.5.1 解复用(Demux) 77 5.5.2 解码 (Decode) 78 5.5.3 Ffmpeg中解码流程对应的API函数 78 第6章GStreamer学习摘录 80 6.1 GStreamer简介 80 6.2 GStreamer编写MP3播放器实例 80 6.2.1 初始化GStreamer 80 6.2.2 创建GStreamer管道元件 81 6.2.3 创建元件三元组之GStreamer数据源 81 6.2.4 创建元件三元组之解码器 (即GStreamer过滤器) 插件 81 6.2.5 创建元件三元组之GStreamer接收器 81 6.2.6 链接GStreamer元件三元组到管道 – 播放 82 6.2.7 启动GStreamer管道数据处理流程 82 6.2.8 MP3命令行播放器源代码完整实例 82 第7章 ffmpeg VS GStreamer比较学习摘录 85 7.1 Pipeline设计模式简介 85 7.2 ffmpeg vs GStreamer 86 7.2.1 网上解析翻译 86 7.2.1 FFmpeg和GStreamer异同小结 87 第8章 流媒体服务器搭建摘录 88 8.1 VLC 88 8.1.1 VLC编码和容器兼容性 88 8.1.1 VLC 配置VOD点播 88 8.1.2 VLC 配置组播服务器 90 8.2 Wowza Streaming Engine 91 8.2.1 简介及安装 91 8.2.2 MPEG-DASH 支持 92 8.2.3 如何使用VLC作为直播源 95 8.2.4 点播VOD配置 112 8.3 Nex Gen Media Server (NGMS) 114 8.3.1 Introduction 114 8.3.2 Feature List 115 8.3.3 Practice in Action 116 8.4 IIS Smooth Streaming(IIS Media Service) 117 8.4.1 Getting Started with IIS Smooth Streaming 117 8.4.2 Use VLC to play the Smooth Stream 128 8.4.3 创建Smooth Stream 文件 129 8.4.4 提供DASH服务时IIS的关键设置 129 8.4.5 Dash on IIS步骤 130 第9章 相关工具学习摘录 137 9.1 Bento4 MP4工具包 137 9.1.1 Introduction 137 9.1.2 所包含的工具简介 138 9.1.3 MPEG DASH Adaptive Streaming 139 9.1.4 Serving DASH Streams 147 9.2 MP4Box 149 9.2.1 简介 149 9.2.2 对DASH的支持命令帮助 150 9.2.3 MP4Box: fragmentation, segmentation, splitting and interleaving 153 9.2.4 把MP4转换成TS 155 9.2.5生成不同profile的MPD 155 9.2.6指定每个Representation的bandwidth 156 9.2.7生成多个period的MPD 156 9.2.8生成多个Representation的MPD 156 9.2.9 生成多个Segment的MPD 156 9.2.10 生成(Subsegment) SegmentBase拥有 indexRangeExact 为true的MPD 157 9.2.11 生成多个AdaptionSet的MPD 158 9.2.12 模拟live直播 158 第10章 流媒体服务器搭建指导 159 10.1 所需搭建服务器Matrix 159 第11章 附录 163 11.1 Wowza支持格式 163 11.2 ISO Base Media File Format (IBMFF) 163 11.3 DASH所支持Profile分类 164
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值