陈少涌,林 敏,梁仕銮
(1.暨南大学 网络与教育技术中心,广东 广州 510630;2.广州市升阳信息科技有限公司,广东 广州 510630)
基于开源软件的视频点播系统的设计与实现*
陈少涌1,林 敏1,梁仕銮2
(1.暨南大学 网络与教育技术中心,广东 广州 510630;2.广州市升阳信息科技有限公司,广东 广州 510630)
本文从目前视频点播(VOD)系统及视频资源库由于繁杂的视频编码格式给用户带来兼容性问题出发,针对开放源代码软件的优点,提出以开源软件为核心设计开发一套视频点播系统。该系统通过将不同编码格式的视频统一转换为.flv视频格式的方法解决兼容性问题,易用性强,功能丰富,有效降低开发部署成本,适合于在我国教育领域推广应用。
开源软件;视频点播;VOD;FFmpeg
随着网络视频应用的普及,视频资源成为重要的教学素材,视频点播(Video on Demand,VOD)也成为电化教育和远程教学的重要手段。统一视频文件格式,不仅有利于浏览器的兼容播放,降低用户使用成本,增强界面友好性,便于网站服务器端的管理,而且视频素材易于引用到教学中,具有重要的意义。[1]
本文主要是研究如何基于开放源代码的软件来构建一套支持Flash播放器的视频点播系统,以下简称OpenVOD。该系统采用PHP语言,在Linux操作系统下使用FFmpeg和MEncoder进行视频格式转换,将不同格式的原始视频转换成.flv格式,供在线点播及在线教学。
本系统将设计并实现一个集视频文件上传、格式转换、发布于一体的VOD平台。
1.核心模块设计
根据系统设计目标,该系统将由文件上传、格式转换及入库发布三个核心模块构成。[2]基于该平台,管理员可以通过视频上传子模块上传视频源文件,由视频转换子模块实现自动对视频的分析、转换、生成缩略图,由入库发布子模块实现视频文件信息的入库与发布,通过这三个步骤,用户便可以通过计算机或其他终端浏览并点播视频文件。
2.功能设计
系统根据管理员、用户角色的不同而设计相应的功能,而视频转换部分则为系统自动完成的功能。主要功能列表如下:
(1)管理员功能:登录、退出系统、个人信息管理、用户管理、配置系统信息、配置视频格式转换参数、设置分类、增、删、改、查视频记录、文件上传;[3]
(2)用户功能:注册、登录、退出系统、个人信息管理、点播、搜索、评级、评论、分享、收藏;
(3)系统功能:读取配置文件、转换视频文件、提取视频属性信息(时长、大小)、生成缩略图、添加水印、将视频时长、缩略图、文件地址等信息入库。
本系统还设计实现了一系列高级功能。如在视频中增加水印以实现对视频版权的保护,在视频发布方式方面增加便利的分享功能,以便于将视频轻松地插入到其他的网页中从而加大视频的传播范围;还可以通过配置多个属性文件来实现将同一视频分别按不同的分辨率、帧速、码流等参数进行格式转换,从而生成多个版本的视频文件,以适应不同的用户终端。
1.系统开发平台与技术的选择
本系统采用开放源代码的产品和技术进行开发,以LAMP (即 Linux、Apache、MySQL 和 PHP)和 FFmpeg 为主。服务器平台采用Linux操作系统,Apache为Web应用服务器,内容存储采用MySQL数据库,视频上传和发布、用户注册登录、内容管理等功能采用PHP语言,视频转换功能通过FFmpeg及MEncoder实现。
2.数据库
本系统采用开放源代码的MySQL数据库来存储视频、系统及用户的相关文本信息。其中,视频信息包括视频的标题、简介、关键词、格式、时长、大小、尺寸、缩略图名称、视频文件名称等;系统信息包括系统名称、各编码器地址的配置信息等;用户信息包括用户名、密码、类别、注册时间、最后登录IP地址等。
表1 视频信息表的字段结构
3.视频上传模块
视频上传支持两种方式,包括FTP上传和Web在线上传方式。
(1)FTP方式:为方便大批量视频的上传,可以采用FTP方式。为便于将上传的视频文件在格式转换时同时入库,每个视频需同时上传两个文件,一个是视频文件本身,如first.wmv;另一个是与此视频对应的属性信息,包括标题、简介、关键词等,为XML文本文件格式,如first.xml。系统在开始转换时,将读取first.xml文件内容并将各属性添加到该视频相应的记录中。
(2)Web方式:由于PHP在线上传文件受到系统安全和性能的限制,因此通常PHP语言直接上传的都只是小文件,在本系统中通过采用开源的多文件异步上传组件SWFUpload实现在线上传。
4.视频转换模块
文件上传到服务器之后,系统将自动调用视频转换模块实现对源文件的格式转换,生成.flv格式的视频文件,该格式是Flash播放器支持的视频格式。视频转换模块是OpenVOD系统的核心模块,采用FFmpeg和MEncoder作为主要工具,辅以多种视频编解码器,以使其支持多种视频格式的编码及转换。
(1)FFmpeg 和 MEncoder
FFmpeg是一个开源的项目,提供了录制、编解码、转换音视频的完整解决方案。它包含了先进的音频/视频编解码库libavcodec,支持大多数符合工业标准的音视频编码格式。MEncoder是一款开放源代码的视频处理软件,是MPlayer自带的编码工具,它支持几乎所有格式的视频转换,可以将任意格式转换到指定的格式。在本系统中,MEncoder将与FFmpeg一起实现视频格式转换功能。
(2)视频编码组件的安装配置
要使用FFmpeg和 MEncoder进行支持多种编码格式,需要预先安装一系列的编码组件,其中FFmpeg、FFmpeg-PHP 和 MPlayer(MEncoder)是必须安装的,其他的组件通常根据需要来安装。
表2 系统所需安装的编码组件
编译FFmpeg时,根据安装的组件进行配置,最基本的编译配置命令如下:
./configure--enable-libmp3lame--enable-libogg--enable-libvorbis--disable-mmx--enable-shared
如果安装了支持多种编码的组件,FFmpeg高级编译配置命令如下:
./configure--prefix=/usr/local/FFmpeg--enable-gpl--enable-shared--enable-mp3lame--enable-amr_nb--enable-amr_wb--enable-amr_if2--enable-libogg--enable-vorbis--enable-xvid--enable-dts--enable-pp--enable-faad--enable-faac--enable-x264--enablepthreads--disable-ffserver--disable-ffplay
(3)视频格式转换流程
安装并配置好FFmpeg和MEncoder之后,便可以实现对视频文件的格式转换。本系统默认采用FFmpeg进行视频格式转换,当遇到FFmpeg不支持的文件格式时,转用MEncoder进行格式转换,视频格式转换流程如图2所示。
在OpenVOD系统中,FFmpeg进行格式转换的命令如下:
$FFmpeg_cmd = "$config [path_to_FFmpeg]-i$source_video-ab 64-ar 44100-b 300k-r 30-s 720x480-sameq$publish_flv";
@exec("$FFmpeg_cmd");
该命令将调用$config[path_to_FFmpeg]地址的FFmpeg实现将$source_video文件转换为$publish_flv,转换后的视频分辨率为720×480,即为标清视频。通过调整帧速和分辨率等参数便可生成其他规格的视频文件,增加-vhook参数则可以将指定的图片作为水印添加到生成的视频文件中。[4]
若FFmpeg不支持上传的视频文件,可改用MEncoder来进行格式转换,OpenVOD系统中MEncoder命令格式如下:
$mencoder_cmd="$mencoder_path$source_video-o$publish_flv-of lavf-oac mp3lame-lameopts abr:br=56-ovc lavc-lavcopts vcodec=flv:vbitrate=800:mbd=2:mv0:trell:v4mv:cbp:last_pred=3-vf scale=720:480-srate 22050";
@exec("$mencoder_cmd 2>&1",$output_mencoder);
完成视频格式转换后,可以通过FFmpeg-php或FLVTool2来获取视频的时间长度。采用FFmpeg-php的命令如下:
$video_info=@new FFmpeg_movie($publish_flv);
$sec=@$video_info->getDuration();//获取视频文件的时间长度,以秒为单位
最后,系统采FFmpeg通过以下命令生成缩略图:
$FFmpeg_thumbnail_cmd="$config[path_to_FFmpeg]-i$publish_flv-ss$thumb_position-t 00:00:01-s 120x90-r 1-f mjpeg$output_thumbnail";
@exec("$FFmpeg_thumbnail_cmd 2>&1",$output);
如果以上操作中间出现错误,则将错误信息记录到日志中,并中断程序执行;如果没有错误,则将该视频的相关信息(如新生成的视频文件名、视频时间长度、缩略图文件名等)保存进MySQL数据库中,经管理员发布后便可供用户浏览及点播。
5.视频发布模块
在完成视频格式转换后,管理员还需进行文件的审核发布。当管理员使用在线上传视频文件的方式,则在上传文件之前录入该视频的相关信息,如标题、简介、作者等信息;当管理员使用FTP批量上传视频文件的方式,系统将通过读取视频文件对应的同名XML文件信息,将其中的视频属性作为视频记录的相应信息添加到该记录的相应字段中。视频转换模块则提供了视频时长、新视频文件名和缩略图等信息,这些信息与管理员录入信息一起构成了一个新视频文件的完整数据库记录,从而可供用户在网站前台访问。
当一个视频文件存在多个不同编码和格式的视频时,前台将显示不同的文件信息供用户选择适用于当前网络环境和终端环境的版本;用户可以根据视频标题、关键词、作者等信息进行视频搜索;可以对视频文件添加评论和评级;可以通过开放的API实现视频文件的分享,方便地将系统发布的视频文件插入到其他的网站中。
商业化视频点播解决方案高昂的实施成本严重制约了我国教育科研行业及中小企业在视频应用方面的发展,而普通的视频资源库又存在着兼容性差和难以使用等问题导致实际利用率过低。本文所设计的OpenVOD系统目的在于低成本地实现一套先进的视频点播系统,使其适用于大部分校园用户的需求,解决兼容性和部署成本的问题,并可根据用户实际应用需求进行扩展,从而可广泛应用于远程教育领域,具有较高的推广价值和广阔的应用前景。
[1]金智勇,孙乐传,宋志明.基于校园网的视频点播系统的构建及在教学中的应用[J].电化教育研究,2009(2):72-74.
[2]任严,韩臻,刘丽.基于FFMPEG的视频转换与发布系统[J].计算机工程与设计,2007,28(20):4962-4967.
[3]刘珺.基于校园网的视频点播系统的设计与实现[J].昆明冶金高等专科学校学报,2009,25(3):38-42.
[4]FFmpeg.FFmpeg Documentation[OL/DB].http://ffmpeg.org/ffmpeg-doc.html,2010.8.26.
教育部直属高校门户网站排行榜 (数据采集日期:2011年1月26日)
G434
B
1673-8454(2011)03-0030-03
*本文为广东省科技型中小企业技术创新专项资金项目(项目编号:2009CD019)成果。
(编辑:隗爽)