KTV点歌系统的设计与实现
2017-11-17乔飞飞
乔飞飞
摘要:随着如今信息技术的飞速发展,人们已经进入了网络时代,视频点播的技术也日益成熟。在现今的多媒体领域中,视频点播发展日新月异,视频点播技术运用了数据库技术,网络技术以及多媒体。在日常生活中引入视频点播技术,可以有助于人们生活水平的提高,给人们的生活带来丰富的体验以及重大的影响。该文主要设计了视频点播系统。系统主要功能涉及了查询歌曲,播放媒体,查询酒水账单等,此外在进行媒体文件播放的过程中还包括了叠加图片、叠加文字等。
关键词:视频点播;查询歌曲;媒体文件
中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2017)30-0079-03
多媒体技术的发展主要是基于计算机以及信息技术,而且与此同时从某种程度上而言,信息技术也能够为多媒体发展提供足够的进步空间。多媒体技术正逐渐引起人们广泛的重视。为了满足市场需求,目前国内的KTV软件日渐成熟。该类产品的主要特征具体包括以下几种类型:
单片机版:这种类型的公司主要有深圳蓝冰。其中如果歌曲不是原唱的话,会使得用户有很不好的用户体验,目前营业场所不提供唱歌的,几乎都是被淘汰了的。
流媒体版:其中这种类型的公司主要有新生代、巴陆等。这些公司除了能够做网络版之外也可以做单片机版,而且还自带了DVD演唱效果,所以系统实现起来会比较稳定,但是由于其分辨率比较低,同时整体演唱效果不如VCD,因此在KTV中很少出现。
局域网版:这种类型有阳光、奥斯卡以及视点等。本文所设计的KTV点歌系统就是选择了局域网版。局域网版与单片机版相比,节省了大量的资源,而且实现起来也很方便,简捷。
上述的各种类型各自有各自的利弊,但总的来看,目前市场上出现的这些 KTV点歌系统缺少客户端结算、响应包房等操作。而本文所设计的系统是在参考了现有的KTV点歌系统基础上,基于上述客户端结算、响应包房等操作所进行的设计与实现。
1 系统功能介绍
1.1 点播歌曲
当客人进入包房中想要唱歌的时候,首先必然先要进行点歌,在点歌时需要先进行歌曲查询。歌曲查询的选择方式包括了很多种,用户可以自主进行歌曲查询方式的选择。点歌系统中的歌曲查询方式的多种多样是为了可以满足不同用户的各种需求。按照用户查询的歌曲,在系统数据库中进行检索,当成功搜索时,用户就可以得到系统反馈的搜索结果,进而能够进行歌曲的选择和完成歌曲列表的演唱,并且可以按照歌曲列表进行播放和演唱。
1.2 歌曲播放管理
用户在演唱歌曲的过程中,可以根据自己的需求从而选择性地对演唱歌曲的播放速度、播放音量等进行控制管理,用户可以进行的操作有快进、快退、加大音量、减少音量、歌曲切换、删除操作等。系统按照用户输入的命令从而完成全部的操作。
1.3 酒水小吃选择
用户要想查询酒水,第一步需要完成的是对查询信息的输入,客户端将按照搜索条件从而进行筛选,最后将客户所需要的结果显示出来。服务人员将按照系统中的搜索清单,将酒水小吃亲自送到下单的客户手中,并同时需要用户进行签字确认接收。当酒水部门确认用户已经签收后,就可以实时地对数据库的数据进行更改。
2 数据库设计
在数据库结构的整个设计的过程中,需要使得用户的大部分需求都能够得到满足,而且还需要尽量避免出现数据多余的情况产生,按照点歌系统特征,系统的规律主要涉及到了如下:
明星与歌曲的对应关系是一对多,歌曲与歌曲类型也是多对一的关系,不同的歌曲,歌曲类型都对应着唯一的编号,编号对歌曲进行唯一地标识。角色与用户之间是一对多的关系。歌星信息实体中的字段包括了歌星编号,歌星姓名、歌星性别、歌星年龄、歌星国籍等字段。歌曲信息实体包括了歌曲编号、歌曲名、歌曲路径、歌曲类型、发行时间、图片地址等。用户信息实体字段包括了用户名、用户密码、用户编号等。
点歌系统中包括的数据库表主要有:用户表、歌曲信息表以及明星信息表。在很多时候,数据库中的各个表之间相互都是有关系的,这种关系叫做关联。比如歌曲信息表里面的外键歌星编号与歌星信息表中主键歌星编号就是一种关联。当数据库里面的信息无法使得依赖关系继续保持的话,那么就会破坏数据的一致性原则。
3 客户端软件总体设计
通过对国内市场KTV点歌软件的各种分析,并且结合对用户需求的分析,从而完成了客户端软件界面的设计,总体设计结构图如图1所示。
圖1 软件总体设计图
客户端程序选择Visual C++作为设计系统的工具。选择Visual C++的原因是考虑到了KTV点歌系统需要运用到DirectShow。相比于Delphi以及Visual Basic工具来说,Visual C++作为工具能够实现的是对媒体文件进行加密处理的技术,而且在整个的解密过程中选择了多种不同的算法。Visual Basic中需要引入Filter Graph才能够完成文件的播放。这个时候选择Visual Basic会存在很多方面的约束。
3.1 设计播放模块
播放歌曲模块的实现包括了暂停,快进,快退以及暂停,切换歌曲,调节音量等操作。除此之外,还能够按照点歌者的个人爱好选择性地显示歌词以及其他不同动态效果。作为一种应用的软件就需要有可扩展性,此外系统还需要有很好的复用性。例如,如果在硬件解压卡的情况下,可以具备质量高的图像解码,这个时候仅仅需要修改模块里面解码处的代码就可以完成操作,然而希望最好其他部分可以保留原样,无须修改。那么此时代码复用性就起到了很大的作用。另外,Brower程序可以对解码部分的模块进行调用处理。立足于软件维护性而言,致力于增强模块中所有部分的祸合度,做到各个模块之间是互不影响的。
媒体播放文件中,繁琐的函数会封装在某一个模块里面,从而会提供完整的业务逻辑接口。对比复杂的函数接口,选择统一的模块在使用起来会更加地便捷。
3.2 播放模块接口及实现
分析系统后,首先是对接口的确定,按照之前的描述,接口设计选择Facade的主要原因是为了确保接口的易用性,同时也要给其他操作预留调用的接口。
3.3 叠加歌词
播放歌曲模块中为了满足用户的需求,需要在播放歌曲的同时,也要将歌词字幕显示在视频画面中,从而可以显示出重要的信息。另外一方面,也要显示出动画Logo。要想实现叠加歌词以及动画效果就需要增加Filter,同时在FilterGraph里面加入Filter。Filter的设计应该要考虑到以下几个方面:
首先需要确保Filter单一化的功能,保证功能简单并且容易实现和调试。KTV点歌系统的动画filter与字幕filter是相互分开的,所有的Filter都只有单一的功能。
其次是Filter工作模式的确定。通过FilterGraph位置就能够对Filter模式进行确定,其中模式包括了推与拉模式。因为Filter是紧接着DecoderFilter的,所以在视频流的解密操作中,拉数据将无法实现,因此选择的模式是推模式。
最后就是Filter父类型的确定。Filter的设计是在基于合适的父类基础上完成filter的自定义。因为叠加歌词的整个过程中会存在大量输入输出的操作,样本数据不会有很大的变化,在这个模块中,Filter充当的角色就是处理上级数据,接着把数据给下级,因此整个设计过程中选择的父类是TranslnPlace Filter。
Filter输入输出数据主要是借用了Pin,Pin是一种数据流动接口。Pin相互之间的连接需要进行对比验证。
Filter设计过程中要考虑到Pin数量的输入输出以及媒体类型。其中系统中Pin输入支持的类型主要有RGB32、RGB565等等。其中Pin输出类型和输入的类型是一致的。
接口定义:Filter借用接口从而完成与外部的交互。外部调用者借助接口从而得到Filter相关的属性,而且另外一方面还能够将Filter行为进行很好地控制。叠加字幕的接口涉及的内容有字体属性、叠加位置、字符开始结束时间以及叠加效果。
4 系统工具设计与实现
4.1 录入歌曲信息
根据客户的需求,选择的数据库是Access,该数据库主要是保存歌曲信息。歌词信息的输入是通过小型软件实现的。歌曲录入软件一定要确保软件的稳定性以及数据的可靠性。根据数据之间不同的逻辑关系,从而决定歌曲顺序以及输入的内容。接着就是根据数据间相互的逻辑关系,从而实现歌曲随机生成以及歌曲首字母自动生成,本文选择的是Delphi7.0工具。
4.2 歌曲信息查询
查询歌曲以及酒水信息主要是與数据库之间的联系,数据库的访问十分简单,能够选择的方法有ADO、ODBC等,其中当系统需求发生改变后,对数据的查询就会比较繁琐,因此需要尽可能地防止这种情况的发生,改进的方法是添加中间层到数据库与程序之间,要想进行数据库的修改,那么只能选择该中间层。
设计数据库功能的模式主要包括了O-R Mapping与DAO模式,其中DAO模式主要是操作数据,而与此同时O-R Mapping主要是完成对象与对象关系之间的映射。歌曲查询主要是进行文字以及数据查询,业务逻辑简单,因此选择O-R Mapping模式就能够达到要求。针对表示层的查询操作,可以将功能层的内容进行sql语句的转换,从而得出一个Recordset集,表示层要想接收到查询结果,那么就需要定义类,同时对类进行声明处理。
其中,歌曲信息查询链表定义如下:
Typedef struct tag_Songs_Information
{CString songspath;
CString songsName;
CString songsStarName;
Int Languages;
Int Server;
Int Origin;
Int Songsid;
Int songsCount;
}Songs_Information;
4.3 调试歌曲程序
考虑到歌曲信息与数据库信息存在很大的差别,因此用引入一个调试播放的程序。该程序中可以将数据库中该歌曲的信息完全显示出来,此时调试人员能够按照歌曲相应的情况从而对数据库中的数据进行更改。除此之外,该程序还可以支持歌曲选择操作。本文在播放程序基础上,添加了歌曲编辑操作,用户修改歌曲后,数据库依然可以保存该信息。设计界面图如图2所示。
4.4 歌曲文件优化
本文设计的系统歌曲十分多,而且对于服务器的性能以及网络等方面的各种约束,本文针对这一现象给出了优化方法。简而言之,实现方法就是对现有的数据进行统计分析,在本地保存已有的歌曲,剩余的部分放到服务器中,服务器的硬盘中对应存放的是点唱数量相同的歌曲。考虑到服务器以及网络因素,设计了小程序,在实现过程中根据歌曲的排名从而将歌曲路径导出来,然后把路径保存到指定的位置上。其中CopyFiles的参数包含了源地址以及目录地址。这种设计效果可以提高硬盘访问的性能,响应速度也大大增强了,稳定性也得到了相应的提高。
5 结束语
随着社会的发展以及人们生活水平的提高,所面临的社会压力也逐渐增加,因此闲暇之余,人们希望通过娱乐的方式放松身心,希望有一个空间可以疏解情绪,并且可以为生活添加更多的乐趣。由于KTV点歌系统的成本比较低,因此去KTV唱歌成为了一种社会趋势,人们愿意为此进行消费,而且在KTV唱歌可以让人得到一个很好的情感缓解。通过调查发现,KTV唱歌是结合系统可行性、经济可行性等进行开发的。该系统主要是实现歌曲查询、点歌、酒水下单等功能。
在整个分析设计的过程中,主要立足于设计模式,考虑到系统可用性、稳定性以及代码复用性。因此选择了Facade设计模式。在模块中封装差异,从而方便其他模块调用接口。
参考文献:
[1] 周俊平. 基于C/S模式的KTV点歌系统的研究[J]. 电脑知识与技术:学术交流, 2016, 12(3):95-97.
[2] 陈章斌. 基于嵌入式Linux平台的KTV点歌系统机顶盒的设计[J]. 重庆高教研究, 2015, 30(1):67-70.
[3] 张何俊彦. 基于NiosⅡ的语音识别与AC3音频解码系统设计[D]. 成都:电子科技大学, 2016.
[4] 程杰锋, 程杰标, 宋振鹏,等. 基于手机和WIFI网络的多功能KTV点歌分享系统及方法:, CN104038530A[P]. 2016.
[5] 林和平. 卡拉OK点歌系统简介[J]. 电脑开发与应用, 2015(4):7.endprint