具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
图1为本发明的实施例中实现数字媒体组合播放的***结构图,该***主要由播放管理服务器、播放器、网络平台及显示设备组成,播放管理服务器通过网络平台将包括视频、图片和文字等的素材信息,以及实时信息、控制信息等媒体内容传送到播放器,其中,素材信息也可以保存在播放器本地。该***具体包括:
播放器,用于根据定制的模板和播出单,检测并读取合适的播出计划播放,该播放器可以运行在液晶、等离子或CRT等显示器上;
播放管理服务器,用于对播放器的播放内容及运行进行管理;
内容服务器,用于提供播放器的播放内容。内容服务器具体可以包括用于提供媒体播放内容媒体内容服务器,用于提供流媒体播放内容流服务器,另外,还可通过直播编码器将摄像机拍摄到的现场内容编码发送给播放器播放。
其中,播放器的结构如图2所示,包括:
模板定制模块21,用于定制播放模板;
播出单定制模块22,用于根据所述定制的模板设置播出单;
播放模块23,用于根据所述播出单内容检测并读取合适的播出计划,进行播放。
消息收发单元24,用于收发获取播出单和文件的消息;
存储单元25,用于存储播出单及文件。
通过该***,能够实现多种媒体内容任意组合的播放,播放器接收播放管理服务器发送的控制指令并根据指令实现媒体播放。管理员通过网络能够集中或分布式管理播放器,能够编辑组合播出计划并应用于单个或多个播放器,实现视频、音频、文本、图片、直播视音频实时信息等的组合播放。可以在显示终端屏幕上的不同区域播放来源于不同信息源的内容。
基于图1所示的***,实现数字媒体组合播放的方法如图3所示,具体包括以下步骤:
步骤301、定制模板。模板可以由管理员在播放管理服务器端绘制,并下发给用户进行选择,或者由用户在可视化编辑器上按自身需要自行绘制。以图4所示的模板为例,在图4中,共定义了7个不同的位置,各位置有不同属性,这些属性包括但不仅限于类型、层次、效果和作用等。其中,类型是该位置播放内容的类型,如视频、图片以及文字等;层次是该位置在屏幕上所属的图层,第一层在屏幕的最顶层,不同层次内容重叠时,重叠部分显示高层次内容,但是,层次的设置不仅仅是限定谁叠加在谁的上面,还涉及到正确显示模板,图片显示区域冲突等问题,例如在图4中的位置1,当“abcd”的播放时间已到,就要消失,且没有设定后续播放内容的时候,势必会造成背景图片上那个狗头的部分内容的缺失,这个时候就有必要在位置1继续播出狗头图片的填充图片,以达到用户的真正用意,换句话说,位置1的层次对于下层来说已经变得透明了;效果是不同位置的内容在屏幕上的显示效果,例如图片可采用静态效果,在屏幕上静态显示,动态显示方式包括渐隐渐现,如文字,或左右上下滚动,如发布文字信息,等等。表1列出了图4中各位置的属性设置:
|
类型 |
层次 |
效果 |
作用 |
位置0 |
图片 |
1 |
--(静态) |
背景 |
位置1 |
文字 |
2 |
渐隐渐现(动态) |
信息发布 |
位置2 |
文字 |
2 |
左滚(动态) |
信息发布 |
位置3 |
文字 |
2 |
上滚(动态) |
信息发布 |
位置4 |
图片 |
2 |
动态光泽(动态) |
美化 |
位置5 |
用户涂鸦 |
3 |
--(静态) |
-- |
位置6 |
用户涂鸦 |
3 |
--(静态) |
-- |
位置7 |
用户涂鸦 |
3 |
--(静态) |
-- |
表1
位置5、6和7的播放内容为用户自定义。
步骤302、定制播出单。用户选定一个模板后,就要定制该模板中各位置的播放内容,即为各位置定制播出单。有两种方式定制播出单,一种是用户通过遥控器在电视机上浏览可选的节目列表,选择要播放的文件;另一种是管理员直接在播放管理服务器端根据用户选定的模板定制播出单。播出单中的播出内容可以保存在播放器本地,也可以来自网络侧,例如流媒体服务器,能够提供各种不可提前的广告、文字及视频等素材;直播服务器,用于提供来自现场的视音频信息,将其直接转化为视频流;媒体制作服务器,用于处理待加入的媒体源文件,将其转化为播放器可用的媒体素材;静态媒体内容服务器,用于保存各种静态的媒体素材,如文字等。
表2是一个定制完成的播出单,包括以下内容:
序号 |
文件名 |
文件大小 |
播出时间 |
0001 |
yx.mpg |
252m |
2007/08/14 12:30:00 |
0002 |
hk.mp3 |
4.3m |
2007/08/14 14:50:00 |
0003 |
Sdbj01.mpg |
360m |
2007/08/14 14:55:00 |
0004 |
2.avi |
186m |
2007/08/14 18:30:00 |
0005 |
channel0.mp4 |
26m |
2007/08/14 19:30:00 |
表2
播出单定制完成后,各个位置的播出单组合在一起就成为了一个播出计划。
步骤303、发送播出单。播出单以文件形式存储在播放器本地的硬盘上,每个机顶盒可以有若干个播出单文件,文件名可以为Plist_xx.lst,其中xx为2位数字,取值为00-99。播放管理服务器端的管理员可以浏览播放器上的播出单,调整播出单上文件的播放次序,增删播出单上的文件。
如果播出单是管理员在播放管理服务器上创建,则需将其发送到播放器,通讯协议采用面向连接的TCP协议,所有报文字段以字节bytes为单位,除字符串以外,所有的整型字段均为网络字节序,Type_info为每个报文的标识,占4个字节(bytes)。发送接收进程一直运行在播放器上,监听端口5527,接收来自管理服务器端的连接建立请求报文,并运行一个新线程与其建立连接,接收播出单或其它报文,播放器与播放管理服务器之间的所有报文收发均在端口5527上完成。
表3为播放管理服务器向播放器发送播出单的消息的结构:
Type_info |
Plist_name |
Gjtp_username |
Gjtp_password |
Gjtp_ip |
File_num |
ID |
0xE008 |
16bytes |
10bytes |
10bytes |
15bytes |
4bytes |
4bytes |
File_name |
File_len |
Play_time |
File_type |
... |
Reserve |
20bytes |
4bytes |
20bytes |
1bytes |
... |
20bytes |
表3
其中,Type_info是消息类型,4bytes;Plist_name是播出单的文件名称,如Plist_01.lst,播放器按照这个名称将播出单存在硬盘上;Gjtp_username是传输服务的用户名;Gjtp_password是服务的密码;Gjtp_ip为服务器的IP地址;File_num是播出单上的文件个数;ID:播出单文件编号,播放器对此不作处理,每播放完一个节目后把该ID编号和文件名返回;File_name:文件名称,注意:如果该字段全部以“0”填充,则表示该节目是一个空视频文件,播放器在此延迟播放下一个节目,延迟的时间由delay字段给出,单位为秒,此时电视屏幕处于等待播放状态,延迟给定的时间后,播放器自动播放下一个节目;File_len/delay:一般情况下表示文件长度,以兆字节(M)为单位,如果File_name全“0”,则该字段表示延迟的秒数;Play_time:播出时间;File_type:文件类型,例如,0x00---其它文件,0x01---视频文件,0x02---音频文件,0x03---图片,0x04---字幕,0x05---RTSP流,0xff---文件目录;Reserve:保留字段,可扩展。
播放器接收到该消息后,把文件依次按消息到达的先后顺序加上序号来排列存在播出单上。播放器得到该播出单后,是按得到的节目名称的先后次序来顺序播放,而不按ID字段的大小顺序来播放。同时,向播放管理服务器返回反馈消息,该消息结构如表4所示:
Type_info |
Plist_name |
Reserve |
0xF008 |
16bytes |
20bytes |
表4
其中,Type_info:4bytes,消息类型;Plist_name:播出单的文件名称;Reserve:20字节,保留字段,可扩展。
步骤304、检测合适的播出计划。播放器为模板上每个位置选定合适的播出单进行播放,以下为检测合适播出计划并播放的方法流程,包括以下步骤:
步骤3041、记录最大可能时间N。该最大可能时间由用户设置,指用户希望播出的最大时间。
步骤3042、将第一个播出计划置为当前播出计划。该播出计划指包含整个模板所有位置播出单的完整播出计划。用户或管理员可能同事定制了多个播出计划,本流程的目的就是选出合适的播出计划进行播放。
步骤3043、选择一个播出计划设置为当前播出计划,如果***当前时间大于等于当前播出计划的开始时间,并且大于等于当前播出计划的结束时间,则将下一个播出计划设置为当前播出计划,重复执行本步骤;否则执行下一步。这是因为此播出计划已经过期,应当丢弃,通过本步骤,可以将所有的过期播出计划都过滤掉。
步骤3044、如果***当前时间大于等于当前播出计划的开始时间,但小于等于当前播出计划的结束时间,则检测到合适的播出计划。因为该播出计划正是当前要播放的播出计划,可以称之为立即播的播出计划。
步骤3045、在当前播出计划的播放过程中,播放器继续检测其它播出计划,如果在某一时刻检测到一个新的播出计划的开始时间等于***当前时间,则立即停止当前播出计划,将所述新的播出计划置为当前播出计划,该新的播出计划称为定时播,即达到其开始时间就立即播放。
如果在当前播出计划的播放过程中,始终没有检测到定时播,一直到当前播出计划播放完毕,也没有检测到,而当前的***时间还未达到最大可能时间N,表明用户还想继续观看,但并没有定制新的播出计划,此时,应重新播放当前播出计划,直到达到最大可能时间N。
如果达到最大可能时间N,此时当前播出计划已播放完,也没有检测到新的定时播,表明用户本来只打算观看到这个时刻,但又改变了主意,还想继续观看,则在时刻N,开始播放管理员预先设定的播出内容,直到检测到新的定时播。该预先设定的播出内容称为垫片播。
步骤305、读取当前播出计划,得到播放区域个数,加载模板,播放相应文件。针对模板上的每个位置,找到该位置的待播出文件列表,读取合适的播放节目并在播放器上播放。文件可以保存在本地,也可以通过相应消息从网络侧的服务器得到该文件。该消息的结构如表5所示:
Type_info |
Plist_name |
Loop |
Reserve |
0xE023 |
16bytes |
4bytes |
20bytes |
表5
其中,Type_info:4bytes,消息类型;Plist_name:要播放的播出单的文件名称;Loop:播放设置,0---只播放该播出单一次,即停止,1---循环播放该播出单,2---播完该播出单后,依次播放硬盘上存在的下一个播出单(按播出单的文件名Plist_xx.lst顺序播放);Reserve:20字节,保留字段,可扩展。
播放管理服务器接收到该消息后,将相应文件发送给播放器播放,播放完成后,播放器返回表6所示的反馈消息:
Type_info |
Plist_name |
Value |
Reserve |
0xF023 |
16bytes |
1bytes |
20bytes |
表6
其中,Type_info:4bytes,消息类型;Plist_name:要播放的播出单的文件名称;Value:1表示播出成功,0表示失败;Reserve:20字节,保留字段,可扩展。
通过以上流程,实现了根据用户的定制,在显示终端组合播放多种数字媒体。在本实施例中,通过相应的消息可以在不同的服务器上读取待播放的文件,实现了节目文件的分布式存放,合理利用现有资源,且具有较好的可扩展性。播放器可以按照时间计划自动、连续地工作,屏幕上的不同区域、在不同时间段都可以分别进行管理。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。