热门标签 | 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



推荐阅读
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
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社区 版权所有