KTV点歌系统的设计与实现
打开文本图片集
摘要:随着如今信息技术的飞速发展,人们已经进入了网络时代,视频点播的技术也日益成熟。在现今的多媒体领域中,视频点播发展日新月异,视频点播技术运用了数据库技术,网络技术以及多媒体。在日常生活中引入视频点播技术,可以有助于人们生活水平的提高,给人们的生活带来丰富的体验以及重大的影响。该文主要设计了视频点播系统。系统主要功能涉及了查询歌曲,播放媒体,查询酒水账单等,此外在进行媒体文件播放的过程中还包括了叠加图片、叠加文字等。
关键词:视频点播;查询歌曲;媒体文件
这一路走来 杨宗纬多媒体技术的发展主要是基于计算机以及信息技术,而且与此同时从其中一种程度上而言,信息技术也能够为多媒体发展提供足够的进步空间。多媒体技术正逐渐引起人们广泛的重视。为了满足市场需求,目前国内的KTV软件日渐成熟。该类产品的主要特征具体包括以下几种类型:
单片机版:这种类型的公司主要有深圳蓝冰。其中如果歌曲不是原唱的话,会使得用户有很不好的用户体验,目前营业场所不提供唱歌的,几乎都是被淘汰了的。
流媒体版:其中这种类型的公司主要有新生代、巴陆等。这些公司除了能够做网络版之外也可以做单片机版,而且还自带了DVD演唱效果,所以系统实现起来会比较稳定,但是由于其分辨率比较低,同时整体演唱效果不如VCD,因此在KTV中很少出现。
局域网版:这种类型有阳光、奥斯卡以及视点等。本文所设计的KTV点歌系统就是选择了局域网版。局域网版与单片机版相比,节省了大量的资源,而且实现起来也很方便,简捷。
上述的各种类型各自有各自的利弊,但总的来看,目前市场上出现的这些KTV点歌系统缺少客户端结算、响应包房等操作。而本文所设计的系统是在参考了现有的KTV点歌系统基础上,基于上述客户端结算、响应包房等操作所进行的设计与实现。
1系统功能介绍
1、1点播歌曲
苏打绿秋故事
勇敢一点当客人进入包房中想要唱歌的时候,首先必然先要进行点歌,在点歌时需要先进行歌曲查询。歌曲查询的选择方式包括了很多种,用户可以自主进行歌曲查询方式的选择。点歌系统中的歌曲查询方式的多种多样是为了可以满足不同用户的各种需求。按照用户查询的歌曲,在系统数据库中进行检索,当成功搜索时,用户就可以得到系统反馈的搜索结果,进而能够进行歌曲的选择和完成歌曲列表的演唱,并且可以按照歌曲列表进行播放和演唱。
1、2歌曲播放管理
用户在演唱歌曲的过程中,可以根据自己的需求从而选择性地对演唱歌曲的播放速度、播放音量等进行控制管理,用户可以进行的操作有快进、快退、加大音量、减少音量、歌曲切换、删除操作等。系统按照用户输入的命令从而完成全部的操作。
1、3酒水小吃选择
用户要想查询酒水,第一步需要完成的是对查询信息的输入,客户端将按照搜索条件从而进行筛选,最后将客户所需要的结果显示出来。服务人员将按照系统中的搜索清单,将酒水小吃亲自送到下单的客户手中,并同时需要用户进行签字确认接收。当酒水部门确认用户已经签收后,就可以实时地对数据库的数据进行更改。
2数据库设计
在数据库结构的整个设计的过程中,需要使得用户的大部分需求都能够得到满足,而且还需要尽量避免出现数据多余的情况产生,按照点歌系统特征,系统的规律主要涉及到了如下:
3客户端软件总体设计
通过对国内市场KTV点歌软件的各种分析,并且结合对用户需求的分析,从而完成了客户端软件界面的设计,总体设计结构图如图1所示。
圖1軟件总体设计图
客户端程序选择ViualC++作为设计系统的工具。选择ViualC++的原因是考虑到了KTV点歌系统需要运用到DirectShow。相比于Delphi以及ViualBaic工具来说,ViualC++作为工具能够实现的是对媒体文件进行加密处理的技术,而且在整个的解密过程中选择了多种不同的算法。ViualBaic中需要引入FilterGraph才能够完成文件的播放。这个时候选择ViualBaic会存在很多方面的约束。
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充当的角就是处理上级数据,接着把数据给下级,因此整个设计过程中选择的父类是TranlnPlaceFilter。
Filter输入输出数据主要是借用了Pin,Pin是一种数据流动接口。Pin相互之间的连接需要进行对比验证。周冬雨林更新
Filter设计过程中要考虑到Pin数量的输入输出以及媒体类型。其中系统中Pin输入支持的类型主要有RGB32、RGB565等等。其中Pin输出类型和输入的类型是一致的。