基于Go的流媒体视频网站的设计与实现_第1页
基于Go的流媒体视频网站的设计与实现_第2页
基于Go的流媒体视频网站的设计与实现_第3页
基于Go的流媒体视频网站的设计与实现_第4页
基于Go的流媒体视频网站的设计与实现_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Go的流媒体视频网站的设计与实现基于Go的流媒体视频网站的设计与实现摘要 本文讲述了基于Go的流媒体视频网站的设计与实现。开发这套流媒体视频网站能让用户无论在视频点播还是视频的上传下载都有一种完美的用户体验,对于高并发的场景可以轻松面对。 本系统采用了GoLand2019.1.3和WebStrom3.2作为前后端开发工具,选用Mysql8.0.15作为后台数据库。该系统包含了5个主要功能模块有:视频点播模块,视频管理模块,用户评论模块,用户管理模块,流控模块。后端采用Golang语言实现,以及所提供优良的nativehttp库实现网络请求。采用模块化设计,API对接前端服务,后端分为Streaming和Scheduler模块处理相应事务。前端采用Vue.js前端框架,结合Element-Ui对后端返回的JSON数据做处理展示。用户通过本网站注册、注销、退出账号,登录用户可以上传、删除等管理自己的视频。游客与登录用户可以观看其他人上传的视频,并可以评论。关键词:B/S架构;前后端分离;MVC;流媒体点播系统

DesignandImplementationofStreamingVideoWebsiteAbstractThispaperdescribesthedesignandimplementationofastreamingvideowebsitebasedonGo.Thedevelopmentofthisstreamingmediavideowebsiteallowsuserstohaveaperfectuserexperienceinbothvideo-on-demandandvideouploadanddownload,andcaneasilyfacehigh-concurrencyscenarios.ThissystemusesGoLand2019.1.3andWebStrom3.2asthefront-enddevelopmenttools,andMysql8.0.15astheback-enddatabase.Thesystemcontains5mainfunctionalmodules:videoondemandmodule,videomanagementmodule,usercommentmodule,usermanagementmodule.ThebackendisimplementedinGolanglanguage,andtheexcellentnativehttplibraryisprovidedtoimplementnetworkrequests.Modulardesignisadopted,andtheAPIconnectstothefront-endservices.Theback-endisdividedintoStreamingandSchedulermodulestohandlethecorrespondingtransactions.Thefront-endusestheVue.jsfront-endframework,combinedwithElement-UitoprocessanddisplaytheJSONdatareturnedbytheback-end.Userscanregister,logout,andlogoutthroughthiswebsite,andthelogged-inusercanupload,delete,etc.tomanagetheirownvideos.Visitorsandlogged-inuserscanwatchvideosuploadedbyothersandcancomment.Keywords:B/Sarchitecture;front-endandback-endseparation;MVC;streamingmediaon-demandsystem.

目录1绪论 71.1课题背景与研究意义 71.1.1课题背景 71.1.2研究意义 81.2国内外流媒体视频点播行业的发展概况 91.2.1国内流媒体视频点播行业发展现状 91.2.2国外流媒体视频点播行业发展现状 92可行性分析 102.1技术可行性分析 102.2经济可行性分析 102.3操作可行性分析 102.4法律可行性分析 103需求分析 113.1系统设计目标 113.2业务流程分析 123.3系统用例 133.3.1游客用例分析 133.3.2登录用户用例分析 153.4功能性需求分析 183.5非功能性需求分析 194概要设计 204.1系统模块总体设计 204.2系统功能模块图 214.3数据库设计 215详细设计与实现 265.1系统的运行环境 265.2相关技术简介 275.2.1Golang编程语言简介 275.2.2Vue.js前端框架简介 275.2.3Axios技术简介 285.2.4Element-UI网站快速成型工具 285.3系统首页设计 285.4系统功能的设计与实现 295.4.1用户管理模块的设计与实现 295.4.2流媒体视频点播模块的设计与实现 305.4.3视频管理模块的设计与实现 315.4.4用户评论模块的设计与实现 335.4.5流控模块的设计与实现 346系统测试 356.1软件测试简介 356.2测试原则 356.3测试需求 356.4测试用例 366.5单元测试 386.6集成测试 396.7系统测试 396.8验收测试 40结论 40参考文献 41谢辞 42

1绪论1.1课题背景与研究意义1.1.1课题背景 随着我国社会消费水平的提高,人们越来越重视生活娱乐,因此流媒体视频点播市场得到了极大的拓展,为流媒体视频产业的发展创造了许多有利的条件。流媒体的出现之前,如果人们想从网络看视频和听音乐,他们必须下载视频和音频文件的计算机存储才能点击播放,不仅浪费了下载时间和硬盘空间,而且也不能满足消费者的便利和确切的需要。流媒体视频点播的发展克服了许许多多的不足之处。流媒体视频一般指的是视频文件的传输以及各种各样压缩技术,将影像信息放置在系统的后台服务器上进行处理以及压缩等等,以此使用户可以在线上观看,从而再也不用等待整个压缩文件下载到个人计算机上。可以说流媒体视频点播的技术是起源于宽带互联网时代,因经济得以发展,人们愈发渴望某种新型的网络科技来相互通信,自90年代以来,一家名为ProgressiveNetWorks的美国公司就成立了,Media在当时的互联网上正式宣布发布,当时他们推出了一款新型的RealAudioC/S音频接收系统,更是在这之后的几年间遵循了网络流媒体技术的发展趋势。在一九九七年的九月份的时候,这所企业改名为RealNetworks,并且前前后后的推出了RealPlayer系列流行的流媒体视频点播的播放器,在其最繁华最好的时候,它在该领域的市场份额一度超过了百分之八十五之多,RealNetworks是流媒体视频点播的真正祖先。但在那之后,微软公司和苹果公司看到了流媒体视频点播行业的巨大潜力。一方面,它强大的竞争攻势让现实新闻感到了危机的存在,再者,从另一个方面去看,它也在不知不觉中推动了流媒体视频点播的长远进步,这使得流媒体视频点播的飞速进步扎根人心。在早些时候,流媒体视频的点播主要是应用在窄带互联网上。由于带宽速度条件的各种各样制约以及其局限性,直到二十世纪九十年代末,人们却还只能在互联网上看到一个很非常非常小的流媒体视频的播放窗口。在千禧年下半年,再者因互联网的全球性的飞速进步,宽带不再是一个梦想。作为流媒体视频点播技术的领头羊,微软、苹果等美国公司近乎处于相同的时间向全世界推出了它们最新的流媒体视频点播技术的宽带解决方案。可以看出,在极其短暂的时间内,流媒体技术取得了腾飞。在贰零零四年的时候,我们可以看到流媒体的发展,我们还可以在互联网上进行全方位的视听接触,真正的实现了一个人坐在一个房间里,环游世界。1.1.2研究意义因信息社会实现了腾飞,流媒体视频点播的技术在互联网媒体传播中起着领头羊的作用。包括但不限于例如流媒体视频的点播或者远程的教育的新型模式,以及企业中应用广泛的视频会议、或者是当下红极一时的直播,诞生了许多网红,线上新闻信息发布,大大缩短民众获取资讯的时间,最后是互联网广告等应用空前广泛,刺激了消费,拉动了经济的发展,更是方便了人们的在全世界的信息的互换和情感的交流。流媒体视频的点播已然成为不仅仅国外,甚至是在我国国内宽带建设中比重相当大的领域之一,大多数的群体对于这些流媒体点播的技术在将来发展普遍持积极乐观想法。并且互联网的巨头们表示,因互联网的用户激烈增长,企业们更是要把握当下时机探索流媒体点播的科技技术的发展。流媒体视频的点播技术摇身一变,俨然已经占据互联网不可或缺的部分,进而发动了互联网对于整体的结构的革命,促进了信息经济的腾飞。在这几年期间,流媒体点播的技术更是应用在全球的各个角落。较为引人注目的是在壹九九五年的时候,划时代的互联网流媒体播放器的问世,流媒体视频的点播在因特网的应用呈现直线的激增。在国际上,各种各样的权威机构正在对流媒体视频的点播进行全面的深入调查。仅仅在千禧那年,在线观看流媒体视频的人数就爬升了六十五个百分点。而在网络科技成熟而又发达的西方,这些流媒体视频点播的接入量俨然高至一亿多,大概占领了互联网的用户数量规模的1/3。而在亚洲大陆,这一数字的规模呈现爆发式的增加至少到达两千余万了,达到了因特网使用者的1/9。随着用户的增长,视频流媒体的技术在互联网上的应用逐年显著增加。到目前来看,流媒体视频点播的市场营收能力已展示其无比雄厚的潜能。这庞大的蛋糕吸引了无数的企业家争先恐后的竞争。在这数年来,Apple等众多之明企业对外宣布成立互联网流媒体联盟,目的是一起加速发展流媒体的市场以及优化改变当下格局,并且制定了与之对应的标准和各种所要执行的协议。也是当时,全球范围内流媒体的市场和竞争态势逐渐明朗。该如何在这个市场上获得更大的蛋糕份额已经变为许许多多的企业家关注的焦点。西放国家的厂商涌入促进了我们中国流媒体市场,使得其发展愈发繁荣,不过竞争也会愈发激烈。从现今来看,对我国的流媒体视频点播领域的影响更是积极向上的。目前大多数的网站是基于Java的Springboot框架或Python的Flask框架设计实现的。这些主流技术集成度较高,不易于了解底层,且编译之后不是机器语言或是解释型语言,运行效率偏慢,对于高并发的处理略微偏弱或者需要引入第三方库才能得以实现。本人开发的流媒体视频网站目标是让用户在视频点播和视频上传下载两方面都拥有完美的用户体验,并且可以轻松面对高并发的场景。1.2国内外流媒体视频点播行业的发展概况1.2.1国内流媒体视频点播行业发展现状 据权威机构的调查结果显示截至贰零一四那一年,中国的流媒体视频点播的用户的人数已经高至四亿有余,同比上升二十六点八个百分点,更拥有百分之五十六点二的网民有使用流媒体视频网站的习惯,庞大的群体刺激了国内流媒体视频网站的行业发展,这些年来,腾讯视频、爱奇艺、优酷、Bilibili等流媒体网站如雨后春笋般,并呈现不断增长的态势。从2006年开始,我国第一个流媒体网站诞生后到现在仅仅十余年,但其在段时间内的发展却十分的惊人。流媒体网站依托于互联网、移动手机等新生媒体,在短时间内得到了质的提升。 相对于国外,我国流媒体网站的发展起步还是稍微较晚,且视频质量残次不齐,以低质视频追逐高点击率。或者视频资源的同质化现象严重,除部分专业化视频网站在内容上做得比较突出之外,其他得在视频资源方面的个性化优势得不到凸显。1.2.2国外流媒体视频点播行业发展现状 相对于国内流媒体视频,西方的流媒体行业发展的时间更早,诞生了许许多多非常著名的流媒体视频网站,如:YouTube、Netflix、Vimeo、Dailymotion等等数不胜数,而最具代表性的网站是Youtube和Netflix。在全球范围内都有庞大的用户,也基于用户数量庞大的原因,优质的视频资源相对于国内也比较多,尤其是国内所被诟病的原创视频的数量。 相对于国内,西方流媒体视频是以订阅数为主要盈利方式。在贰零一七年,Netfli与和HBO的收入分别为将近十二亿美元和六十三亿美元有余。订阅收入的增长率分别为百分之五十八和百分之十点六。但是在Netflix在DVD租赁业务却呈现断崖式的下跌态势。Netflix自二零一一年将会全面向流媒体视频点播的业务的转型,更是借助行业的发展红利和自身优异的经营布局的能力不断向其他的国家扩张市场份额,其渠道的优势和全球分发的能力也逐渐显现。2可行性分析2.1技术可行性分析技术上的可行性的分析主要指的是用技术的眼光分析目前的技术水平和能力是否可以顺利完成所分配的开发工作任务,以及硬件的配置和软件的配置、各类技术人员的数量、水平等能否充分的满足开发任务工作的的需求。 我所要开发的流媒体视频点播系统主要是处理视频流数据,以当下的计算机硬件以及软件和个人能力,可以满足系统的开发与运行。本流媒体视频网站前端采用Vue.js框架以及Element-UI的GUI组件库、后端采用Golang作为开发语言,以及开源项目Httprouter作为后端HTTP路由、后台数据库采用Mysql、在前端使用Axios向后端服务器发起API请求,并通过JSON格式返回数据。2.2经济可行性分析经济的可行性分析旨在,例如开发本流媒体视频点播网站所投入的资金和开发完成后,本流媒体视频点播网站系统投入使用后所带来的经济收益进行对比和分析,确认所开发的系统是否会给企业带来一定的经济收益。随着生活水平的提高,人们越来越注重娱乐生活的质量,对于娱乐的需求日益增大,与之对应,流媒体的发展也越显重要。流媒体视频点播网站是一个可以直接产生经济效益的投资,不仅可以通过订阅的模式为视频的创作者带来创收,广告收费模式也推动了其他产业的发展。2.3操作可行性分析 本流媒体视频点播网站采用B/S架构实现,只需要通过浏览器就能访问本系统。用户面向全年龄段人群,因此操作十分简便,只需要使用浏览器即可。界面采用Element-UI组件库,设计简约、友好,用户可以在短时间掌握该流媒体视频点播网站的使用方法。2.4法律可行性分析法律的可行性旨在于研究在本流媒体视频点播系统开发在这一系列过程中是否可能涉及到有关合同或者侵权、责任等等与法律相违背和抵触的问题。本流媒体视频点播网站是本人在指导老师的指导下独立完成的,故不存在侵权行为或者由于本系统带来的法律纠纷等问题,所以在法律上是可行的。3需求分析根据系统开发周期的要求可以分成五个阶段,分别是:计划阶段和需求分析阶段、设计阶段和实施阶段、最后一个阶段为支持阶段。例如在流媒体视频网站系统的进展计划完成后,第一步是根据本流媒体视频点播项目计划所要求的开启系统需求分析阶段。3.1系统设计目标 系统规划的总体任务是实现流媒体视频点播。用户可以对自己所创作的视频进行上传、删除,查看观看人数以及评论人数。用户可以观看浏览其他视频,评论等。本系统在设计时应该满足以下目标:系统人机界面美观,友好且便于操做,用户可以进行登录、注册、注销操作;系统各个功能模块显示清晰,易于操作;实现视频的搜索功能实现流媒体视频的上传、删除以及视频基本信息的填写功能;实现视频的点播功能;实现流媒体的流控功能,防止用户或黑客恶意访问系统从而占用带宽和系统内存,提供流量控制;实现视频的评论功能;实现视频播放量的统计功能;实现视频评论数统计功能;系统最大限度地实现易维护性和运行稳定性;由于本流媒体视频点播网站系统的设计是动态的,所以在把握控制本软件开发的设计原则上就会显得异常的重要。软件开发的每一个人都务必了解在系统的设计基本原则,可以概括为以下的几点:各个子组件的复用性;最大程度的简洁,本人解决各种疑惑的大体方向都是把较为复杂的问题尽最大程度的减小,简洁化、简单化,这种解决方案也是我对于中间件或多层体系的最终期望和目的;对于任意一个组件的最终的代码实现上应该需要展示系统的核心特点,因为系统的事物核心点仅仅只有一个,所编写的代码如果越靠近核心点,说明系统的设计就愈发简单,最初成品的系统就愈发稳定。在大多数的表表现,任意一个组件或许不可以映射系统事物的核心本质,可能更需要多个组件的组合以此来相互配合,那么能够正确使用合适的设计模式就重中之重了;灵活的拓展性,如若本流媒体视频点播网站的设计需要具备灵活性和拓展性,在后期可以在本系统的架构上进行二次、三次开发。3.2业务流程分析 流媒体视频点播网站的业务流程描述如下:游客打开网站进入主页,点击登录按钮跳转至登录/注册界面。未拥有账户的游客输入账户和密码,点击注册按钮即可在本系统注册新的账号,随后以登录用户跳转至网站主页。已拥有账户的用户输入账户和密码,点击登录后即可登录本系统,随后以登录用户跳转至网站主页。已登录用户点击右上角出现下拉框,有切换账户和退出登录两个选项;点击切换账户选项后系统将为用户退出登录当前账户并跳转至登录页面,并可重新登录;点击退出选项后系统将为用户退出登录当前账户,用户可以游客身份进行其他操作。游客/登录用户可以从主页中浏览所有已上传至该网站的所有视频信息。并可以点击所感兴趣的视频跳转至视频播放页面。在视频播放页面,游客/用户使用HTML5播放器控制视频的播放与暂停。视频的下方为视频的基本信息包括:流媒体的标题、流媒体的描述、流媒体的上传时间、流媒体的上传作者等。在视频播放页面,视频页面底部是用户评论部分,游客/用户可以查看到对于该视频的所有评论,并且已登录的用户可以发表评论。已登录用户在网站主页可以进入用户视频管理界面,在用户视频管理界面可以上传视频,填写视频的基本信息如视频标题、视频描述、上传视频封面等操作。在用户视频管理界面显示当前用户所上传的所有视频,并会对每个视频进行播放量统计和每个视频的评论数统计。3.3系统用例 系统的用例指的是以文字的表现形式的情景描述,以此表现某一参与者使用本网站来实现一些特定的目的。系统的用例基本思想表现在:从参与者、用户的观点来看,使用者或许并不愿意深入了解本网站的内部组件,使用者可能只想了解的是系统所能提供的服务,也就是所被开发出来的网站将是如何被正确和高效使用的。3.3.1游客用例分析 本系统种游客的模块用例图,如图3.1所示。图3.1游客模块用例图 用例UC1:登录 范围:流媒体视频点播网站 主要参与者:未登录的用户 涉及关注点: -游客/未登录用户:希望获取更多权限,使用更多功能。 前置条件:无。 成功保证:用户信息存在数据库中 主要成功场景:在本流媒体视频点播网站的主页点击登录,随后跳转至登录/注册页面。在输入框分别输入用户的账号或者用户的密码。点击登录按钮。用例UC2:注册 范围:流媒体视频点播网站 主要参与者:游客 涉及关注点: -游客/未登录用户:希望获取更多权限,使用更多功能。 前置条件:无。 成功保证:存储新注册用户信息,在数据库中生成新用户的记录。 主要成功场景:主页点击登录跳转至登录/注册页面。输入注册账号、注册密码。点击注册按钮3.3.2登录用户用例分析 已登录用户模块用例图,如图3.2所示。图3.2登录用户模块用例图用例UC3:查看视频的评论 范围:流媒体视频点播网站 主要参与者:游客/登录的用户 涉及关注点: -游客/登录用户:希望查看该视频下其他用户的见解和看法 前置条件:无。 成功保证:该视频下有储存其他用户评论的信息 主要成功场景:主页点击所想观看的视频。视频下方浏览对于该视频的评论。用例UC4:视频点播 范围:流媒体视频点播网站 主要参与者:游客/登录用户 涉及关注点: -游客/登录用户:希望观看所感兴趣的视频 前置条件:无。 成功保证:服务器有存储该视频文件 主要成功场景:主页点击所想观看的视频。进入视频页面,在HTML5播放器点击开始按钮进行视频点播。用例UC5:视频上传 范围:流媒体视频点播网站 主要参与者:登录用户 涉及关注点: -登录用户:用户希望分享自己所创作的视频。 前置条件:用户已登录网站。 成功保证:服务器成功存储该视频文件 主要成功场景:用户视频管理页面点击上传按钮。弹出视频上传页面,选择文件点击上传。跳转至视频信息表单填写页面,点击提交。用例UC6:视频删除 范围:流媒体视频点播网站 主要参与者:登录用户 涉及关注点: -登录用户:用户希望删除自己所上传的视频。 前置条件:用户已上传视频并提交了视频信息表单;用户已登录。 成功保证:视频文件从服务器中删除。 主要成功场景:用户视频管理页面选中所要删除的视频点击右侧删除按钮。确认删除,视频删除完毕。用例UC7:视频播放量统计 范围:流媒体视频点播网站 主要参与者:登录用户 涉及关注点: -登录用户:无 前置条件:用户已上传所要统计播放量的视频;用户已登录。 成功保证:服务器有存储该视频文件,数据库中更新播放量统计数据。 主要成功场景:用户视频管理页面查看相应的视频播放量数据。用例UC7:视频播放量统计 范围:流媒体视频点播网站 主要参与者:登录用户 涉及关注点: -登录用户:用户希望了解自己所创作的视频在网站的播放量。 前置条件:用户已上传所要统计播放量的视频;用户已登录。 成功保证:服务器有存储该视频文件,数据库中更新播放量统计数据。 主要成功场景:用户视频管理页面查看相应的视频播放量数据。用例UC8:视频播评论数统计 范围:流媒体视频点播网站 主要参与者:登录用户 涉及关注点: -登录用户:用户希望了解自己所创作的视频在网站的评论数量。 前置条件:用户已上传所要统计评论数的视频;用户已登录。 成功保证:服务器有存储该视频文件,数据库中存在评论数数据。 主要成功场景:用户视频管理页面查看相应的视频评论数的数据。3.4功能性需求分析本人模拟真实用户的相关业务流程设计该系统的全部功能和特性,完成流媒体视频点播网站的操作和使用使用权限:游客需求内容:账号注册账号登录;视频封面列表展示;视频搜索;视频点播;浏览评论; 使用权限:已登录用户 需求内容:账号登录;账号注销;切换账号;视频封面列表展示;视频搜索;视频点播;评论浏览、评论发表;视频上传、删除;视频播放量统计;视频评论数统计;3.5非功能性需求分析一、性能的需求分析: (1)响应的时间:通常可以容忍相应的时间大概在0.1秒之内。 (2)数据的准确性:有关视频的数据信息要求准确。二、运行需求分析:(1)硬件接口:本流媒体视频点播网站不需要某种特定的硬件或者硬件的接口进行支持。 (2)软件接口:运行于LinuxOS7.0及更高版本。三、其他需求分析:

(1)系统的并发性:本流媒体视频点播网站对于用户的并发性具有较高的需求。 (2)系统图容错性:本流媒体视频点播网站对于用户的输错会有相关的信息提示,使得本系统具有一定程度的容错。4概要设计4.1系统模块总体设计 在系统需求以及功能分析的基础之上,将本网站划分成5个主要的功能模块。视频点播模块:该功能可由游客和已登录用户来操作。该功能实现点击播放网站已上传的视频。视频管理模块:视频上传:该功能只允许已登录用户来进行操作,用户可以上传自己所创作的视频,并且填写有关视频的基本信息和视频封面。视频删除:该功能只允许已登录用户来进行操作,用户可以删除自己所上传的视频。视频播放量统计:该功能只允许已登录用户来进行操作,用户可以查看自己已上传视频的播放量。视频评论数统计:该功能只允许已登录用户来进行操作,用户可以查看自己已上传视频的评论数用户评论模块:提供各用户可以在对应视频下方发表自己的评论及见解,为用户与用户间提供交流的渠道。用户管理:用户注册:该功能提供游客申请注册成为本网站会员,获取其他权限。用户登录:该功能提供给拥有本网站账号的用户登录本系统。账户注销:该功能提供给已登录用户退出登录本网站。流控模块:该功能为防止用户或黑客恶意访问系统从而占用占用带宽和系统内存,提供流量控制。4.2系统功能模块图 根据以上的本流媒体视频点播网站的系统模块设计,该系统的功能模块图如图4.1所示。4.1系统功能模块图4.3数据库设计数据库的设计指的是软件开发种的非常重要的组成部分,数据的设计是否合理、是否优秀关系到整个系统的运行效率以及后期的可维护性与可操作性。常用的数据库有MySQL、MicrosoftSQLServer、NoSQL、MongoDB、Redis等。为了支持较大的数据量和保障安全性以及开发的便利性,本系统采用的是MySQL数据库系统,本系统的数据库名是video_server,总共包含了6张数据表。本网站系统数据库主要包含以下6张数据结构表:users(用户的基本信息表)该表用于记录用户的基本信息。本表的主要字段如表4.1所示。表4.1用户基本信息表FieldTypeNullKeyDefaultExtraAliasidintNOPRINULLauto_increment唯一识别码Login_nameVarcharYESUNINULL用户名pwdtextNONULL密码 用户基本信息表E-R图如图4.2所示。图4.2用户基本信息表E-R图video_info(流媒体视频信息表)此表用于记录系统所有流媒体视频的基本信息。主要字段如表4.2所示。表4.2流媒体视频信息表FieldTypeNullKeyDefaultExtraidvarcharNOPRINULLauthore_idintYESFOREIGNNULLnametextYESNULLdisplay_ctimetextYESNULLcreate_timedatetimeYESCURRENT_TIMESTAMPDEAFULTtitletextYESNULLvideo_descriptiontextYESNULLimg_namevarcharYESNULL 视频信息表E-R图如图4.3所示。图4.3视频信息E-R图session(session信息表)此表用于记录用户登录状态的session信息。主要字段如表4.3所示。表4.3Sesssion信息表FieldTypeNullKeyDefaultExtrasession_idtinytextNOPRINULLTTLtinytextYESNULLlogin_namevarcharYESNULLsession信息表E-R图如图4.4所示。图4.4Session信息E-R图comments(评论详细信息表)此表用于记录用户对于流媒体视频的评论信息。主要字段如表4.4所示。表4.4评论详细信息表FieldTypeNullKeyDefaultExtraidvarcharNOPRINULLvideo_idvarcharYESNULLauthor_idintYESNULLcontenttextYESNULLtimedatetimeYESCURRENT_TIMESTAMP 评论信息表E-R图如图4.5所示。图4.5评论信息E-R图video_view(视频播放量统计表)此表用于记录每个视频的播放量。主要字段如表4.5所示。表4.5视频播放量统计表FieldTypeNullKeyDefaultExtraidvarcharNOPRINULLauthor_idintYESNULLvideo_idvarcharNONULLnum_of_visitorsbigintNONULL 视频播放量统计表E-R图如图4.6所示。图4.6视频播放量统计表5详细设计与实现5.1系统的运行环境 (1)硬件环境: CPU:Intel(R)Core(TM)i5-8250UCPU@1.60GHz1.80GHz; 内存:8GB; 硬盘256GB(2)软件环境: 操作系统:Windows10家庭中文版; 数据库:MySQL8.0.15; 开发工具:JetBrainsGoLand2019.1.3x64WebStorm2019.3.2x64VisualStudioCode浏览器:GoogleChrome版本81.0.4044.92(正式版本)(64位);分辨率:最佳效果1366×768。;5.2相关技术简介5.2.1Golang编程语言简介Go是2007年在Google设计的,旨在在多核,\o"Computernetwork"联网机器和大型代码库时代提高编程效率。设计师想解决Google使用的其他语言的批评,但要保留其有用的特征:静态类型和运行时效率(例如C++),可读性和可用性(例如Python或JavaScript),高性能网络和多处理。。Go于2009年11月公开发布,1.0版于2012年3月发布。Go在Google

以及许多其他组织和开源项目的生产中得到了广泛使用。在2018年4月,原始徽标被程式化的GO倾斜,尾随流线形向右倾斜。但是,地鼠的

吉祥物保持不变。Thompson:一九八三年获得图灵奖和在一九九八年获得美国国家技术奖(NationalMedalofTechnology)得主。他与DennisRitchie是Unix操作系统的原创者。Thompson也发明了C语言的B程序语言。Pike:曾是贝尔实验室(BellLabs)的Unix操作系统团队,和Plan9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字元编码。RobertGriesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。RussCox:Plan9开发者IanTaylor:还曾经完善了已广泛使用之开源码编译器GCCGolang这款编程语言到现在为止可以达到C和C++性能的百分之八十,却远远高于快于C和C++程序的编译链接的速度,就目前非常火热流行的开源软件docker、kubernetes、lxd等等都是使用Golang编程语言所编写而成的,而且2016年Golang语言被评为年度编程语言,可见go的应用场景非同一般。5.2.2Vue.js前端框架简介Vue.JS是一整套完善的用来搭建用户界面的渐进式的前端框架。与其他重量级框架,例如Angular.JS前端框架不同的是,Vue.JS采用的是自底向上增量开发的架构。Vue.JS的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。而在另一个角度来看,Vue.JS完全是有能力驱动使用单个文件组件和Vue.JS生态系统支持的函数库开发的复杂单页应用。5.2.3Axios技术简介Axios是一个基于Promise用于浏览器和Node.js的HTTP客户端,它本身具有以下特征:从浏览器中创建XMLHttpRequest。从node.js发出http请求。支持PromiseAPI。拦截请求。拦截响应。转换请求的数据。转换响应的数据。取消请求。5.2.4Element-UI网站快速成型工具Consistency与现实生活相一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中相一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。Feedback控制反馈:通过多样的界面样式以及各种各样的交互动效让用户可以清晰的感知自己的操作;页面反馈:通过用户操作,通过页面元素的变化清晰地展现当前状态。Efficiency简化流程:设计简洁直观的流程和操作;清晰明确:语言表达清晰且表意明确,让用户快速理解进而做出决策;帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。Controllability用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;结果可控性:用户完全可以进行自由的进行操作,包括但不限于撤销、回退和终止当前操作等。5.3系统首页设计 本流媒体视频点播网站的首页设计样式,如图5.1所示。图5.1网站的首页5.4系统功能的设计与实现5.4.1用户管理模块的设计与实现该模块主要用来使游客注册成为网站会员,已有账号的会员登录本网站解锁更多权限。包括用户注册、用户登录、用户退出、用户切换账号四个部分:用户注册,如图5.2所示:图5.2用户登录/注册游客进入登录/注册页面(http://localhost:8080/login),通过router.POST("/user/:username",Login)来接收前端Axios发送的POST请求,Login函数来作为控制器处理游客的注册请求,成功后跳转回到流媒体视频网站的首页(http://localhost:8080)。2.用户登录,如图5.2所示:用户进入登录/注册页面(http://localhost:8080/login),通过router.POST("/user",CreateUser)来接收前端Axios发送的POST请求,CreateUser函数作为控制器处理用户的登录请求,成功后跳转回首页(http://localhost:8080)。切换账号,如图5.3所示:图5.3切换账户/退出 登录用户在主页(http://localhost:8080)点击头像选择【切换账号】,通过清除sessionStorage的内容来清除用户登录的所有信息,以此限制未登录用户的进一步操作,做出权限控制,然后通过Vue.js的router-link跳转至登录/注册页面(http://localhost:8080/login)进行账号切换。退出账户,如图5.3所示:登录用户在主页登录用户在主页(http://localhost:8080)点击头像选择【退出】,通过清除sessionStorage的内容来清除用户登录的所有信息,以此限制未登录用户的进一步操作,做出权限控制控制。使用this.$router.go(0)来强制刷新路由,以此来更新页面显示。5.4.2流媒体视频点播模块的设计与实现 该模块功能是为游客和用户提供视频点播功能。包括视频列表展示、视频点播两部分组成。视频展示列表,如图5.4所示:图5.4视频展示列表 游客和登录用户在主页(http://localhost:8080)可以看到所有的视频展示。前端通过API(http://localhost:8000/allvideos)请求后端服务器之后,以JSON格式得到返回的视频数据以及视频的详细信息。最后在前端渲染处理得到的数据并在页面展示。视频点播,如图5.5所示:图5.5视频点播 游客和登录用户在主页(http://localhost:8080)点击其中视频跳转至(http://localhost:8080/watch)相关播放页面,前端通过API(http://localhost:8000)向后端发送请求,获取流媒体的资源以此来在前端页面展示。5.4.3视频管理模块的设计与实现 该模块为用户提供了视频管理的相关功能。包括视频封面展示、视频播放量统计、视频评论数统计、视频上传和视频删除功能。视频上传,如图5.6、图5.7所示:图5.6视频上传图5.7视频信息填写 已登录用户在个人管理页面(http://localhost:8080/channel)点击右上角【创建】按钮,弹出如图5.6所示对话框。将所需要上传的视频拖进对话框中,通过router.POST("/upload/:vid-id",uploadHandler)来接受前端Axios发送的请求,uploadHandler函数作为控制器处理视频上传的请求。随后跳转至视频信息填写对话框,如图5.7所示,填写视频信息点击上传封面,通过router.POST("/uploadimg/:img-name",uploadImgHandler)来接受前端Axios发送的请求,uploadImgHandler函数作为控制器处理视频封面上传的请求。点击【确定】按钮,,通过router.POST("/user/:username/videos",AddNewVideo)来接受前端Axios发送的请求,AddNewVideo作为控制器处理视频信息添加。视频播放量统计,如图5.8所示:图5.8 已登录用户在视频管理页面中(http://localhost:8080/channel)显示了用户所上传的视频播放量信息。后端通过router.GET("/user/:username/listviews",ListVideoViewNums)接收前端Axios发送的GET请求,ListVideoViewNums函数作为控制器处理获取视频播放量,并通过JSON格式返回数据,之后前端渲染将视频播放量信息与每个视频匹配展示。每点击一次视频,会向后端发送一次API请求(http://localhost:8080/channel),通过router.POST("/videos/:vid-id/views",AddVideoViewNum)接收请求,AddVideoViewNum函数作为控制器增加相应视频的信息。视频评论数统计:已登录用户在视频管理页面中(http://localhost:8080/channel)显示了用户所上传的视频评论数。后端通过router.GET("/listcommentnums",ShowCommentNums)接收前端Axios发送的GET请求,ShowCommentNums函数作为控制器处理获取流媒体视频的评论数,并通过JSON格式返回给前端,前端得到数据后渲染将评论数与每个视频做匹配后展示。5.4.4用户评论模块的设计与实现 该模块为已登录的用户提供与评论相关的功能。包括评论发表、评论查看功能。如图5.9所示:图5.9评论发表已登录用户在相关流媒体视频播放页面(http://localhost:8080/watch),在视频信息下方的评论框,输入评论后,点击底部【评论】按钮。通过router.POST("/videos/:vid-id/comments",PostComment)接收前端Axios发送的POST请求,PostComment函数作为控制器处理用户请求,将用户评论插入数据库。5.4.5流控模块的设计与实现 流控模块为防止用户或黑客恶意访问系统从而占用带宽和系统内存,提供流量控制。如图5.10所示:图5.10流控模块 使用令桶牌算法,每当有一个用户连接进来,就从桶里面取出一块令牌,直到用户完成操作,断开连接之后,系统再将令牌放回桶里。若桶里的令牌全部取出,后端将禁止用户获取连接,有效的做出流量限制,防止用户恶意访问系统,从而占用带宽和系统内存。6系统测试6.1软件测试简介软件测试是由“验证”和“有效性确认”活动所构成的整体。“验证”是检验软件是否已正确实现系统的功能和特性;“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。软件测试是软件质量保证的关键步骤。软件总存在缺陷。只有通过测试,才可以发现软件缺陷;也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去;软件中存在的缺陷带来的损失是巨大的,这也说明了软件测试的必要性和重要性。按时间、阶段进行可进行以下划分:单元测试、集成测试、系统测试和验收测试。6.2测试需求软件测试的需求指的是在软件开发的项目中所要测试的内容。软件的测试需求是详细的、清晰的。测试的需求若详细,且精准,这样的话就会对所要被测试的软件的了解就愈发深刻,工作的内容就更加的清晰,保证软件测试的质量和软件测试的进度就更加的有效果,这样可以规避在软件测试的过程中的各种各样的疏漏。简而言之,这是一个测试的范围。 本人给每一个测试需求以VS-001开始编号,以此类推。 测试需求的优先级分为高、中、低三类:优先级为高,说明是关键的任务需求,必须实现,否则表明项目失败;优先级为中,表明最终版本要求;如若任务紧急,可在下一个版本中实现;优先级低,指的是在功能上的加强,该功能的实现将促使本产品更完善。 测试需求如表6.1所示。表6.1测试需求表需求编号需求简述优先级备注说明VS-001用户注册测试高必须实现的关键任务VS-002用户登录测试高必须实现的关键任务VS-003链接测试高必须实现的关键任务VS-004流媒体列表展示测试高必须实现的关键任务VS-005流媒体点播测试高必须实现的关键任务VS-006流媒体上传测试高必须实现的关键任务VS-007流媒体删除测试高必须实现的关键任务VS-008播放量统计测试高必须实现的关键任务VS-009评论数统计测试高必须实现的关键任务VS-010用户发表评论测试高必须实现的关键任务VS-011查看评论列表测试高必须实现的关键任务6.3测试用例软件测试的用例是对特定软件产品测试任务的描述,反映了测试方案、方法、技术和策略。它的内容包括软件测试目标和软件测试环境、软件测试的输入数据以及软件测试步骤,接着是软件测试的预期结果和软件测试的脚本等等,最后是表单和文档。用通俗的话来描述,软件的测试用例是为特定目标准备的一组测试输入、执行条件和预期结果,以验证是否满足特定的软件需求。撰写的测试用例如下(选择性举例)。表6.2用户登录测试用例测试用例编号VS-001-1测试标题用户登录优先级高前置条件无输入账户:dcxx密码:000操作步骤在网站主页点击右上角【登录】跳转至登录页面,输入账户密码,点击【登录】预期结果登陆成功,跳转至主页表6.3用户注册测试用例测试用例编号VS-002-2测试标题用户注册优先级高前置条件无输入账户:dcxx密码:000操作步骤在网站主页点击右上角【登录】跳转至登录页面,输入账户密码,点击【注册】。预期结果注册成功,跳转至主页。表6.4流媒体列表展示测试用例测试用例编号VS-004-3测试标题流媒体列表展示优先级高前置条件无输入无操作步骤输入本流媒体视频点播网站的网址。预期结果主页展示所有已上传的流媒体视频。表6.5流媒体上传测试用例测试用例编号VS-006-4测试标题流媒体视频上传优先级高前置条件用户已登录输入视频文件,标题,说明,封面操作步骤进入视频管理页面,右上角点击【创建】,将视频文件拖入弹窗,点击【下一步】,填写将要上传的视频标题、说明,再选择视频封面,点击【确定】预期结果视频上传成功表6.6用户发表评论测试用例测试用例编号VS-010-5测试标题用户发表评论优先级高前置条件用户已登录输入输入评论操作步骤进入流媒体视频点播页面,在视频下方输入将要发表的评论,点击【评论】按钮。预期结果评论发表成功表6.7查看评论列表测试用例测试用例编号VS-011-6测试标题查看评论列表优先级高前置条件无输入无操作步骤进入流媒体视频点播页面,在视频发表评论下面查看对于该视频的评论。预期结果查看列表成功6.4单元测试软件的单元测试是旨在对软件中的最小的可以测试单元进行检验。对于单元测试中单元的含义,用稍微通俗的话来描述,是要对真实情况去辨别具体的内容。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行最低级别的测试活动,软件的独立单元是要处于与程序的其他部分互不干涉的情况下所测试的。(1)用户的注册测试若用户没有本流媒体视频网站的账户,在账户输入框中输入所要注册的账户明,在密码输入框中输入密码,点击【注册】(2)用户登录测试若用户已拥有本流媒体视频网站的账户,在账户输入框中输入所要注册的账户明,在密码输入框中输入密码,点击【登录】(3)流媒体列表展示测试用户或游客在浏览器地址栏输入本流媒体视频网站地址,跳转至本网站。本网站将视频封面、视频标题、视频作者等展示出来。

(4)流媒体视频上传测试用户登录成功本流媒体视频网站后,点击本流媒体视频网站右上方进入视频管理页面,在视频管理页面点击【创建】按钮,选择所要上传的视频,点击【下一步】,填写所要上传视频的基本信息,点击【

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论