摘 要
随着网络技术的更新迭代,基于HTTP的视频流已经成为不同视频流服务中视频内容传输的事实标准。这使得更多的视频服务提供商通过互联网传输的方式,将各个用户所拍摄的生活视频进行包装整理,并通过互联网平台的方式呈现给用户。然而,这些视频内容在获取过程中很容易受到不同网络环境的影响,比如带宽不足以及不同视频源服务器。这将对当前的网站视频服务平台造成一定的影响。究其根本,则是由于当前的服务平台都采用较为单一的数据提取的方式,难以适应当前多元化数据传输的环境。
因此,基于上述挑战,本文将基于python框架设计一款具有多任务协同异步视频获取的客户端,我们称为Multitasking Asynchronous Video Client(MAV)。具体来说,本文首先在python语言下设计编写同时支持命令行模式与GUI方式的Http客户端;在基于上述客户端的,通过加入多种不同视频网站的视频获取方法,来增加客户端对不同网络源的鲁棒性,以应对来自不同设备传输过程中所产生的各种问题。最后,再利用Python的多线程技术以及异步技术复合式地获取视频的各种元素信息,从而提高视频抓取的效率,并将上述操作利用python实现相应的GUI操作界面。
关键词:http;多线程;视频流;客户端;多平台
第1章 前 言
1.1研究背景及意义
视频内容在全球IP流量中占主导地位,预计到2020年将达到82%[1]。此外,今天的大多数视频内容是由使用基于HTTP流媒体技术的视频流媒体服务提供的,如DASH[2]、微软的平滑流媒体[3]、Adobe的HTTP动态流媒体[4]或苹果的HTTP实时流媒体[5]。流媒体[4],或苹果的HTTP实时流媒体[5]。在基于HTTP的流媒体中,一个视频文件被分割成多个片段并存储在服务器上,每个片段在适当的时间被请求,并通过HTTP传输。在HTTP流媒体中,一个视频文件被分割成多个片段并存储在服务器上,每个片段在适当的时间被请求,并使用HTTP传输[6]。目前,由于带宽不足和高度可变,在无线边缘以令人满意的服务质量传输视频内容方面存在着巨大的挑战。这一挑战加剧了,因为预计到2020年,无线设备将占全球IP流量的三分之二[1]。在文献中,有几个建议是为了减少最后一跳广播网络的带宽使用。我们在本文中关注的是信息理论的方法,即服务器同时向多个客户端广播索引编码信息到多个客户[7], [8]。这种广播信息同时被多个客户端接收,他们通过使用侧面信息(以前下载的信息)解码他们需要的信息。编码传输中内容的编码和解码是通过简单的XOR操作实现的。一些研究发现,编码传递可以有几项研究发现,编码交付改善了内容交付[9]-[11]。然而,这些研究大多停留在理论上,因此,据我们所知,目前还没有在本地部署使用多任务异步传输方式来改善基于HTTP的视频内容传输。为了保证文件的可靠传输,我们使用制定一种规则来约束传输过程,也就是协议。常见的应用层传输协议有FTP,HTTP,TFTP,SMTP等等。本文开发的是基于http协议的异步多任务协同视频传输服务器。http是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。也正是由于这种特性,目前这种协议可别用于娱乐性视频的传输服务。随着短视频的业务场景越来越火热,越来越多人开始从PC端传输转为使用手机端进行拍摄上传,这种改变打破了以往网络传输架构,由于手机本身网络传输稳定性各异,视频数据的传输速度出现不同,使得以往视频服务网站的对各个服务器请求的速度出现落差,有时候会出现视频请求流阻塞的情况,这给当前的视频服务平台提供商带来一定的影响。因此本文将开始研究如何解决这种由于传输速度落差而造成视频请求流阻塞的问题,并将更新后的软件通过GUI的方式呈现出一个基础的软件原型。其中,该客户度涉及到一些异步传输的技术。这种异步传输技术目前比较流行,其主要使用场景是是一种面向连接的快速分组交换技术,建立在异步时分复用基础上,并使用固定长度的信元,支持包括数据、语音、图象在内的各种业务的传送。ATM是一种高速网络技术,设计用于LAN、WAN、运营商和服务提供商网络以及因特网核心网络。相对于无连接技术(如IP)而言,它是面向连接的交换技术。通过光纤线路ATM在源和目标之间创建虚电路(专用路径)。这些电路可使带宽和服务质量得到保证。
1.2国内外研究现状
当前,在视频播放平台领域,用户数据自动分析和数字模型的预测很常见。在工作流程中整合来自分布式系统的连续任务,使用户无需传输数据并在适当的时候调用应用程序。在过去的十年中,网格项目中开发了Globus Toolkit [12-14], Unicore [15-16]以及gLite [17-18]等中间件。这些工具主要侧重于面向服务的网格基础设施,为没有网格计算经验的用户提供无缝和安全的数据源访问。经验的用户无缝安全地访问数据源。中间件通过网络服务[19]向Taverna工作平台[20-21]等工作流程管理器暴露应用程序,使用户能够在图形界面中设计和执行复杂的工作流程并远程监控操作。由于抽象数据库接口和多个中间件层的固有复杂性,需要专家来安装。配置和测试这些工具。没有编程经验的用户无法在图形界面中部署数据流,除非对数据和应用程序的访问被特定的服务包装器所封装。根据我们的经验,像这样的场景,开发人员花了大部分时间来设置和调试各种工具。然而,通过图形用户界面构建工作流程并不灵活,也没有足够的效率来节省合理的时间。目前,Python是各种应用领域中使用最广泛的语言之一。网络爬虫技术被广泛应用于互联网搜索引擎当中,可以按照预先设定好的规则自动地抓取特定网站信息。使用Requests库对按关键字搜索的结果商品信息进行下载,使用正则表达式和Beautiful Soup对数据进行初步清洗,最后将数据存储到MongoDB数据库中,实现了预想的目标。
1.2.1 视频数据获取现状
中小型企业依靠详细的网络分析来了解其市场和竞争情况。专注的爬虫通过爬行和索引网络的特定部分来满足这一需求。最关键的是,一个专注的爬虫必须迅速找到尚未被索引的新页面。由于只有通过跟踪一个新的外链才能发现一个新的页面,预测新的外链在实践中是非常重要的。中小型企业使用网络分析来获得有关其市场、潜在客户和竞争的信息。这种分析可以从重点爬虫的索引中提取出来,这些索引包含关于网络特定部分的详细信息。因此,对于一个专注的爬虫来说,让他们的本地索引网页集合与快速增长和变化的网络保持同步是至关重要的[22]。为了实现这一目标,爬虫定期重访并下载网页[23]。由于这个过程在时间和流量上都很昂贵,因此有大量关于高效爬行策略的研究,从有影响力的早期论文[24-26]开始,直到最近的工作,例如见[27-33]和其中的参考文献。设计抓取策略的一个关键输入是网页的变化率。在一个更详细的层面上,网页的变化可以分为内容的变化(即发生在文本、图像等方面的变化)和结构的变化(即增加或删除索引网页之间的超链接,或增加未索引网页的超链接网页[34-35])。重点爬虫的目的是为其客户提供网络特定部分的详细内容分析,接近客户的兴趣[36]。
针对上述情况,若干的研究人员对此进行了深入的研究。其中,Adar等人[37]分析了55,000个网页的抓取情况。数据是从612,000名使用实时搜索工具条的英语用户那里收集的,为期5周(所以偏向于那些确实有变化的网页,因为它们是由人类选择的)。他们考虑了4种类型的时间间隔:基于工具栏用户的浏览行为的时间间隔、5周内的每小时爬行、4天内对每小时爬行中变化较大的网页进行的次小时爬行,以及用2个时钟同步爬行器对变化较大的网页进行的同时爬行。2分钟内有很大变化的网页。他们表明,页面变化频率和数量与顶级域名、页面主题、URL 深度和页面流行度相关。总的来说,在他们的抓取中,34%的网页在间隔时间内没有变化,而其余66%的网页平均每123小时变化一次。Elsas等人[38]抓取了一组2MIL的数据。网页,为期10周。他们报告说,62%的网页在上述期间没有明显变化。所有的文件都是一组查询的一部分,并由人类评判员赋予相关性评分,范围从0(糟糕)到4(完美),由人类评判。他们发现,高度相关的网页比普通网页更有可能发生变化。Bar-Yossef等人[39]研究了网络的衰变(死链接)。他们发现,一些网页和网络的大型子图可以快速衰减。他们提出了一个衡量衰变的方法,并假设这可以用于更有效的爬行。他们提到了返回包含错误信息的200状态代码的网页的问题,他们称之为软404网页。衰减措施需要在抓取后计算,但可以在未来的抓取中作为一项功能使用。Saad等人[40]考虑了一个法国电视档案的100个页面,他们每小时监测一次。他们发现,随着URL深度的增加,页面变化率明显降低。Santos等人[41]研究了网络在特定主题方面的时间动态。他们对两个不同主题(埃博拉和电影)的网页进行了为期30天的日常数据收集,他们认为每个主题每天有相同的22200个和27353个 每个主题每天分别有22200和27353个网页。他们发现,页面主题是变化频率和新链接预期数量的一个重要预测因素。他们还发现,重新访问已经下载的页面会导致新的页面,但这些页面不一定有相同的主题。对于这两个主题来说,几乎所有的页面要么变化频率在0到0.1之间,要么在0.9到1.0之间,所以要么非常频繁,要么根本没有。这项工作的局限性在于,他们只研究了两个主题,而且他们对页面变化的定义可能有些松散,因为它没有考虑到动态的html内容,比如广告。Ntoulas等人[42]在一整年的时间里对154个网站的每周快照进行了抓取,他们每周对每个网站的下载量高达200,000页。他们发现,网页的周转率很高(出生和死亡),链接的周转率甚至更高。内容转变的程度可能会随着时间的推移而保持一致:一周内发生变化的网页可能会在下一周内发生类似程度的变化,而变化不大的网页将继续经历很少的变化;然而,这种相关性在不同的网站之间会有很大的不同(这些观察与我们的观察一致)。页面以每周8%的速度创建,他们估计20%的页面在一年后将不再被访问。 事实证明,链接的动态性明显高于内容,他们测量了每周25%的新链接,一年后大约80%的链接被新链接取代。一旦页面被创建,它们通常只经历轻微的或没有变化。一年后仍可使用的页面中,有一半没有变化。lston和Pandey[43]研究了两组独立的10,000个URL,一组有50个快照,另一组有30个快照各自间隔2天的时间。他们介绍了信息的持久性,即广告等短暂的内容与博客文章等持久的内容,作为衡量抓取有效性的一个重要指标。他们发现,变化频率与信息寿命没有关系。他们提出了一种抓取策略,将页面片段的平均呆滞度而不是页面整体考虑在内,这将优先考虑具有高寿命的内容。这个政策背后的理由是,尽管寿命不是一个预测页面变化的因素,但它是一个重要的因素,决定了页面变化的有用性。Grimes[44]对23,200个页面做了500个小时的抓取,其中变化间隔小于48小时的页面被降维处理。他们发现,很少有案例与泊松模型一致,但只有一小部分有明显差异。他们通过查看顶级域名,按地区对网页进行了汇总,并显示变化发生在 在夜间和周末发生的频率较低。Gupta等人[45]在20天内每30分钟抓取一次87个印度新闻来源。他们观察到,新的新闻文章的添加速度因主题而异,与工作日相比,周末创建的新文章较少。
1.2.2网络带宽的局限性
在局域网中,由于同时进行的程序较少,所以可用带宽是非常充足的。然而,在广域网中,汇聚着来自各个局域网的流量。这导致每个应用程序分得的可用带宽并不多。并且,随着广域网中应用程序的增加,特定应用程序可用的带宽量将迅速降低[40],这可能对应用程序的性能产生重大影响。除了网络会影响应用程序的可用带宽之外,网络管理员也可以通过设置网络 QoS 来限制程序的可用带宽。例如 IP 语音 (VoIP) 的可用带宽一般会比其他的应用程序要高。其中的原理是通过 QoS 提升了 IP语音程序的优先级。因此,当我们开发的程序与这些优先级高的程序同时在广域网中竞争带宽时,我们的程序的可用带宽会变得比较低。除了有限的带宽之外,网络中还存在着 延迟、丢包、抖动、误码等损伤。它们对应用程序的影响不像有限的带宽那样可以让我们直观的观测到。但是它们对产品性能有非常重要的影响。大多数的广域网都使用基于 TCP 和 UDP 的连接传输数据。这两种连接方式对损伤有着不一样的反应。在不考虑带宽限制的情况下,随着延迟和丢包的增加,基于 TCP 连接的应用程序的传输速率会放缓,确保所有数据可以成功传输[41]。而基于 UDP 的报文因为无连接的特性,依旧会保持高速的发送速率,但是报文可能会丢失或者无法按顺序到达接收端。基于 TCP 的应用程序在传输数据之前,会先确认是否建立了 TCP 连接。 HTTP(www)流量、FTP、 microsoft网络和大多数通用流量以及一些自定义应用协议都是基于 TCP 连接传输。它们对延迟和损伤非常敏感。 假设,我们在北京和广州之间运行一个基于 TCP 的应用程序。在发送数据时,数据不会一次全部发送,而是会被分成一个个的小包分批次发送。它会在确认包(ACK)从接收端返回之前发送尽可能多的数据(在确认包(ACK)从接收端返回之前可以发送的最大数据量由TCP Windows Size参数控制)。并且,它同时会确认数据是否成功到达接收端。在所有数据发送完之前,TCP会重复上述动作。所以,数据的传输是呈锯齿状的。如今,许多公司都在使用VoIP 和video over IP等实时流媒体应用程序。这些应用程序基于UDP协议。就像上文介绍的,UDP 报文对延迟不敏感,但会受到抖动、丢包和误码的影响。这些损伤都会导致语音中断、图片传输受到阻塞等等[42]。这是因为,当数据包在网络上传输时,它们受到的时延不一样,这导致它们到达接收端的时间不一致,出现乱序。UDP没有错误重传机制,即使数据包丢失或者乱序,它也不会重新传送。这就像上个世纪我们寄包裹。寄件人不知道它到达的时间,它能否顺利到达,也不知道它在途中有没有损坏。 在良好的局域网中,丢包、抖动、误码、乱序基本上是不存在的。然而,在无线网络、卫星网络和移动网络中,这些损伤则是时有发生。如果我们仅仅是在局域网上进行程序测试,毫无疑问是不够的。而且,随着人们对移动设备的依赖加深,大家会更多的使用WIFI、4G等无线网络来接收数据。这意味着应用程序需要应对这些潜在的丢包、抖动、乱序和误码等损伤。
1.3主要研究内容
实现http的客户端与http服务器通信以及提供多个用户同时访问服务器的功能,具体实现下面几个功能:
(1)编写的服务器同时支持命令行模式和GUI 方式
(2)支持客户端使用不同参数来兼容不同视频网站数据获取方法
(3)建立对丢包视频数据的重传启动机制
(4)建立异步以及多线程技术提高视频数据获取效率
1.4论文组织结构
本文主要分为五个章节:
第1章前言。主要介绍了研究本课题的背景与意义、国内外的研究现状以及本课题需要完成的任务。
第2章相关理论。主要介绍了http协议以及多线程,包括协议的有什么特点、具体的实现以及多线程的基本概念。
第3章总体框架。主要介绍了客户端的设计模式,以及服务器的设计模式。主要实现技术。
第4章此处简要介绍了实现过程中所用到的技术,包括视频数据获取框架、异步编程技术。
第5章基于http的多任务视频抓取客户端设计与实现。阐述了该软件的主要设计的原理及背后的核心思想,接着介绍了测试的主要平台硬件设备情况,以及相关的准备工作以及测试结果。
1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。
2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。
原创文章,作者:1158,如若转载,请注明出处:https://www.447766.cn/chachong/160402.html,