基于FFMPEG的在线视频转码平台的设计与开发

基于FFMPEG的在线视频转码平台的设计与开发[20191207150724]
摘 要
随着WEB2.0观念和HTML5新标准的提出,视频共享会成为将来的趋势,优酷土豆的合并,百度公司对视频的整合以及腾讯公司推出的微视在一定程度上推动了网络视频产业的继续发展,当下,在线观看视频已经成为广大网民浏览互联网获取新闻动态的主要方式之一,随着视频技术的突破,在线上传视频变得简单方便,以前的接受者变成如今的参与者。
在众多的视频网站中,我们可以看到许多视频都是出自普通人之手,只要是符合各地区法律法规的视频,就可以进行传播。
视频互联网时代,在线拍摄视频、浏览视频和发布视频已经成为极其简单容易的事了。视频传递的信息更直接、更真诚,比文字、图片更有说服力和表现力。视频互联网的内容越来越丰富,越来以用户体验为中心。网络视频的应用也在不断的出新,很多网站将视频作为提升用户体验的重中之重。
视频互联网已经融入人们的日常生活,且成为人们生活应用中不可分割的一部分。目前的视频的处理给中小型企业门户网站、电子商务平台以及视频娱乐平台形成了技术壁垒。本项目对视频网站后端发布的整合,通过对网络视频在平台上上传、压缩、格式转换、与数据库交互和视频的发布进行深入的研究,构建兼容了FFMPEG的编译环境;
结合FFMPEG的开源代码,优化更新FFMPEG对视频的压缩和格式转换,整合封装API接口;通过对平台和操作系统服务的结合,可以实现自动对新视频数据进行扫描、压缩、格式转换和视频截图等操作。从而可以大大减轻从事网站开发的技术人员的工作量。利用本系统,实现高品质用户体验的视频处理,也不失为一种高效的创新。
视频处理的高效创新打破了原来的传统处理模式,将前端的上传视频和后续的视频处理发布分离,同时又构建了高品质的用户体验。
技术创新实现了FFMPEG的重新编译和优化,集合系统服务将人工很好的分离出来,同时实现对视频发布状态的实时跟踪和记录。
本系统需要实现的功能总体来说共有三个部分,分别如下:
(1)后台管理:系统管理员拥有系统的最高权限,管理系统的各项功能,对系统的各项属性进行设置,可以给不同的角色分配不同的权限,并对信息(如视频、菜单、资讯等)进行批量或单个增删改查等操作;
(2)系统前台:用户可以在线观看视频并对视频进行评价;
(3)个人中心:已登录用户可以上传视频、管理视频、管理评论等操作

关键字:在线视频转码、FFMPEG、PHP、Yii框架
目录
第1章 系统概述及可行性分析 3
1.1系统概述 3
1.2 可行性分析 3
1.2.1 技术可行性分析 4
1.2.2 经济可行性分析 4
1.2.3 操作可行性分析 5
1.3 MySQL数据库概述 5
1.4 PHP编程语言概述 6
1.5 Yii Framework概述 8
1.5.1为什么要使用 Yii 8
1.5.2 安装Yii Framwork 9
1.6 FFMPEG概述 9
第2章 需求分析 11
2.1系统分析 11
2.2系统设计 12
2.2.1系统设计的作用 12
2.2.2 系统功能模块划分 12
2.3系统开发规范 13
2.3.1 变量命名规则 13
2.3.2 全局方法命名规则 13
2.3.3 类命名规则 13
2.3.4 URL书写规则 14
2.3.5 方法调用 14
2.3.6 控制器命名规则 14
2.3.7 数据库命名规则 14
2.3.8 模型 14
2.3.9 扩展 14
第3章 系统代码架构的设计与分析 16
3.1 安装配置Linux+Apache+MySQL+PHP (LAMP)环境 16
3.1.1【安装MySQL】 16
3.1.2【安装Apache】 17
3.1.3【安装PHP】 17
3.1.4【Apache结合PHP】 18
3.2 安装配置FFMPEG 18
3.3 Windows下FFMPEG的安装配置 22
3.4 系统代码架构分析 23
第4章 系统数据库结构 24
4.1 数据库表(部分) 24
4.1.1用户表 24
4.1.2视频表 24
4.1.3视频分类表 25
4.1.4评论表 25
4.1.5敏感词表 25
4.1.6 友情链接表 26
4.1.7搜索词表 26
第5章 系统功能模块的详细设计 27
5.1 在线转码平台的主要功能 27
5.2系统功能模块 27
5.2.1用户登录注册模块概述 27
5.2.2 全局API接口和属性定义 27
5.3系统板块说明 31
5.3.1首页板块 31
5.3.2搜索板块 31
5.3.3用户中心 32
5.3.4 视频播放页 32
5.3.5注册登录页面 32
5.3.6视频上传板块 33
5.4 实际开发模块 33
5.4.1模块特点 33
5.4.2 编码规范概述 34
5.4.3布局设置 34
第6章系统运行及测试 37
6.1 系统的开发及运行环境 37
6.2 测试分析 37
6.2.1测试方法 38
6.3 测试过程 38
6.3.1系统登录测试 38
6.3.2个人中心功能测试 40
6.3.3管理员后台模块测试 41
6.3.4前台页面 42
参考文献 44
第1章 系统概述及可行性分析
1.1系统概述
该项目系统是基于FFMPEG的一个在线视频转码、分享和发布的系统,用户可以在线观看视频并发表评论,系统可以用来作为校园门户网站系统的一个子项目,在学校局域网内视频的主要来源是注册用户个人视频的上传和发布,该项目主要是为了丰富学校的课余生活,方便学生和老师发布一些自拍小视频和一些教程视频,在日常生活和学习中视频给我们最直接的形式来获得知识,老师可以通过对课程进行视频录制并上传来实现授课;广大学生拍客通过对拍摄的作品进行上传实现作品的分享等等。并且可以通过用户的评论来得到反馈。
本系统主要的角色有三个:普通用户、会员和管理员。在系统中,由管理员专门来对系统的各项功能和配置进行管理(如角色管理、视频的审核、前台菜单显示等),在系统中普通用户通过系统可以实现视频的观看、视频的上传和视频的管理,且受到文件大小和个数的限制。会员用户实现视频的上传和管理,不受文件大小和次数的限制,系统需要实现的功能总体来说共有三个部分,分别如下:
(1)后台管理:系统管理员拥有系统的最高权限,管理系统的各项功能,对系统的各项属性进行设置,可以给不同的角色分配不同的权限,并对信息(如视频、菜单、资讯等)进行批量或单个增删改查等操作;
(2)系统前台:首先是视频页面的展示,会员的登录和对视频进行评论;
(3)个人中心:对于在系统中已有的用户,可以先行登录系统,并在登录的状态下对视频进行增删改查等操作。
1.2 可行性分析
可行性分析就是对整个可行性研究提出综合分析评价,指出优缺点和建议。结论的需要,往往需要加一些附件,如试验数据,演示材料,计算,图表,图画,和更多的提升的可行性报告的说服力。根据不同项目的需求和行业的特点,各类项目可行性研究的内容及侧重点差异很大,但一般都应包括以下内容:?
1.2.1 技术可行性分析
技术可行性,顾名思义主要是从项目实施的技术角度出发,考虑各种条件(如成本、时间、安全性等),选择合理的设计技术解决方案。
本系统主要采用的是Linux+Apache+MySQL+PHP+Yii的主体架构,开发IDE使用的是Eclipse,考虑到可测试性,这里还是用了PHPUnit对系统进行单元测试,Yii框架是一款PHP的主流框架。Yii提供了几乎Web 2.0时代所有的功能。
从项目的稳定性和安全性综合考虑,这里采用的是Linux操作系统作为系统的工作环境。但是为了方便开发且便于测试和查看代码,所有的代码都在Windows环境下进行开发。
在技术上主要是讲究技术的可操作性和健壮性,以及开发的高效性。在众多开发语言中,PHP满足了以上所有特性,且使用PHP语言开发可以缩短开发周期。
1.2.2 经济可行性分析
经济可行性研究的目的是利用最小的经济代价在尽可能短的时间代价内确定是否能够满足项目的开发需求。
在本系统中,我们使用的技术都是开源软件(技术)或者是免费的软件(技术),一个项目能否安全高效的实现并运行,与其所使用的数据库是息息相关的,项目所使用的关系型数据库MySQL是开源免费软件的佼佼者,能够满足系统的数据库需求。系统工作量主要集中在系统的设计和架构环境的搭建,完成以上功能就可以在较短的时间内进行开发。系统的架设不需要很高级的服务器,由于开发的项目作为自己的学术成果,目前所使用的服务器是个人PC,系统所使用的管理模式是全自动的采集,且有一套自己的规则,不会额外的附加人员管理成本。这就在经济条件下验证了其实可行的。
1.2.3 操作可行性分析
操作可行性是指在项目的开发过程中是否可以按照预期的计划和开支等情况按部就班的完成[1],项目的最终目的是为了方便用户使用,在交付给用户使用时,用户能否较较快地上手并掌握其使用方法,并且能够利用所开发的系统轻松的完成系统所涉及到的各项功能等。这是衡量项目的可操作性的一个重要指标。
本系统所采用的技术都是本科计算机专业应该掌握的技术,在开发的过程中,各种开发所必须的环境、工具以及软件都可以很方便的找到,开发和后期的维护是没有问题的;在现在互联网时代,基于B/S模式的在线系统已经成为一种趋势,只要网路畅通且有一个浏览器,就可以使用在线系统,这也不会成为用户的操作障碍,美观、舒适且人性化的操作界面令我们的操作变得非常简单,所以这里不会存在可操作性上的障碍。
综上所述,此项目的开发需求和开发目标已经非常明确,在技术、经济和操作三方面可行性方面都是可行的,并且资金成本投入少、开发周期短、后期维护成本也少。因此该系统的开发是完全可行的,时可以进行开发和进行研究学习的。
1.3 MySQL数据库概述
MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。目前 MySQL被广泛地应用在各种上的中小型网站(系统)中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。许多大型公司或者网站,例如淘宝,也是使用MySQL的集群技术来满足自己的项目要求。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL是开源的,所以你不需要支付额外的费用。
MySQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
MySQL使用标准的SQL数据语言形式。
MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
MySQL对PHP有很好的支持,PHP是目前最流行的Web开发语言。
MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
MySQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己的MySQL系统[2]。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。Linux作为操作系统,Apache和Nginx作为Web服务器,MySQL作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“组合[3]。
1.4 PHP编程语言概述
PHP(全称:PHP:Hypertext?Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收了C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域[4]。
PHP最初是由勒多夫在1995年开始开发的。而现在PHP的标准由PHP Group和开放源代码社区维护。PHP以PHP License作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不兼容[5]。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/qrs/185.html

好棒文