WEB开发网
开发学院软件开发C语言 基于C#的网络视频分发策略的研究 阅读

基于C#的网络视频分发策略的研究

 2009-02-27 08:18:11 来源:WEB开发网   
核心提示:视频内容的分发传输是视频多媒体应用所涉及到的主要部分之一,它决定了如何从所选提供节点(集)分发传输所选视频内容,基于C#的网络视频分发策略的研究,由于参与节点间的异构性和不对称性,一个提供节点往往不能给接收节点提供保证其服务质量,该分布式算法简单且可异步执行,因此,因此,一个接收节点常常需要多个提供节点来提供所需的服务

视频内容的分发传输是视频多媒体应用所涉及到的主要部分之一,它决定了如何从所选提供节点(集)分发传输所选视频内容。由于参与节点间的异构性和不对称性,一个提供节点往往不能给接收节点提供保证其服务质量。因此,一个接收节点常常需要多个提供节点来提供所需的服务质量,而多个提供节点之间的视频内容存放、检索以及转发都是视频数据分发传输中的基本问题。

1现有分发策略分析

近年来,研究最多也是最典型的分发策略已经从最初基于树型的单一提供节点推策略发展为接收者驱动的拉机制,这种拉机制基于多个发送节点到一个接收节点的多源模型。如图1-1所示,在这种分发策略中,给每个提供节点指定传输给接收节点的数据段的一部分。

基于C#的网络视频分发策略的研究


 

图1-1 基于数据驱动的多节点协同分发策略示意图

目前,从资源管理的角度,基于数据驱动的分发策略常用多发送协调方案,通过使用参与节点的全局信息,将问题形式化为在使每个节点的传输质量最大化的同时使服务器和网络负载最小化的优化问题[1]。但该方案没有考虑节点带宽变化的动态性。

另外,Itaya和其他人利用多发送者和组播的结合分发视频媒体流[2]。在这方法中,多个内容节点以如下策略分发视频多媒体内容给一个叶子节点:从多个内容节点并行传输包到一个叶子节点;最小化传输给叶子节点的冗余传输包。但这方法不实际,因为基于组播的分发策略不能扩展,发送者之间的控制包的数量随着发送者和接收者的数量的增加而指数增长,而且也没有考虑到发送者有限的能力。

基于现有的视频分发策略的不足,本文提出了关于分发的启发式算法,能保证视频服务质量的同时较好地适应网络动态性,满足视频应用的需求。

2问题描述

在本部分,我们研究基于启发式的视频媒体数据分发问题。问题描述如下:对于一个请求节点Pr和n个提供节点,确定通过每个提供节点i应该传输哪些视频数据以及这些视频数据传输的顺序。目标是确保Pr在最小的缓存延迟下能连续回放。缓存延迟定义为视频媒体流开始传输和Pr处开始回放之间的时间间隔。缓存延迟依赖于视频媒体数据的分发,这是由于视频媒体数据必须以连续的顺序被消费。

启发式视频分发策略的目标是以一种可扩展的方式最大化单个节点的传输质量,即使节点是异构和动态的。为了真正地可扩展,一个视频分发系统应该能有效地利用大多数参与节点的出口带宽。这意味着每个节点应该总是能够提供有用的内容给覆盖网中它所连接的节点。这不仅依赖于覆盖网拓扑的特性,也依赖于覆盖网络中全局内容的分发传输模式。

启发式视频分发策略的灵感来自于文件群集机制。通过利用整个文件的可用性,文件群集机制在不同的节点之间分发一个文件的片段,使大多数节点能主动地贡献其出口带宽。启发式分发算法就是将类似群集的机制和这种网状网络相结合以高效地分发视频内容。对于视频内容分发过程中的瓶颈问题,我们应该在满足节点连续回放需要的同时使节点上存储的视频内容多样化,以使节点之间视频数据交换的吞吐量最大,充分利用节点的能力,减少中心服务器和各子媒体站的压力[3]

3 问题建模

首先,我们定义了一些模型中要用到的概念,如表3-1所示:

表3-1 模型概念表

概念

定义

N

节点0表示源节点,节点N+1表示覆盖网中节点的数量

R

除节点0以外的所有节点的集全,即视频接收者的集合

Wki, i=0,……,N

节点K给节点I分配的可用带宽

基于C#的网络视频分发策略的研究

视频数据块的可用性;基于C#的网络视频分发策略的研究 =1表示节点K拥有视频数据块j,

否则 基于C#的网络视频分发策略的研究=0

基于C#的网络视频分发策略的研究

节点i的邻居节点集

基于C#的网络视频分发策略的研究

请求视频数据块的周期

基于C#的网络视频分发策略的研究

节点i的当前视频播放时刻

基于C#的网络视频分发策略的研究

节点i上的视频数据块j的播放时刻

基于C#的网络视频分发策略的研究

节点i当前缺失的视频数据块集合

(1)视频数据块的优先级

在覆盖网络中,不同的视频数据块有不同的重要性。例如,那些提供者较少的视频数据块应该被优先请求,这样可以改善视频分发系统的多样性,并进一步改善视频数据块的分发效率。因此定义视频数据块的不同优先级是很重要的。在本文,我们将节点i(i 基于C#的网络视频分发策略的研究R)上视频数据块(j 基于C#的网络视频分发策略的研究)在基于C#的网络视频分发策略的研究 时刻的优先级定义为:

基于C#的网络视频分发策略的研究

上面公式中,第一部分表示稀少优先级,基于C#的网络视频分发策略的研究 表示拥有视频数据块j的邻居节点的数量。第二部分表示紧迫度优先级,基于C#的网络视频分发策略的研究 指视频数据块j距离当前播放时刻的剩余时间。显然,基于C#的网络视频分发策略的研究 (a)和 基于C#的网络视频分发策略的研究(t)均为单调非递增函数。

(2)缺失的视频数据块集

因为一个视频通常很大并有着严格的QoS要求,而且为其它节点提供视频服务也需要大量的通信带宽,所以实际上并不是所有的媒体站愿意保存完整的视频并共享。而且媒体站可以在其参与视频服务期间仅缓存视频数据的一部分而不是整个视频。一般来说,缓存当前播放位置以后、交换窗口范围内的连续的视频数据块集[4]

4算法描述

因为C#是一种最新的、面向对象的编程语言。它使得程序员可以快速地编写各种基于Microsoft .NET平台的应用程序,而且C#是构建各类组件的理想之选,这些组件可以方便的转化为XML 网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用[5]。另外,C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。所以本节选择C#平台,提出了启发式网络视频分发算法的描述。

首先计算出视频资源的潜在提供者(potential Supplier)的数量。如果一个视频数据块对应着较少的潜在提供者,那么将意味着这个视频数据块会很难在其截止时间之前到达。算法会从仅有一个潜在提供者的视频数据块开始确定其提供者,然后对有两个潜在提供者的视频数据块进行决策,以此类推。如果一个视频数据块对应着多个潜在提供者,那么具有最高带宽并且具有更长可用时间的提供者会被选中。如果要分发的视频数据块数为B,邻居数为N,某块的最大拥有邻居数为M,则算法的时间复杂度为0(M·B·N)。

下面给出了这个算法的伪码。

(1)输入

w(k):邻居k的带宽;

bm[k]:邻居k的缓存图;

deadline[i]:视频数据块i的截止期;

seg_size:块大小;

num_partners:节点的邻居数;

set_partners:节点邻居列表;

near_partners:节点近邻列表;

expected_set:需要获取的视频数据块集。

(2)分发

for block i expected_set do

   if i Burgent_set then

      set_partner near_partners;

      num_partners sizeof(near_partners);

   else

     num_partners sizeof(set_partners);

 n 0

   for j to num_partners do

     if i 基于C#的网络视频分发策略的研究bm[j] then

//视频数据块i的潜在提供者数;

        n n+1;

     end for j;

//没有视频数据提供者的块

    if n=0 then

//从中心服务器请求

     if if Burgent_set then 

       k server;

       supplier[i] k;

//只有一个潜在视频数据提供者的块

     else if n=1 then

      k argr{bm[r,i]=1};

      supplier[i] k;

      for j expect_set, j>k do

         w[k] w[k]-seg_size;

      end for j;

    else

      dup_set[n] dup set[n] {i};

      supplier[i] null;

    end if

  end for i;

  for n=2 to num_partners do

//有多个潜在视频数据提供者的块

    for each i dup_set[n] do

     k argr{w(r)>w(r’)}| r,r’ set_partners};

    if k null then

      supplier[i] k;

      for j expected set,j>k do

        w[k] w[k]-seg_size;

      end for j;

   end if;

  end for i;

end for n;

(3)输出

supplier[i]:块i expected set 的视频数据提供者

5 小结

通过我们的算法可以看到:节点通过分发算法的计算获得分发决策,把需要从同一个伙伴处获得哪些分段的视频信息存储在一个类似BM的位序列中。之后,将这个位序列发送给相应的伙伴。该伙伴会把位序列中所对应的视频数据分段通过一个实时的传输协议发送给结点。BM信息和分发决策信息可以随视频数据一并传输。这样可以快速更新并且减少额外开销。

总之,启发式分发算法无需收集额外的视频信息,仅仅需要通过缓冲映像(BM)交换来获取邻居节点上的可用视频数据块信息。更无需使用预先测量的方法计算带宽。该分布式算法简单且可异步执行,因此,每个节点上执行的分发不依赖其它节点分发结果。

Tags:基于 网络视频 分发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接