【《基于Go语言的流媒体视频网站设计》7600字】_第1页
【《基于Go语言的流媒体视频网站设计》7600字】_第2页
【《基于Go语言的流媒体视频网站设计》7600字】_第3页
【《基于Go语言的流媒体视频网站设计》7600字】_第4页
【《基于Go语言的流媒体视频网站设计》7600字】_第5页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

I第1章引言随着我国社会消费水平的提高,人们越来越重视生活娱乐,因此流媒体视频点播市场得到了极大的拓展,为流媒体视频产业的发展创造了许多有利的条件。流媒体的出现之前,如果人们想从网络看视频和听音乐,他们必须下载视频和音频文件的计算机存储才能点击播放,不仅浪费了下载时间和硬盘空间,而且也不能满足消费者的便利和确切的需要。流媒体视频点播的发展克服了许许多多的不足之处。流媒体视频一般指的是视频文件的传输以及各种各样压缩技术,将影像信息放置在系统的后台服务器上进行处理以及压缩等等,以此使用户可以在线上观看,从而再也不用等待整个压缩文件下载到个人计算机上。目前,随着多媒体及网络领域的相应国际标准与协议的制定,极大地促进和推动了流媒体技术的应用与发展。国际标准化组织(ISO)和国际电工委员会(IEC)下的运动图像专家组MPEG制定的MPEG-1、MPEG-2、MPEG-4和MPEG-7等标准已经广泛应用在广播、电缆网络、有线电视网(CATV)以及卫星直播等领域了;而国际电信联盟(ITU-T)下的视频编码专家组VCEG制定的H.26x系列标准则在视频点播(VOD)、数字电视、实时视频监控、视频会议和多媒体服务(MS)等领域应用广泛,如H.261、H.263、H.264等。移动互联网以“无处不在的网络,无所不能的业务”为发展方向,随时随地地通过便携式移动终端设备访问互联网的各种应用,已经极大改变了人们的生活方式。随着宽带无线接入技术及移动终端技术的快速发展,移动用户数量迅猛增长。近几年,通过移动互联网接入网络的用户数已经远超通过桌面互联网访问网络的用户数,如Facebook的月活跃8.45亿用户中有4.25亿来自移动端,占50%;Twitter用户中移动用户比例为55%;早在2011年12月为止,中国网民突破5亿,移动互联网用户达3.5亿,约占总网民的70%。移动流媒体是传统流媒体向移动互联网的延伸,通过向连接上移动网络(如蜂窝移动网络、无线宽带通信网络等)的移动终端设备提供流式多媒体服务,结合移动终端的便利性,使用户能够随时随地地享受“实时观看”的新型通信服务。并且移动流媒体类型众多,除了典型的移动流媒体点播服务、在线教育及远程监控,还包括移动流媒体消息、流媒体邮件、移动流媒体游戏、移动流媒体电话/会议、移动流媒体购物等新型的移动流媒体应用。目前,移动流媒体业务已经在很多国家和地区推出,并在某些国家和地区(日本、韩国)得到了良好的发展。3G技术的普及和4G技术的兴起开创了无线通信与Internet、流媒体融合的新时代,移动流媒体业务也将迎来下一个增长点。最新的移动互联网分析预测报告,到2016年,移动流媒体流量的年复合增长率将达到90%,移动流媒体将占据整个移动互联网中超过70%的流量。由此可见,移动流媒体业务的发展必将对人们的生产生活带来深远影响。第2章可行性分析2.1技术可行性分析技术上的可行性的分析主要指的是用技术的眼光分析目前的技术水平和能力是否可以顺利完成所分配的开发工作任务,以及硬件的配置和软件的配置、各类技术人员的数量、水平等能否充分的满足开发任务工作的的需求。我所要开发的流媒体视频点播系统主要是处理视频流数据,以当下的计算机硬件以及软件和个人能力,可以满足系统的开发与运行。本流媒体视频网站前端采用Vue.js框架以及Element-UI的GUI组件库、后端采用Golang作为开发语言,以及开源项目Httprouter作为后端HTTP路由、后台数据库采用Mysql、在前端使用Axios向后端服务器发起API请求,并通过JSON格式返回数据。2.2经济可行性分析经济的可行性分析旨在,例如开发本流媒体视频点播网站所投入的资金和开发完成后,本流媒体视频点播网站系统投入使用后所带来的经济收益进行对比和分析,确认所开发的系统是否会给企业带来一定的经济收益。随着生活水平的提高,人们越来越注重娱乐生活的质量,对于娱乐的需求日益增大,与之对应,流媒体的发展也越显重要。流媒体视频点播网站是一个可以直接产生经济效益的投资,不仅可以通过订阅的模式为视频的创作者带来创收,广告收费模式也推动了其他产业的发展。2.3操作可行性分析本流媒体视频点播网站采用B/S架构实现,只需要通过浏览器就能访问本系统。用户面向全年龄段人群,因此操作十分简便,只需要使用浏览器即可。界面采用Element-UI组件库,设计简约、友好,用户可以在短时间掌握该流媒体视频点播网站的使用方法。第3章需求分析3.1功能性需求分析本人模拟真实用户的相关业务流程设计该系统的全部功能和特性,完成流媒体视频点播网站的操作和使用使用权限:游客需求内容:账号注册账号登录;视频封面列表展示;视频搜索;视频点播;浏览评论;使用权限:已登录用户需求内容:账号登录;账号注销;切换账号;视频封面列表展示;视频搜索;视频点播;评论浏览、评论发表;视频上传、删除;视频播放量统计;视频评论数统计;3.2非功能性需求分析3.2.1性能的需求分析(1)响应的时间:通常可以容忍相应的时间大概在0.1秒之内。(2)数据的准确性:有关视频的数据信息要求准确。3.2.2运行需求分析(1)硬件接口:本流媒体视频点播网站不需要某种特定的硬件或者硬件的接口进行支持。(2)软件接口:运行于LinuxOS7.0及更高版本。3.2.3其他需求分析(1)系统的并发性:本流媒体视频点播网站对于用户的并发性具有较高的需求。(2)系统图容错性:本流媒体视频点播网站对于用户的输错会有相关的信息提示,使得本系统具有一定程度的容错。第4章概要设计4.1系统模块总体设计在系统需求以及功能分析的基础之上,将本网站划分成5个主要的功能模块。4.1.1视频点播模块该功能可由游客和已登录用户来操作。该功能实现点击播放网站已上传的视频。4.1.2视频管理模块视频上传:该功能只允许已登录用户来进行操作,用户可以上传自己所创作的视频,并且填写有关视频的基本信息和视频封面。视频删除:该功能只允许已登录用户来进行操作,用户可以删除自己所上传的视频。视频播放量统计:该功能只允许已登录用户来进行操作,用户可以查看自己已上传视频的播放量。视频评论数统计:该功能只允许已登录用户来进行操作,用户可以查看自己已上传视频的评论数4.1.3用户评论模块提供各用户可以在对应视频下方发表自己的评论及见解,为用户与用户间提供交流的渠道。4.1.4用户管理用户注册:该功能提供游客申请注册成为本网站会员,获取其他权限。用户登录:该功能提供给拥有本网站账号的用户登录本系统。账户注销:该功能提供给已登录用户退出登录本网站。4.1.5流控模块该功能为防止用户或黑客恶意访问系统从而占用占用带宽和系统内存,提供流量控制。4.2数据库设计数据库的设计指的是软件开发种的非常重要的组成部分,数据的设计是否合理、是否优秀关系到整个系统的运行效率以及后期的可维护性与可操作性。常用的数据库有MySQL、MicrosoftSQLServer、NoSQL、MongoDB、Redis等。为了支持较大的数据量和保障安全性以及开发的便利性,本系统采用的是MySQL数据库系统,本系统的数据库名是video_server,总共包含了6张数据表。本网站系统数据库主要包含以下6张数据结构表:users(用户的基本信息表)该表用于记录用户的基本信息。本表的主要字段如表4.1所示。表4.1用户基本信息表FieldTypeNullKeyDefaultExtraAliasidintNOPRINULLauto_increment唯一识别码Login_nameVarcharYESUNINULL用户名pwdtextNONULL密码用户基本信息表E-R图如图4.1所示。图4.1用户基本信息表E-R图video_info(流媒体视频信息表)此表用于记录系统所有流媒体视频的基本信息。主要字段如表4.2所示。表4.2流媒体视频信息表FieldTypeNullKeyDefaultExtraidvarcharNOPRINULLauthore_idintYESFOREIGNNULLnametextYESNULLdisplay_ctimetextYESNULLcreate_timedatetimeYESCURRENT_TIMESTAMPDEAFULTtitletextYESNULLvideo_descriptiontextYESNULLimg_namevarcharYESNULL视频信息表E-R图如图4.2所示。图4.2视频信息E-R图session(session信息表)此表用于记录用户登录状态的session信息。主要字段如表4.3所示。表4.3Sesssion信息表FieldTypeNullKeyDefaultExtrasession_idtinytextNOPRINULLTTLtinytextYESNULLlogin_namevarcharYESNULLsession信息表E-R图如图4.3所示。图4.3Session信息E-R图comments(评论详细信息表)此表用于记录用户对于流媒体视频的评论信息。主要字段如表4.4所示。表4.4评论详细信息表FieldTypeNullKeyDefaultExtraidvarcharNOPRINULLvideo_idvarcharYESNULLauthor_idintYESNULLcontenttextYESNULLtimedatetimeYESCURRENT_TIMESTAMP评论信息表E-R图如图4.4所示。图4.4评论信息E-R图video_view(视频播放量统计表)此表用于记录每个视频的播放量。主要字段如表4.5所示。表4.5视频播放量统计表FieldTypeNullKeyDefaultExtraidvarcharNOPRINULLauthor_idintYESNULLvideo_idvarcharNONULLnum_of_visitorsbigintNONULL视频播放量统计表E-R图如图4.5所示。图4.5视频播放量统计表第5章设计与实现5.1系统首页设计本流媒体视频点播网站的首页设计样式,如图5.1所示。图5.1网站的首页5.2系统功能的设计与实现5.2.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.2.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.2.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格式返回给前端,前端得到数据后渲染将评论数与每个视频做匹配后展示。第6章系统测试6.1单元测试软件的单元测试是旨在对软件中的最小的可以测试单元进行检验。对于单元测试中单元的含义,用稍微通俗的话来描述,是要对真实情况去辨别具体的内容。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行最低级别的测试活动,软件的独立单元是要处于与程序的其他部分互不干涉的情况下所测试的。(1)用户的注册测试若用户没有本流媒体视频网站的账户,在账户输入框中输入所要注册的账户明,在密码输入框中输入密码,点击【注册】(2)用户登录测试若用户已拥有本流媒体视频网站的账户,在账户输入框中输入所要注册的账户明,在密码输入框中输入密码,点击【登录】(3)流媒体列表展示测试用户或游客在浏览器地址栏输入本流媒体视频网站地址,跳转至本网站。本网站将视频封面、视频标题、视频作者等展示出来。(4)流媒体视频上传测试用户登录成功本流媒体视频网站后,点击本流媒体视频网站右上方进入视频管理页面,在视频管理页面点击【创建】按钮,选择所要上传的视频,点击【下一步】,填写所要上传视频的基本信息,点击【上传封面】按钮选择所要上传视频的封面,最后点击【确定】按钮,完成视频上传。(5)用户发表评论测试用户成功登录本流媒体视频网站后,点击主页任意视频,进入视频点播页面,将页面拖至视频下方,在评论输入框输入评论,点击【评论】按钮发表评论。(6)查看用户评论测试用户或游客点击主页任意视频,进入视频点播页面,将页面拖至视频下方,可以查看该视频下所有用户对该视频的评论。6.2集成测试软件的集成测试是指单元测试的逻辑扩展。它将两个最简单的测试单元组合进一个组件中,并测试它们之间的接口。在这个意义上,组件指的是多个单元的集成和聚合。在实际的方案中,许多单元被组合成组件,而这些组件又被聚合成程序中更大的一部分。该方法是对片段的组合进行测试,最后将其扩展为一个流程,并与其他组的模块一起对模块进行测试。最后,对构成流程的所有模块一起进行测试。我将组合所有的功能模块,再次测试每个模块的子功能。测试后,我发现每个单元之间没有冲突或接口问题,并完成了集成测试。6.3系统测试系统测试。这是对本流媒体视频点播网站系统的测试。因此将硬件、软件和操作人员三类作为一个个体来检验是否不符合系统规范。软件系统的测试可以发现系统的分析和设计中的各类不正确的地方。比如说安全测试是测试软件的安全措施是否真的可靠,以及系统是否可以免受非法入侵。另一个例子,压力测试是测试系统在正常的数据量和过载下能否可以正常的工作,例如多个用户同时访问。(1)安全测试当系统管理员或用户访问时,系统是加密的,通常无法连接错误的密码来工作。(2)压力和性能测试通过以相当快的频率单击系统的每个功能或记录大量数据,可以发现系统能够更好地承受压力并稳定地工作。6.4验收测试软件的验收和和软件的检查测试是软件部署前的最后的一次测试行为。本软件产品流媒体视频点播系统的单元测试、集成测试和系统测试后,软件产品发布前的测试活动。这是技术测试的最后阶段,也称为交付测试。验收和检查测试的目的是确保软件已经准备好,最终用户可以使用它来执行软件的既定功能和任务。(1)测试alpha在系统完成后,我用不同类型的模拟用户对系统进行了测试,发现了一些非常严重的软件缺陷,并试图修复系统的缺陷。(2)beta测试通过alpha测试后,我邀请同学们测试beta系统,并提出了一些异常和建议。结论此次毕业设计让我受益匪浅,一次完整的软件开发让我更了解件项目的开发流程以及合理地运用编程技术实现系统的开发,也让自己了解到自己的许多不足之处。在毕业设计选题前,我有对市场流媒体视频网站做过一定的调查,随着经济发展,人们生活提高,对精神娱乐的需求愈发强烈,因此诞生了腾讯视频、Bilibili、爱奇艺等流媒体视频点播网站,其次流媒体视频对高并发、高性能有迫切的需求,因此在这种情况下,我选择了Golang作为基石开发流媒体视频点播网站。此次在设计本流媒体视频时,后端我选择了Golang作为编程语言,后端路由选择了一款优秀的开源项目httprouter,以此作为MVC框架中的Model和Controlle

温馨提示

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

评论

0/150

提交评论