📄 rtp-rtcp流媒体服务器技术研究.mht
字号:
span
lang=3DEN-US>RTP</span>使用同步源标#=
782;<span
lang=3DEN-US>(SSRC)</span>和分组类型<span
lang=3DEN-US>(PTYPE)</span>把同一个流中=
的分组组合起来,才=
3021;够使用序列号<span
lang=3DEN-US>(Sequence<br>
Number)</span>和时间戳<span lang=3DEN-US>(Timestamp=
)</span>对分组进行排序和=
7491;确回放。<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;<span
lang=3DEN-US>5.2 </span>多线程的管理<sp=
an
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;并发服务器模式要ĕ=
14;用多线程来提供服务=
,所以多线程的管理=
1313;分重要。在本文构ॿ=
4;的服务器中,不同客&=
#25143;的请求和反馈都由=
381;务器的主线程处理,=
;由于实时数据的独有&#=
24615;,不同实时客户可É=
97;共用一个<span
lang=3DEN-US>RTP</span>实时服务线程=
644;一个<span
lang=3DEN-US>RTCP</span>实时服务线程=
5292;这样可以大大减小੎=
1;务器的负担,而每个&=
#25991;件客户由于请求的=
991;件不同,相应地对速=
;度和开始时间的要求&#=
37117;可能不同,所以需Š=
01;有自己独有的<span
lang=3DEN-US>RTP</span>文件服务线程=
644;<span
lang=3DEN-US>RTCP</span>文件服务线程=
2290;<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;<span
lang=3DEN-US>RTP</span>服务线程负责=
226;实时数据流发送给客=
;户,<span
lang=3DEN-US>RTCP</span>服务线程根据<sp=
an
lang=3DEN-US>RTP</span>线程的统计数=
454;,产生发送方报告给=
;客户。<span
lang=3DEN-US>RTP</span>线程和<span lang=3DEN-US>RTCP</spa=
n>线程之间通过一段共&=
#20139;内存交互统计数据A=
292;对共享内存必须设置=
;互斥体进行保护,防&#=
27490;出现错误读写。在Ű=
25;种方式下,服务器可=
以根据每个用户的不=
1516;请求和具体情况方߹=
5;地提供不同的服务。<=
span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;<span
lang=3DEN-US>5.3 </span>时间戳的处理<sp=
an
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;时间戳字段是<span
lang=3DEN-US>RTP</span>首部中说明数=
454;包时间的同步信息,=
;是数据能以正确的时&#=
38388;顺序恢复的关键。ą=
02;间戳的值给出了分组=
中数据的第一个字节=
0340;采样时间<span
lang=3DEN-US>(Sampling<br>
Instant)</span>,要求发送<span class=3DGramE>=
方时间戳</span>的时钟是$=
830;续、单调增长的,即=
;使在没有数据输入或&#=
21457;送数据时也是如此z=
90;在静默时,发送方不=
必发送数据,保持时=
8388;戳的增长,在接收ో=
1;,由于接收到的数据&=
#20998;组的序号没有丢失A=
292;就知道没有发生数据=
;丢失,而且只要比较&#=
21069;后分组的时间戳的ð=
46;异,就可以确定输出=
的时间间隔。<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;<span
lang=3DEN-US>RTP</span>规定一次会话=
340;初始时间<span
class=3DGramE>戳必须</span>随机选৤=
1;,但协议没有规定时&=
#38388;戳的单位,也没有#=
268;定该值的精确解释,=
;而是由负载类型来确&#=
23450;时钟的颗粒,这样×=
08;种应用类型可以根据=
需要选择合适的输出=
5745;时精度。<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;在<span
lang=3DEN-US>RTP</span>传输音频数据=
102;,一般选定逻辑时间=
;戳速率与采样速率相&#=
21516;,但是在传输视频ă=
68;据时,必须使时间戳=
速率大于每帧的一个=
8404;答。如果数据是在ࡧ=
6;一时刻采样的,协议&=
#26631;准还允许多个分组=
855;有相同的时间戳值。=
;<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;<span
lang=3DEN-US>5.4 </span>媒体数据发送=
6895;度的控制<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;由于<span
lang=3DEN-US>RTP</span>协议没有规定<span
lang=3DEN-US>RTP</span>分组的长度和=
457;送数据的速度,因而=
;需要根据具体情况调&#=
25972;服务器端发送媒体ă=
68;据的速度。对来自设=
备的实时数据可以采=
1462;等时间间隔访问设ࣧ=
1;缓冲区,在有新数据&=
#36755;入时发送数据的方=
335;,时间戳的设置相对=
;容易。对已经录制好&#=
30340;本地硬盘上的媒体ă=
91;件,以<span
lang=3DEN-US>H.263</span>格式的文件为&#=
20363;,由于文件本身不Ô=
53;含<span
class=3DGramE>帧率信息</span>,所ߣ=
7;需要知道录制时的<span
class=3DGramE>帧率或者</span>设置ߌ=
8;个初始值,在发送数&=
#25454;的时候找出发送数=
454;中的帧数目,根据<span
class=3DGramE>帧率和预置值</span>੖=
9;计算时延,以适当的&=
#36895;度发送数据并设置=
102;间戳信息。<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;<span
lang=3DEN-US>5.5 </span>多种流同步<span lang=
=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;<span
lang=3DEN-US>RTCP</span>的一个关键作=
9992;就是能让接收方同ઽ=
3;多个<span
lang=3DEN-US>RTP</span>流,例如:当&=
899;频与视频一起传输的=
;时候,由于编码的不&#=
21516;,<span
lang=3DEN-US>RTP</span>使用两个流分=
035;进行传输,这样两个=
;流的<span
class=3DGramE>时间戳以不同</span>௚=
0;速率运行,接收方必&=
#39035;同步两个流,以保#=
777;声音与影像的一致。=
;为能进行流同步,<span
lang=3DEN-US>RTCP</span>要求发送方给=
7599;个传送一个唯一的੧=
1;识数据源的规范名<span
lang=3DEN-US>(Canonical<br>
Name</span>),尽管由一个数=
据源发出的不同的<span
class=3DGramE>流具有</span>不同的ࡧ=
6;步源标识<span
lang=3DEN-US>(SSRC)</span>,但具有相同&=
#30340;规范名,这样接收=
041;就知道哪些流是有关=
;联的。而发送方报告&#=
25253;文所包含的信息可ŝ=
87;接收方用于协调两个=
流中的时间戳值。发=
6865;方报告中含有一个ߣ=
7;网络时间协议<span
lang=3DEN-US>NTP(Network<br>
Time<br>
Protocol)</span>格式表示的绝对=
6102;间值,接着<span
lang=3DEN-US>RTCP</span>报告中给出一=
0010;<span
lang=3DEN-US>RTP</span>时间戳值,产=
983;该值的时钟就是产生=
;<span
lang=3DEN-US>RTP</span>分组中的<span class=3DSpellE=
><span
lang=3DEN-US>TimeStamp</span></span>字段的那个=
;时钟。由于发送方发&#=
20986;的所有流和发送方ü=
53;告都使用同一个绝对=
时钟,接收方就可以=
7604;较来自同一数据源௚=
0;两个流的绝对时间,&=
#20174;而确定如何将一个=
969;中的<span
class=3DGramE>时间戳值映射</span>ߒ=
6;另一个流中的时间戳&=
#20540;。<span
lang=3DEN-US><o:p></o:p></span></span></p>
<p style=3D'line-height:14.0pt'><span lang=3DEN-US style=3D'font-size:10.0p=
t'>6 </span><span
style=3D'font-size:10.0pt'>结论<span lang=3DEN-US><o:p></o:p></=
span></span></p>
<p style=3D'line-height:14.0pt'><span style=3D'font-size:10.0pt'> &#=
12288;流媒体技术的应用Ą=
85;益广泛,对流媒体技=
术的研究具有很大的=
3454;际意义<span
lang=3DEN-US>,</span>本文通过对<span lang=3DE=
N-US>RTP/RTCP</span>协议的研究,分=
;析流媒体服务器的一&#=
33324;功能和结构,给出ĉ=
00;建一个基本的流媒体=
服务器的实现方案,=
3454;验证明可以同时满足=
;多个实时和文件客户&#=
30340;要求<span
lang=3DEN-US>,</span>并已经应用于ߌ=
8;个远程监控系统中。<=
span
lang=3DEN-US><o:p></o:p></span></span></p>
<p class=3DMsoNormal><span lang=3DEN-US><o:p> </o:p></span></p>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -