怎么样在网上看洛阳电视台一套矗播???????怎么现在看不到啊?
数据驱动的移动视频直播拥塞控淛技术研究吴蕾蕾,周安福是哪里谷歌拥塞控制算法(GCC)作为网络实时通信(WebRTC)标准协议中网络传输部分最关键的算法,已经应用到主流浏览器(包括Chrome和Firefox??
山国武技论文在线 http:/ 由实吋传输协议(RTP)和实吋传输控制协议(RTCP)共同驱动视频流传输流程如卜 发送端的摄像头捕捉画面後编码成视频帧,然后按照RIP协议封装戊包发送给接收端用于 拆包解码以及播敚,接收端按照RICP协议将一段时间内的RIP包的信息反馈给发送端。 谷歌擁塞控制算法包括两个速率控制器:基于丢包的速率控制器和基于延迟的速率控制器 75
前者位于发送端,后者位于接收端。 (1)基于丢包的速率控淛器 每次tk时刻,封装了丢包率的RTCP包,或者封装了带宽估计值A1的REMB包到 达发送端,基于丢包的速率控制器就计算一个发送速率基于丢包率的速率控淛器按照下面 的方式计算一个发送速率As:当丢包率相对较小( 在止负阈值之间,表示网络维持稳定,当前网络处于止常状态。
系统状态驱动,并按照丅面的方式计算一个发送速率A:增加时A(L)=ηA(L),保持不变 时A(t)=A(t1),减少时A(t)=R(t)其中,n∈[.05, 过程中,Ⅰ、B、P帧的大小差异很大,这样会引入误差。因此改为按照每5ns将到達的RTP 包分组,计算各组之间的传输时间差 真实应用的网络环境数据获取和特征分析 125
为了分析GCC在灾际应用中存在的问题,为此,我们首先需要获取主流直播应用的埋 数据,以分析实际应用中不同类型网络的特征,以及GCC在不同网终情况下的表现。我 们从云端数据的可视化网页获取数据網页包含两级页面:一级页面列岀所有直播频道的属 性信息,包括但不限」频道的廾始结束时间、手机型号、操作系统、运营商、网络制式、鼡
户所在地坦位置等:二级页面为某·频道的直播过程的视频沇传输数据,包括但不限于用户 130 (发送)端视频编码码率、RII、发送丢包率、发送码率、发送帧率,MCU(接收)端的 视频接收码率、接收帧率、丢包率、解码耗时等。因此,我们需要编写爬虫代码获取上述实 时视频流传输中的埋点数据信息,用于分析真实直播场景网终环境特征爬虫代码由两个馍
坎构成:直播频道列表属性信息爬取模,和直播频道过程网终埋点数据信息爬取模块,分 别负责爬取埋点数据接口的一级和二级页面内容。同时,我们也需要编写数据预处理代码去 135 除所爬取的贞面内容的冗余信息,并筛选时長有效的直播频道,减少时长过短(比如小于 分钟)的直播频道对整体网络环境分析的干扰此外,由于GCC通过观察网络延迟和丟包
来预测拥塞和控淛发送速率,我们也需要从RTT和丢包率的分布着手理解直播的真实网终 坏境。 在其他速率范围内分布比较均匀 谷歌拥塞控制算法在实际应用Φ的问题分析 150 由初步数据分析我们可以推断:a)人多数百播频道拥有良好的网终通信质量;b)人多数 凊况下,丟包率极低,因此谷歌拥塞控制算法的发送速率是多数由基于延迟的速率控制器决
定的。然而,我们观察到很多RTT和去包率都极低的直播频道很难稳定的维持髙水平的发 送速率为了描述谷歌拥塞控制算法在这些强网卜的问题,我们从收集的数据集中选择一条 典型的强网传输踪迹作为一个例子 2 NA 50 300 350 400 Ime/s 150 3只00 2 等。除此之外,ITF还定义了·系列扩展协议,包括RTP协议基于档次的扩展,和RTCP 200
协议基于报文类型的扩展等等,详细内容可参考文献在 WebrTo项目中,RTP/RICP模 块作为传输模块的一部分,负责对發送端釆集到的媒体数据进行封装,然后交给上层网络模 块发送;在接收端RTPRτCP模块收到上层模块的数据包后,进行解包操作,最后把负载 发送到解碼模块。因此, RTP/RTCP模块在wεbRI℃C通信中发挥了非常重要的作用
第一步,RTP报文构造和发送。下图描述了发送端编码之后RTP报文的构造和发送过 205 桯,涉及彡个线程: Encoder、 Pacer和 Network,分别负责编码和构造RTP报文,平滑发送 和传输层发送下面详细描述这三个线程的协同工作过程。 Encoder线程调用编码器(比如 H264)对釆集到嘚原始视频帧进行绵码,视频编码完成后,编码后的视频图像返回给视频
发送流的控制器,进而通过负载控制器转交给RTP/RTCP模块,该模块再向卜调用RTP报 攵发送器,RTP报文发送器调用RTP视频帧发送器对编码后的视频图像进行封装,填充RTP 210 头部并构造RP报文,然后返回给RIP报文发送器RTP报文发送器将封装好的RP報 文放入RP包发送队列中暂存,之后RTP报文被转移到周期性发送缓存队列进行排队; Pacer
线程周期性地从队列中获取数据包,更新RTP报头地相关域,统计延迟囷数据包,然后把 更新后的数据包转移到传输模块; Network线程则调用传输层套接字执行数据发送操作,将 数据包发送到网络。至此,发送端的RTP包的构造囷发送流程完成需要注意的是,在RTP 215 报文发送器中进行RTP报文发送后,会统计RTP报文相关信息,这些信息将作为RTCP构
造SR/RR报文的数据来源。 第二步,RTP报文接收和解析在接收端,RTP报文的接收和解包操作主要在 Worker 线程中执行,RTP报文从 Network线程拿到后,进入 Worker线程,经过解包操作,由 Decod 线程进行解码,最终由 Render线程进行渲染。εRTP薮据包经过网络层到达接收端,根据其
220SSRC找到对应的视频接收流,通过调用转交RIP报文的函数到RIP流接收模块RIP流 接收模块首先解析数据包得箌RIP头部信息,接下米执行三个操作:a)码率估计;b)继续发 送数据包;c)接收统计。其码率信计模块在版本M55之前负责使用GC算法佔计码率,构 造REMB报文,交给RTP/RTCP模块發送回发送端:;在版本M55之后,码率估计模块被废
弃,RTP报文头部增加了额外的4字节序列号信息,接收端向发送端反馈接收到的RTP包 225 的信息以及这些包之間的到达时间间隔,这些信息破封装在一个新类别的RTCP报文中,即 Transport Feedback包,以100ms为默认厝期不严格定时地发送回发送端而接收统计则是 统计RTP包的接受信息,这些信息作为 RTCP RR报文的数据来源。视频接收流的控制器收
到数据包后判断这是个RTP数据包,然后交给RTP报文接收模块分析RTP报文,得到通 用的RTP头部描述结构,然后调用RTP视频接收模块***RTP数据包进步得到视频相关 230 信息和负载,接着经过回调返回RIP报文接收模块,把RIP描述信息和负载发送到VCM 模块,继续接下来的 Jitter Buffer缓存和解码渲染操作εRTP报文解包过程是封包的逆过程,
重要的输出信息是RTP头部描述和媒体负载,这些信息是下一步 Jitter Buffer缓存和解码的 基础另外对RTP报文进行统计得刭的信息则是 RTCP RR/Transport Feedback报文的数据 来源。 235 第三步,RTCP报文构造和发送在媒体流的接收端,RTCP报文以周期性发送为基准,
辅以RTP报文发送时的及时发送和REMB报文(M55之前)的立即发送。发送过程主要包 括反馈信息获取、RTCP报文构造、序刎化和发送 RTP/RTCP模块通过RTCP发送模块确 认当前是否需偠立即发送RTCP报文,石是,则首先从RTP发送模块获取RTP发送统计信 息,然后调用RTCP发送模块构造RTCP包,接着构造复合RTCP包。构造复合RTCP包时, 山国武技论文在线
http:/ 240 首先偠确定当先要发送何种类型的RTCP报文,然后针对每·种报文,调用其构造函数,构 造好的报文存储在数据包暂存容器中最后发送容器中的数据包。接下米每种RICP报文都 会调用各自的序列化函数,包报文序列化为网络字节流最后通过回调到达数据包暂存容器 的等待发送队列,最终把字节鋶发送到传输层模块,最后 Network线程调用传输层套接字发 送数据到网络。
245 最后,RTCP报文接收和解析在视频流的发送端,接收RTCP报文的流稈和视频流接 收端接攻RTP报文的流程一样,经过网络接攻报文之后,通过SSRC找到对应的视频接收 流,继而到达RTP流接收模块。接下来RTCP报文的解析和反馈操作都在RTP/RTCP模块 中唍成,首先调用RTCP接收模块解析RTCP报文,得到RTCP报文信息,然后触发相应的
回调函数,由各咯观察模块对相应报文执行回调操作接卜来RTCP接收模块使用RTCP 250 分離模块来解析复合报文,针对每·种报文类型,调用对应的处理函数,反序列化后拿到报 文的描述结构。最后素有报文综合在一起形成总的RICP数据包信息,传递给触发器触发回 调操作,如处理NACK的回调,处理SLI的回调,处理REMB的回调(M55之前),处理 Transport
Feedback的回调(M55之后),等等这些回调在各自模块控制流媒体数据的編 码、发送、码率等服务质量保证,这也是RTCP报文最终起作用的地方。 255 数据驱动的直播过程模拟器 本课题设计了个直播过程模拟器来模拟实吋視频沇传输过程该模拟器按照数据集 还原直播频道的网络带宽,按照 Webrto中 RTP/RTCP协议的过程收发数据包,但数据包
不包含真实视颎图像信息,并使用给萣的拥塞控制算法控制发送端的发送速率,从而实现直 播过程的模拟。如下图所示,数据驱动的直播模拟器包含三个主要模块:发送模垬、路由模 260 块和接收模坎其中,发送模玦负责运行拥塞控制算法按照该算法产生的发送速率发送数 据包:路由模块负责读取当前直播公话此时的带宽籹据、缓存发送端发来的籹据包、按照带
宽向接收端发送缓存中的数据包、以及丟包操作:接收端接收数据包、记录数据包传输信息、 产生 Transport back cackel 屾国武技论文在线 http:/ 图8数据驱动的直播过程模拟器 Fig 8 Data-driven live streaming simulator 当模拟器的发送模块收到拥塞控制算法给岀的发送速率,则根据发送速率选择适当编 270
码码率嘚视频帧文件读取此次应当发送的视频帧人小,并给每一帧进行编号,然后按照 MTU=1500字节的网络层数据包传输要求,计算每个视频帧应当拆成的包的夶小,并给每个 包添加对应视频帧编号,以及总的RTP包序列号。然后发送模块构造此次要发送的RTP信 息包,每个RTP信息包包含:包序列号、包对应帧号、包发送时间接着发送端通知路由
器模块接收此次要发送的RTP信息包。模拟器的路由模块收到发送模块的通知后,先判断 275 接受包后是否溢岀,若溢出,则丢弃溢岀部分包,然后将其余包放入路由暂存缓冲器中接 着路由模块从数据集中读取直播频道当前的网络带宽,按照不超过带宽的要求将缓存中的适 量RTP信息包并发送给接收模块。模拟器的接收模块收到新的RTP信息包并暂存起来同
时,接收模块还维护了一个滑动窗口用来计算窗口时间内的丢包率。每收到15个RTP信息 包,接收模块就牛成一个 Transport Feedback信息包每个 Transport Feedback信息包包含这 15个RTP信息包的发送时间、到达时间、包序列号以及對应帧编号、每个RTP包到达时的 丟包率。接收模块将 Transport
Feedbaκk信息包转交给位于发送端的拥塞控制算法,用于计 算下一次的目标发送遠率至此,一个唍整的 RTP/RTCP信息包的循环完成。循环一直持 续到指定时间结東,过程中我们记录从廾始到结朿的网络带宽和拥塞控制算法产生的发送速 率,用于验證该拥塞控制算法的性能 285 基于机器学习的拥塞控制算法
由」GCC在强网下存在对网络延迟的波动过」敏感的问題,如果基」原GCC算法进 行改进属於经验性的参数调整,无法自适应地应对复杂多变的网络环境;同吋,海量的埋点 数据有利于生成真实直播场景的数据集,为基于机器学习的算法設计提供了良好的条件,因 此,本课题拟提出一个基于强化学习的拥塞控制算法,根据不断变化的网络状态预测当前网 290
终的可用带宽,从而代替GCC控淛发送端的视频流发送码率 基于强化学习的拥塞控制 接卜来我们首先对强化学习算法的逻缉进行概括性说明,然后介绍拥塞控制能被看作 是個强化学习的任务的原因 首先是介绍强化学习的总体流程。在强化学习中,由一个代理( Agent)与环境 295 ( nvironment)进行交互代理可以从多个行动( Action)中进行选择,其選择的行动将对
环境的状态( State)造成影响。在每一个离散的时刻t∈0,1,…,代理观察环境得到状态S, 并对环境做出行动a-在下一时刻点t+1,代理就会收到环境的下一个状态S+1以及环境的 反馈( reward)rt,代表环境在t到t+1这段时间的损失或者埤益。代理的目标就是通过优化 行动的选择最大化累积损失反馈的期望,即R=E[∑?}*rJ,其中y∈[0,1l变量γ代表损失
系数。日前,强化学刁已经成功地应用到解决各和复杂问题的过程,比如机器人冮动、计算 机游戏等等,以及近来嘚资源调度、视频传输和路由等 然后我们介绍如何将拥塞控制看作强化学习任务。将拥塞控制过程看作·个强化学习的任务 需要明确任務中的行动、状态、反馈等 (1)将发送速率看作行动。在强化学习环境中的拥塞控制流程,我们将数据流的发送 305
端看作代理,由此我们将发送端嘚行动对应为数据流发送速率更准确地讲,发送速率是发 10