您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

解析音视频网络传输技术之一

时间:2020-01-16 10:46:10  来源:  作者:

前面讲解了音视频编解码的基本知识,相信阅读过的朋友,都有个基本的认识。音视频除了存储,还如何传输呢?比如直播互动,网上课堂等,这些场景中,音视频是如何实现在网络中传输呢?今天这篇文章,就讲解下,音视频的传输的基本知识。本文主要讲解一些基本的传输协议、拥塞控制,音视频同步,校验,QOS服务质量等。

一.传输协议

流媒体的很多协议都是在传统的TCP/UDP协议之上,加强流媒体在网络传输中的稳定性。在端到端的结构中,发送端的音视频数据通过流媒体协议发送给接收端,中间的传输过程重要的部分就是用TCP/UDP。下面是流媒体与TCP/UDP协议的结构图。

 

解析音视频网络传输技术之一

流媒体协议结构图

 

流媒体中有一些常用的协议,比如RTMP,RTSP,RTP等,这些协议底层或者说传输层,基本都是基于TCP/IP模型,也就是在局域网的实现还是TCP/IP。传输层有着承上启下的作用,对上提供服务,对下提供网络传输是否可靠,是否能够增加网络服务的质量。其作用如图所示。

 

解析音视频网络传输技术之一

传输层作用

TCP协议都很熟悉了,具有如下这些特点:

1.面向连接的协议,可靠,顺序包

2.一种字节流

3.滑动窗口,流量控制

TCP通过三次握手建立连接后,应用层的数据会不断发到TCP缓冲中去,在流媒体中,数据这个层次需要切片,并加上header,形成segment,TCP报头如图所示:

 

解析音视频网络传输技术之一

TCP header

为什么音视频在有些场景不直接用TCP呢?具有以下原因。

1.在实时语音,视频等场景下,TCP的重传会造成流媒体极大延时,用户体验差

2.拥塞控制会造成大量卡顿,主要体现在弱网环境中,码率不变的情况。

3.TCP报头要大于UDP,数据量更大。

4.TCP连接需要花大量的时间,对于画面秒开会有一定的影响。

以上都是在实时互动的场景中,不用TCP的原因,这些场景使用UDP肯能更加合适。

UDP报头如下:

 

解析音视频网络传输技术之一

UDP报头

UDP更加适合一对多实时互动的流媒体场景中,在网络带宽足够的情况,采用UDP,会更加符合实际,在UDP包加一个时标和序号,再加上适当的缓冲,也可以记录无序包,同步音视频数据等效果。

这里并不是说哪种协议更加好,关键是看使用场景。TCP与UDP对比。

 

解析音视频网络传输技术之一

TCP与UDP对比

编程思路,这里暂时不讲解具体编程代码,后面会有专栏来去分析。

TCP协议套接字编码流程。

 

解析音视频网络传输技术之一

TCP编码流程

UDP套接字编码流程

 

解析音视频网络传输技术之一

UDP套接字编码流程

RTP协议应用在组播,一对多的场景中比较多,它是基于UDP协议之上,RTP协议的应用部分主要是提供一些控制信息,比如同步,报文分割等,具体报文格式如下,PT(类型)、M(标记)、时间戳,RTP格式如下:

 

解析音视频网络传输技术之一

RTP格式

RTSP,也是一种流媒体协议,在很对安防场景中,使用的十分频繁,一般工作在TCP之上,它也是采用一种流式传输,可以减小延迟。当接收端有足够数据之后,就会解码播放。RTSP主要特性如下:

 

解析音视频网络传输技术之一

RTSP主要特性

 

二.拥塞控制

拥塞控制主要是解决网络堵塞的情况,解决好网络堵塞的传输,一直是业内关注的问题,有很多的专家组建团队去攻克这些难题。拥塞控制可以做些什么呢?在网络资源和带宽有限的情况,如何控制质量,尽可能提升质量,就是传输视频的有效手段。网络堵塞表现在数据包延时增加,丢弃率增加,性能下降。拥塞控制对网络性能影响如下:

 

解析音视频网络传输技术之一

拥塞控制对网络性能影响

产生拥塞控制主要是由以下几点影响的?

1.带宽,最大值受香农定理限制,发送速率小于或等于信道容量。

2.存储空间,主要体现在数据报的丢弃上。

3.处理器能力,这个不仅仅指的是CPU,还有GPU,其它硬件编解码器等。

根据服务模型不同,拥塞控制可分为预留策略和反馈策略。

预留策略主要是向网络提交资源请求,在带宽足够,则会为主机预留响应资源。否则拒绝。

反馈策略主要是根据反馈,动态调整发送速率。

网络层的拥塞控制

网络层的拥塞控制主要利用路由器的包调度算法和缓存管理技术,也就数要处理好两个基本问题。存储和转发。在技术上实现思想包括。

TCP拥塞控制分为4个阶段:慢启动、拥塞避免、快速重传、恢复阶段。如果在TCP启动阶段,向网络发出了很多数据,这个时候可能造成网络吞吐量下降。慢启动阶段就是为了避免出现数据爆发的情况。慢启动流程就是当建立新的连接时,先初始化一个数据包大小,按照拥塞窗口大小发送数据,收到一个ACK,拥塞窗口就增加一个数据包的发送量,基于这种反馈的策略,保证不破坏网络状态平衡,使启动阶段能够稳定。如果连续收到确认帧,则控制算法判定网络要发生拥塞,这时就需要进入拥塞避免阶段。若超时,窗口置1,就需要设置慢启动阈值,如果慢启动阈值小于拥塞窗口,TCP就执行拥塞避免算法,每收到一个确认帧,就需要增加一个数据包。反之TCP重新进入慢启动。拥塞控制过程如下图所示:

 

解析音视频网络传输技术之一

拥塞控制

当源端收到3个或3个以上确认时,TCP就断定数据已经丢失,重传该数据包,迅速进入快传和恢复阶段。

1.先进先出(FIFO)

比如FFmpeg、MediaCode等开源代码或音视频架构都是应用的非常多,基于此方法,路由转发的压力会下降。如图所示:

 

解析音视频网络传输技术之一

FIFO处理拥塞

FIFO优点是通过缓存,可以提前得到一些信息,避免卡顿。缺点是对于特殊包的公平性较差,快速恢复的效率也不高。

2.公平排队算法

这种算法表示每一路数据流都需要维护一个队列,路由器以轮询方式访问,当路由器来回扫描所有队列,将第一个包发出。FQ的工作原理如图所示:

 

解析音视频网络传输技术之一

FQ处理拥塞

FQ的优点是在轮询机制下表示什么时候可以发送完毕,通过结束时间去安排数据包发送,保证算法公平性,同时不会影响统计复用。缺点实现复杂,需要更多的资源和容错处理。市面上也有一些改进算法,比如加权公平排队算法、通过加权的方式分配缓存资源。

3.ECN

ECN将更平均分配在路由器和终端节点,这类通知是通过简单的经过路由器的数据包中设置一个拥塞位来实现,先把ECN使能位发送,由路由器根据网络设置CE比特位,如果接受到网络反馈的这类CE置位的数据包,然后发出的数据包标记为丢弃包。

优点是不需要超时重传,不依赖TCP定时,对于网络的突发性变化更好。

4.REQ

这个算法可估计拥塞什么时候发生,按照一定的概率丢包,提高吞吐量。

基于网络层和传输层的控制算法比较

 

解析音视频网络传输技术之一

 

在组播环境的音视频的层次化传输方案如下图所示,这种基于应用层的控制,需要把音视频切分成更小的数据片,网络发生堵塞时,丢掉一些不太重要的数据。这些类型的方法有3类,自适应算法,重传和缓冲。

 

解析音视频网络传输技术之一

应用层的拥塞控制切片流程

三类算法的延时比较。

 

解析音视频网络传输技术之一

 

三、音视频同步

音视频同步是流媒体中十分重要的模块,直接影响用户体验,如果音视频不同步,不仅仅导致观感效果差,而且还可能会引起视频卡顿,音频无法播放等。所以这个模块与解码,编码等模块都有着千丝万缕的联系。一般同步机制主要是分为三种,音频同步视频,视频同步音频,音视频同步一个固定时钟,字幕也有同步,这里暂且不讨论。

音视频同步背后的故事?

音视频在传输过程中,延时抖动,时钟偏差,网络变化都会导致同步的过程发生变化。以下是延时抖动对流媒体同步的影响。

 

解析音视频网络传输技术之一

传输前

 

解析音视频网络传输技术之一

传输后

流媒体在采集,传输,解码等过程中,都会实现相应的同步机制。

本地文件流同步方法:

(1)基于参考点同步

使用流媒体的音频或者视频的索引作为参考点,开始打开文件,读取文件的头信息,读取第n帧的音频数据,检查前面的n-1帧是否播放完,如果已经播放完,则跳过下一帧视频,只播放第n帧的视频,重新返回到音频的N+1帧读取,如果前面的第N帧音频还没有播放完,则把第n帧音频放到输出队列,然后读取并显示第n帧视频,如果上述情况出现很多次,则显示视频时加入一定延时。

(2)基于参考时钟同步

音视频基于系统固定时钟,实现同步,各自沿着时钟线段进行播放,如果音视频的时间戳与固定时钟的误差超过设置的同步门限,则重新同步。这个方法优点是,音频和视频的时间戳不用交集,相互不影响,缺点是,如果固定时钟,音频,视频,这三者中的时间戳不准,或者跳变很大,就会出现灾难性的体验。大致的流程是,以参考时钟的映射为标杆,进行同步控制,重置音视频的起点,如果音频或者视频超越和落后对方,则就会等待或丢弃相应数据。

网络传输同步

音视频在网络传输过程中,基于参考时钟的这种方法很难实现,或者实现起来体验很差,为什么呢?在复杂的网络环境中,如果时钟信息被丢失或者读取错误,会导致解码端和播放端,同步的效果很差。所以在网络中,都是基于音频同步视频,或视频同步音频,这里以音频的时间戳作为基准进行同步,音频会以固定速率播放,而视频会根据音频的时间戳进行等待或者丢弃。

在客户端和服务端,会同步实现一种反馈机制,客户端会把不同步的信息,发送给服务端,由服务端根据这种反馈信息进行反馈检测。当客户端检测到失调后,接收端会跳过或暂停。服务端则调整发送速率。

四、差错控制

前面提到的拥塞控制,无法完全避免包的丢失,这就需要一定的差错控制技术。可以发送定义和识别帧边界,并处理接收方回送的确认帧。如帧数计数法,首尾标志法等。

 

解析音视频网络传输技术之一

 

差错控制的方式分为2类,即反馈纠错和前向纠错。反馈纠错方式是指在发送端对输入信息编码时,加入少量监督符号,在接收端需要对编码信息进行检查,如果出错,需要请求重发,指导收到的信息正确为止。前向纠错就是在发送端使用一套相对复杂的编码方法,从而能够在解码端去纠正传输的差错,接收端不仅能发现错码,还要纠正。这些纠错码,市面上比较常用的海明码,循环冗余码等,这篇文章就不详细分析。

五、QoS服务质量

上面介绍的音视频同步,校验,都是Qos的范畴。它是指提供服务质量的期望值以及考验网络性能的要求。Qos设计满足一些基本原则,比如,透明原则,综合原则,分离原则等。

 

解析音视频网络传输技术之一

端与端的Qos

Qos参数体系结构如下图所示,用户使用Qos来分析网络性能。

 

解析音视频网络传输技术之一

Qos参数体系结构

网络接口层,是解决传输介质问题。

网络层需要解决延时,抖动,差错控制等问题。

传输层解决吞吐量,延时,抖动,传输优先级等问题

应用层主要是实现不同场景的参数配置,及问题反馈。

关于Qos分析,先讲解这么多,后面再补充

六、总结

前面五部分都是十分重要的环境,如果需要掌控整个系统,或者优化,这些基础知识是必备,希望各位朋友认真阅读并理解。



Tags:网络传输   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
我们现在基本上每天都在使用网络,在网络上进行互相通信,但你知道你电脑发送的信息是如何传递到远端电脑上的呢?本篇就讲述一下网络传输原理过程。首先,我们先得了解一下数据包的...【详细内容】
2020-09-21  Tags: 网络传输  点击:(110)  评论:(0)  加入收藏
网络就是通过介质把终端互连而成的一个规模大、功能强的系统,从而使得众多的终端可以方便地互相传递信息,共享信息资源。 终端可以产生、发送和接收数据,网络是终端建立通信的...【详细内容】
2020-05-03  Tags: 网络传输  点击:(50)  评论:(0)  加入收藏
前面讲解了音视频编解码的基本知识,相信阅读过的朋友,都有个基本的认识。音视频除了存储,还如何传输呢?比如直播互动,网上课堂等,这些场景中,音视频是如何实现在网络中传输呢?今天...【详细内容】
2020-01-16  Tags: 网络传输  点击:(98)  评论:(0)  加入收藏
▌简易百科推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  K佬食古    Tags:shell   点击:(2)  评论:(0)  加入收藏
步骤1、配置 /etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifc...【详细内容】
2021-12-24  忆梦如风    Tags:网卡   点击:(10)  评论:(0)  加入收藏
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可...【详细内容】
2021-12-17  郭主任    Tags:运维   点击:(20)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  小白系统    Tags:网页无法打开   点击:(28)  评论:(0)  加入收藏
在访问像github、gitlab这样的外国网站时,很有可能会出现页面加载不出来或找不到页面的错误。这时候有的朋友就会以为是网络的问题,于是把Wifi断掉连上自己手机的热点,结果却还...【详细内容】
2021-12-15  启施技术IT狼叔    Tags:外网   点击:(16)  评论:(0)  加入收藏
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  韦廷华12    Tags:外网ip   点击:(15)  评论:(0)  加入收藏
准备好软件IPOP、用ENSP模拟一下华为交换机 启动交换机 <Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sysname FTPClient[FTPClient]interface vla...【详细内容】
2021-12-15  思源Edward    Tags:交换机   点击:(24)  评论:(0)  加入收藏
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  K佬食古    Tags:netstat   点击:(19)  评论:(0)  加入收藏
什么是滑动窗口?窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。什么是滑动窗...【详细内容】
2021-12-14  DifferentJava    Tags:TCP   点击:(30)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  onme0    Tags:   点击:(27)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条