热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于MDC的P2P方式视频直播方案

摘要:本文提出了基于多描述编码的PeertoPeer方式视频流直播方案,并对该方案中P2P方式视频发布与接收策略进行了介绍。关键词:MDC

摘   要: 本文提出了基于多描述编码的Peer to Peer方式视频流直播方案,并对该方案中P2P方式视频发布与接收策略进行了介绍。
关键词: MDC  Peer to Peer  视频流

  随着通信技术、数字视频技术的发展和网络基础设施建设的日益完善,传统的、基于文本和图片浏览的Internet服务已逐渐被以音视频为主体的网络多 媒体服务所取代。以音视频为主的多媒体服务对网络带宽的占用,以及对网络服务质量和传输实时性的要求是传统Internet服务业务所不可比拟的。如何在 现有的Internet环境下有效地发送音视频数据,提供用户满意的网络多媒体服务是现今网络研究的一个热门领域。本文讨论了一种结合多描述编码的方法, 用P2P方式进行视频流发送的方案。
1  P2P技术介绍
  P2P技术是一种用于不同PC用户之间共享计算机资源的技术。位于网络上的每个用户都是一个对等实体(Peer),他们彼此独立又可以互相协作,既是服务的提供者又是享用者。早期的P2P网络已在分布式计算、即时通信和文件共享等领域取得了显著成就。
  这里特别值得一提的是近几年兴起的、采用P2P方式的BT(bit torrent)文件下载。它的基本思想是将一个大的文件分成许多小的片断,下载用户非顺序地从网络中其他用户处下载文件的各个分片。当用户下载完某个完 整的分片后,又可将该分片共享,供其他用户下载。与传统的C/S方式文件下载相比,这种P2P下载方式的特点是用户越多下载速度越快,可以最大限度地发挥 网络传输能力。
  但这种文件下载方式不能直接用于视频流的发送,特别是对视频流直播方式不太适合。对于直播视频流来说,它的数据流是实时产生的(不同于文件方式,待发 送的数据已经存放于本地存储内),同时视频直播流的接收和观看必须是实时和顺序进行的。现在基于P2P的视频直播多采用基于应用层的组播方式,视频流发送 是通过构建组播树方式进行的。每个用户(组播树上的一个节点)从自己的父节点处获取完整的视频流进行收看,同时向下游的儿子节点转发视频数据。在这种方式 下,对组播树中的每个Peer节点的网络I/O带宽都有较高要求(在某些用户接入方式下工作不太理想。如ADSL用户,上下行通道不对称,上行带宽很 窄)。并且当组播树的某个节点,特别是位于上层的节点发生故障时,组播树的恢复存在一定难度和时延。
2  多描述编码
  多描述编码MDC(Multiple Description Coding)假设在信源和信道之间有多个信道,各个信道同时出错的概率非常低。通过生成多个同等重要、可独立解码的关于编码的描述,保证在其中一些描述 丢失时,仍可以得到可接受的信号。因此,多描述编码在基于包的网络、无有效保护机制的Internet、分集通信系统(多天线的无线信道)、语音编码、图 像编码、视频编码、多分布的存储系统中有很好的应用前景。
  针对视频的多描述编码构造方法很多,最简单直观的方法是针对空间分辨率、时间分辨率进行亚抽样,编码成多路描述码流。此外,还有多描述量化、多描述变换编码及基于FEC的多描述编码。
3  基于MDC的P2P视频直播方案
  通过对MDC和P2P技术的分析可知,这两项技术在网络多媒体数据传输中有显著的优势和特点。但将这两项技术结合起来进行视频直 播,且能发挥其各自技术优势的方案还未见到。本文提出的视频直播方案,对原始视频采用多描述编码,形成多路码流;对编码后的多路描述流采用P2P方式,使 多点(即多个Peer)相互协作,实现多径传输。具体方案如下。
3.1 MDC编解码模型
  如图1所示,对原始图像帧进行空间亚抽样,形成低分辨率的视频子流。按2n (n可以取1,2,3,……)进行水平和垂直方向的亚抽样。这样一路原始视频流经空间亚抽样后可形成4路、16路等22n 路视频子流。具体的抽样间隔根据实际应用情况进行选择。对每路视频子流进行单独编码,可得到22n 路 编码描述子流。编码后的描述子流通过不同的信道发往接收者(实际上在P2P的发送方式下,不同的描述子流是由不同的Peer发往接收者)。接收者对每路描 述子流进行单独的接收和解码,并将解码后的视频流合成为原始视频流。如果只接收到部分视频子流,也可以通过相应的插值算法恢复出原始视频图像。

3.2 P2P发布网络模型
  与目前大多采用的树状P2P发布网络模型不同(该发布模型是自上而下分层,一对多的数据分发模式),本文采用的是自上而下的分层网状发布模型,如图2所示。

3.3 P2P方式视频发送与接收
  每路描述子流发送采用RTP打包,在包头中要包含以下私有字段:原始流惟一标识、子流标识、时间戳(或帧同步标识)。
  (1)发布网络的初始化
  最先进入网络的用户向发布服务器发出视频传送请求,由于此时用户数较少,用户采用传统的C/S方式直接从种子服务器(种子服务器为视频流的“发源地”)获取数据。
  (2)新的Peer请求加入过程
  第一步:从发布服务器获取直播流信息,直播流信息主要字段包括:直播流标识和流描述信息。
  第二步:用户选择自己感兴趣的流,向发布服务器发送“流申请”(可选项:与此同时用户可以向本地局域网广播申请)。
  第三步:发布服务器返回应答信息(也可是本地Peer用户返回应答信息)。应答信息主要内容如图3所示。

  第四步:子流转发服务器的选择:①优先从本地网络Peer中选取转发描述子流。②不同的子流尽量从不同的Peer上接收。选择了转发服务器后,向选择的Peer发送请求,要求其传送各自的描述子流数据。
  (3)接收过程
  对不同的描述子流分别启动单独的线程进行接收和解码。解码后的多路视频帧置于合成处理缓冲区中。对每帧数据的处理设置一个最大容忍时间。当容忍时间到 达时,应根据处理缓冲区中收到的解码后的子帧编号,选择相应的原始帧恢复算法对图像进行恢复并显示。如果一路视频流的所有描述子流都及时收到并解码,则可 完全恢复原始视频图像,否则要经过插值处理来得到原始图像。
  在整个接收过程中,用户同时对正确接收到的描述子流进行统计。对时延和丢包大的子流,用户可以启动搜索线程,寻找新的Peer来获取该路描述子流。对 于接收状态良好的子流,用户可以生成报告信息发往发布服务器进行“登记”。“告诉”发布服务器,“自己”可以对该路视频流的哪些“子流”进行转发。
  (4)连接丢失处理
  如果用户的某路连接丢失(可能是由于网络故障,或是作为该路流下载服务器的Peer关机或离开),则接收者向发布服务器(或本地用户)发出该路子流的下载请求,以寻找新的下载服务器(Peer)。与此同时,该用户仍然可以根据其他可接收到的子流正常收看视频节目。
4  实验模型介绍
  初步的仿真实验在实验室内通过路由器连接两个局域网构成的小型网络环境下进行。模拟实验共使用15台PC机。PC均为PⅢ 800,内存128MB以上配置,并配备100MB快速以太网卡。其中一台PC作为种子视频服务器和内容发布服务器,其他分布在两个局域网内的主机作为客 户机。播出的视频流以H.263标准编码模型为基础,对CIF格式原始视频流进行空间亚抽样分成4路QCIF格式的子流。对这4路流单独进行编码,形成4 路单独的描述子流,然后进行RTP打包发送给用户。客户端的接入、peer搜索、视频数据的接收和转发算法按照上一章介绍的算法实现。同时在客户端转发数 据时通过随机丢包和延时传送方式,模拟网络的丢包和传输延时。仿真实验采用主观评价方式。实验表明,在实验室环境下建立的基于MDC编码的P2P视频流发 布系统模型可以进行较理想的视频发布和接收。用户可以收看到清晰流畅的视频图像,同时对网络丢包和连接丢失有一定容错性。
5  总  结
  本文提出的方案能更好地发挥P2P方式下多用户协作特性,充分利用网络带宽进行视频流发送。同时由于编码采用MDC方式,该方案 能更好地适应网络带宽变化,同时对网络传输的丢包和延时有较好的适应性和容错性。当然该方案还处于一个较为简单的模型阶段,今后还将从以下几个方面进行研 究:(1)进一步完善P2P播出算法。(2)找到效率更高的MDC编码算法。(3)完善系统实现,在更大范围的真实环境中对系统进行测试。
参考文献
1   Tran D A,Hua K A,Do T T.Zigzag:An efficient peer-to-peer scheme for media streaming.In:IEEE INFOCOM,San   Francisco CA,USA,2003
2   赵谊虹,余松煜,程国华.多描述编码的研究现状及其展望.  通信学报,2005;(1)
3   谢勇均.P2P模式的流媒体服务技术.现代电视技术,2004;(7)

 

http://wenku.baidu.com/view/c1a59380d4d8d15abe234ea2.html

http://www.doc88.com/p-91667718706.html

http://www.docin.com/p-34501902.html

http://www.kinghav.com/cpinfo.asp?id=84

http://www.mscto.com/SoftEngin/SOA/2009022146488.html

http://www.dzsc.com/data/html/2008-1-29/60310.html



推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • nginx+多个tomcat
    学习nginx的时候遇到的问题:nginx怎么部署两台tomcat?upstream在网上找的资源,我在nginx配置文件(nginx.conf)中添加了两个server。结果只显 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  •   1、确认自己的线路是否连接正确腾达a9设置。 ... [详细]
author-avatar
菜菜ING
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有