发明内容
本发明的目的在于提出一种视频点播系统中的广告插播方法和装置,可以支持动态播放表单,改进了以往广告插播系统部署成本高、不能动态选择播放表单的瓶颈。
为达此目的,本发明采用以下技术方案:
一种视频点播系统中的广告插播方法,适用于混合光纤同轴电缆网,包括以下步骤:
A、将视频节目和广告注入到内容管理服务器中,内容管理服务器对视频节目和广告生成索引文件;
B、内容管理服务器将视频节目、广告及各自的索引文件发送给视频服务器;
C、发布管理服务器对视频节目生成用户界面,提供给机顶盒点播;
D、机顶盒通过混合光纤同轴电缆网浏览发布管理服务器的内容,获取视频节目的点播地址;
E、机顶盒向会话管理服务器发送点播请求,会话管理服务器将点播请求转发给视频服务器,并申请IPQAM频点资源;
F、视频服务器向广告管理服务器请求播放表单,广告管理服务器生成播放表单发送给视频服务器,视频服务器按照播放表单和索引文件将视频节目和广告推送给IPQAM设备,经过调制后发送给机顶盒。
索引文件包括头部分和体部分,头部分包括代表索引文件开始位置的字段、版本字段、索引文件大小的字段、倍速种类字段、原始流信息字段和传输流信息字段,体部分包括格式为传输流数据包号加上pcr值的索引条目,索引条目的数量与视频节目或者广告的播放时长一致。
原始流信息字段进一步包括视频流pid字段、视频流编码格式字段、音频流pid字段和音频流编码格式字段。
传输流信息字段进一步包括码率信息字段、图像组结构闭环标识字段、广告切回点图像组中第一个P帧前面B帧的数量字段、携带pcr信息的传输流数据包的pid字段、携带pmt表的传输流数据包的pid字段和第一个传输流数据包出现的位置字段。
索引文件中,广告插播切出点选择在I帧或者P帧,广告插播切回点选择在闭环图像组的I帧,如果不是闭环图像组,则选择在当前图像组的第一个I帧,但不发送当前图像组的第一个I帧之后、第一个P帧之前的所有B帧。
步骤F进一步包括以下步骤:
F1、视频服务器收到点播请求,将包括用户号、点播的视频节目和广告的序列号的播放表单请求发送给广告管理服务器;
F2、广告管理服务器根据用户号、点播的视频节目和广告的序列号和广告插播策略生成播放表单,发送给视频服务器;
F3、视频服务器根据播放表单获得得到广告名称、广告插播时间点和广告时长;
F4、视频服务器在推送视频节目时,判断是否到达广告插播时间点,如果没有到达则继续推送视频节目,如果到达广告插播时间点,则转至步骤F5;
F5、视频服务器查询索引文件获得视频节目的广告插播时间点的广告插播切出点,当视频服务器播放到视频节目的广告插播时间点的广告插播切出点时,开始推送广告,在广告推送过程中视频服务器实时修正广告的PSI信息,以保证与视频节目一致,把广告的音视频pid、携带pmt表的传输流数据包的pid和携带pcr的传输流数据包的pid修改成与视频节目一致,将广告的pat表替换成视频节目的,当广告播放到广告时长时,视频服务器查询索引文件获得视频节目的广告时长的广告插播切回点,切回视频节目。
步骤F3还包括以下步骤:
视频服务器判断播放表单是否为空,如果为空,不插播广告。
步骤F4还包括以下步骤:
视频服务器判断广告的音视频编码格式和视频节目是否一致,如果不一致,则广告不可用,相应的广告插播时间点则无效。
步骤F4还包括以下步骤:
视频服务器判断广告和视频节目的码率相差是否不大于128Kbps,如果否,则广告不可用的。
一种视频点播系统中的广告插播装置,包括内容管理服务器、视频服务器、发布管理服务器、IPQAM设备、会话管理服务器、广告管理服务器和机顶盒,其中,
内容管理服务器用于对视频节目和广告生成索引文件并将视频节目、广告及各自的索引文件发送给视频服务器;
发布管理服务器用于对视频节目生成用户界面,提供给机顶盒点播;
机顶盒用于通过混合光纤同轴电缆网浏览发布管理服务器的内容,获取视频节目的点播地址,向会话管理服务器发送点播请求,并接收IPQAM设备发来的信号;
会话管理服务器用于将点播请求转发给视频服务器,并向IPQAM设备申请频点资源;
视频服务器用于向广告管理服务器发送播放表单请求,并按照播放表单和索引文件将视频节目和广告推送给IPQAM设备;
IPQAM设备用于对视频节目和广告进行调制后发送给机顶盒;
广告管理服务器用于根据播放表单请求,并生成播放表单发送给视频服务器。
采用了本发明的技术方案,可以支持动态播放表单,改进了以往广告插播系统部署成本高、不能动态选择播放表单的瓶颈,为客户提供了一种更加完美的广告插播方案。同时由于本发明的技术方案对于大数据量的视频流通过HFC网络传输,少量的交互信息通过IP网络传输,就避免了由于数据量过大而导致的网络拥堵,从而提高控制信令的可靠传输,以及数据的可靠传递,从而提高了服务质量,改善了用户体验。另外可以根据用户序列号下播不同的的广告,从而使广告投放的收益达到最大化。
具体实施方式
下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
图1是本发明具体实施方式中视频点播系统的广告插播装置的结构示意图。如图1所示,该广告插播装置包括内容管理服务器101、视频服务器102、发布管理服务器103、IPQAM设备104、会话管理服务器105、广告管理服务器106和机顶盒107。
其中,内容管理服务器对视频节目和广告生成索引文件并将视频节目、广告及各自的索引文件发送给视频服务器;发布管理服务器对视频节目生成用户界面,提供给机顶盒点播;机顶盒通过混合光纤同轴电缆网浏览发布管理服务器的内容,获取视频节目的点播地址,向会话管理服务器发送点播请求,并接收IPQAM设备发来的信号;会话管理服务器将点播请求转发给视频服务器,并向IPQAM设备申请频点资源;视频服务器向广告管理服务器发送播放表单请求,并按照播放表单和索引文件将视频节目和广告推送给IPQAM设备;IPQAM设备对视频节目和广告进行调制后发送给机顶盒;广告管理服务器用于根据播放表单请求,并生成播放表单发送给视频服务器。
以上各个模块协同工作即可完成广告的实时、动态插播,工作人员首先把视频节目和广告注入到内容管理服务器上,在注入的同时,索引文件就已经生成,内容管理服务器把视频节目和广告分发到视频服务器,然后工作人员即可以利用发布管理服务器,发布刚注入的视频节目。机顶盒首先通过HFC网络,浏览发布管理服务器的内容,获得各个视频节目的介绍和点播地址,再把点播请求传送到会话管理服务器,会话管理服务器负责维护会话,申请IPQAM频点资源,然后点播请求到达视频服务器,视频服务器向广告管理服务器请求播放表单,并按照播放表单的顺序把视频节目和广告推送到IPQAM设备,节目流经IPQAM调制后,发送到机顶盒,用户便可收看了。
图2是本发明具体实施方式中视频点播系统的广告插播的流程图。如图2所示,该广告插播流程包括以下步骤:
步骤201、将视频节目和广告注入到内容管理服务器中,内容管理服务器对视频节目和广告生成索引文件。
索引文件是内容注入系统和视频服务器联系的纽带,视频服务器有了视频节目和广告的索引文件才能实现跳转播放,广告插播等功能。索引文件设计的好坏,直接影响到视频服务器的性能以及功能,借助于索引文件视频服务器即可以实现跳转、暂停、倍速切换和广告插播功能。
索引文件包括头部分和体部分(Head+Body),如表1所示,头部分包括代表索引文件开始位置的字段syn、版本字段version、索引文件大小的字段length、倍速种类字段table number、原始流信息字段es info和传输流信息字段Ts info。
表1
syn |
version |
length |
table number |
es info |
TS info |
reserverd |
0x00ff |
V03 |
4bytes |
1byte |
20bytes |
5bytes |
16bytes |
其中,syn字段用来从索引文件里找到索引内容边界,代表索引表的开始位置;
version字段代表索引的版本信息,以备后续升级,区别不同版本间的差异;
length字段代表整个索引的大小,可以根据此大小申请内存区,把整个索引格式读入内存,以提高查询速度;
table number字段代表倍速种类,以便实现倍速切换;
es info字段代表了视频节目或广告中元素流的相关特性,详细定义见表2;
Ts info字段代表了整个视频节目或广告系统层的特性,详细定义见表3;
reseverd字段保留将来以作它用,可以根据需要扩充。
如表2所示,原始流信息字段进一步包括视频流pid字段video pid、视频流编码格式字段video es type、音频流pid字段audio pid和音频流编码格式字段audio es type。
表2
video pid |
video es ype |
audio pid |
audio es type |
other es pid |
other es type |
16bits |
8bits |
16bits |
8bits |
16bits |
8bits |
其中,video pid字段代表了视频流的pid;
video es type字段代表了视频流的编码格式;
audio pid字段代表了音频流的pid;
audio es type字段代表了音频流的编码格式;
other es pid字段以备它用;
other es type字段以备它用。
这些信息是实现广告插播所必须的,在插播广告的过程中视频服务器要篡改广告的PSI信息,具体说来要把广告的视频、音频、字幕和pmt表的pid篡改成和视频节目一致。
如表3所示,传输流信息字段进一步包括码率信息字段bitrate、图像组结构闭环标识字段closed_gop、广告切回点图像组中第一个P帧前面B帧的数量字段b_pic_num、携带pcr信息的传输流数据包的pid字段pcr_pid、携带pmt表的传输流数据包的pid字段pmt_pid和第一个传输流数据包出现的位置字段offset。
表3
bitrate |
closed_gop |
b_pic_num |
pcr_pid |
pmt_pid |
offset |
8bits |
1bit |
4bits |
16bits |
16bits |
8bits |
其中,bitrate字段代表码率信息,为节省存储空间码率以32Kbps为单位;
closed_gop字段代表片源GOP结构为闭环的,也就是解码时不依赖于其他GOP;
b_pic_num字段代表广告切回点GOP中第一副P图前面B图的数量;
pcr_pid字段代表携带pcr信息的ts包的pid;
pmt_pid字段代表携带pmt表的ts包的pid;
offset字段代表正确TS包边界偏移位置。
这些信息同样是实现广告插播所必须的,比如要确保广告和视频节目的码率一致,bitrate则是必须的,当从广告切回时,视频节目切回点的B图处理策略是靠closed_gop和b_pic_num来决定的,其他psi信息以及pcr信息则需通过pcr_pid和pmt_pid字段获取。
体部分包括格式为传输流数据包号加上pcr值的索引条目(ts packetnumber+pcr value),索引条目的数量与视频节目或者广告的播放时长一致,这是为了跳转播放设计的,同时也可以应用于广告插播点的选择。
下面详细讲述索引文件中广告切入切出点的选择依据。
MPEG-2定义了三种图像编码类型,即I帧(帧内编码帧)、P帧(帧间编码帧)和B帧(双向预测帧)。I帧采用帧内编码方式,利用本帧图像的空间相关性实现压缩,I帧数据可单独解码。P帧和B帧采用帧间编码,同时利用图像的空间和时间相关性,不可单独解码。
表4中,P帧(P1)由I帧(I1)预测,该I帧(I1)为P帧(P1)的“参考帧”,P帧(P1)为“当前帧”。两个P帧间传送2幅B帧(B3和B4),它们由原序列中的“过去帧”(I1)和“将来帧”(P1)预测,这2幅B帧的运动补偿用帧I1和帧P1共同完成,在三种类型编码帧中压缩效率最高。由于在解码B帧前,需要首先解码其“参考帧”,所以“参考帧”需要首先传送,B帧(B3和B4)的“参考帧”I(I1)帧和P(P1)帧位于它们之前传送。如果表4中GOP结构位于一个视频流的起始位置,则两个B帧(B1和B2)仅使用后向编码,即只依赖于I帧(I1)编码,此GOP结构中会置起closed_gop位。
解码顺序为:I1、B1、B2、P1、B3、B4、P2、B5、B6、I2、B6、B7、P3。
显示顺率为:B1、B2、I1、B3、B4、P1、B5、B6、P2、B6、B7、I2、P3。
表4
广告插播点的选择包括切出点和切回点的选择,以表4为例,假如切出点选在B3,由于解码P1所依赖的I1已经传送,故此不会导致解码错误,但是由于B3和B4帧的显示时间处于P1前,所以会导致视觉的“停顿”,影响客户感受,所以切出点必须选在I帧或P帧。
对于切入点来讲如果选择B帧,则会导致由于解码B帧所依赖的“参考帧”不存在而引起的解码错误,同样如果切入点选择在P帧,也存在相同的问题,故此切入点必须选择在I帧,假设以I2作为切入点,当从广告片切回原片源时,由于解码B6和B7所依赖的P2不存在,同样会导致解码错误,也就会出现马赛克现象,为解决此问题我们必须选择“封闭式”结构的GOP作为切入点。还有一种方法是不发送I2后的两个B帧,由于I2后的两个B帧显示时间位于I2之前,所以不会导致画面“停顿”,可以保证切回后画面是连贯的。本具体实施方式对于这两种方法都做了考虑,广告插播切回点优先选择在闭环图像组的I帧,如果不是闭环图像组,则选择在当前图像组的第一个I帧,但不发送当前图像组的第一个I帧之后、第一个P帧之前的所有B帧。
索引文件的Body部分,记录了全部的广告插播点的位置和PCR信息,同时也可为作跳转播放所用。
步骤202、内容管理服务器将视频节目、广告及各自的索引文件发送给视频服务器。
步骤203、发布管理服务器对视频节目生成用户界面,提供给机顶盒点播。
步骤204、机顶盒通过混合光纤同轴电缆网浏览发布管理服务器的内容,获取视频节目的点播地址。
步骤205、机顶盒向会话管理服务器发送点播请求,会话管理服务器将点播请求转发给视频服务器,并申请IPQAM频点资源。
步骤206、视频服务器收到点播请求,将包括用户号、点播的视频节目和广告的序列号的播放表单请求发送给广告管理服务器,其中用户号可以是机顶盒的序列号,也可以是用户卡的序列号。
步骤207、广告管理服务器根据用户号、点播的视频节目和广告的序列号和广告插播策略生成播放表单,发送给视频服务器。
广告插播策略可以有基于区域、年龄、客户消费习惯、集团、时间段等。
广告管理服务器和视频服务器之间的通信方式为可以利用TCP协议传输XML格式的播放表单,播放表单格式如下:
<?xml version=″1.0″encoding=″UTF-8″?>
<GLOBAL>
<PREF NAME=″movie_name″>VODC20090102221.ts</PREF>
<PREF NAME=″movie_duration″TYPE=″UInt32″>3600</PREF>
<PREF NAME=″advertisement_number″TYPE=″UInt32″>3</PREF>
<LIST>
<ASSET NAME=″mengniu.ts″>
<PREF NAME=″store_path″>/usr/local/movies/</PREF>
<PREF NAME=″start_time″TYPE=″UInt32″>0</PREF>
<PREF NAME=″duration″TYPE=″UInt32″>10</PREF>
<PREF NAME=″advertisement_type″TYPE=″UInt32″>0</PREF>
<PREF NAME=″trickmode_enable″TYPE=″Bool″>false</PREF>
</ASSET>
<ASSET NAME=henan.ts″>
<PREF NAME=″store_path″>/usr/local/movies/</PREF>
<PREF NAME=″start_time″TYPE=″UInt32″>0</PREF>
<PREF NAME=″duration″TYPE=″UInt32″>15</PREF>
<PREF NAME=″advertisement_type″TYPE=″UInt32″>0</PREF>
<PREF NAME=″trickmode_enable″TYPE=″Bool″>false</PREF>
</ASSET>
</LIST>
其中,″movie_name″是客户点播的视频节目;“movie_duration”是视频节目的播放时间;“advertisement_number″是广告数量;″mengniu.ts″是广告的名称;″store_path″是广告在视频服务器上的存储路径;″start_time″是广告的插播时间;″duration″是广告的长度;″advertisement_type″是广告播放类型,比如插播、盖播等;″trickmode_enable″是指广告播放时是否允许特技操作,比如跳转、倍速播放、暂停等。
步骤208、视频服务器判断播放表单是否为空,如果为空,不插播广告;如果不为空,视频服务器根据播放表单获得得到广告名称、广告插播时间点和广告时长。
步骤209、视频服务器判断广告的音视频编码格式和视频节目是否一致,如果不一致,则广告不可用,相应的广告插播时间点则无效;如果一致,视频服务器推送视频节目给IPQAM设备,经过调制后发送给机顶盒,在推送视频节目时,判断是否到达广告插播时间点,如果没有到达则继续推送视频节目,如果到达广告插播时间点,则转至步骤210。
步骤210、视频服务器判断广告和视频节目的码率相差是否不大于128Kbps,如果否,则广告不可用的,如果是不大于128Kbps,视频服务器查询索引文件获得视频节目的广告插播时间点的广告插播切出点,当视频服务器播放到视频节目的广告插播时间点的广告插播切出点时,开始推送广告给IPQAM设备,经过调制后发送给机顶盒,在广告推送过程中视频服务器实时修正广告的PSI信息,以保证与视频节目一致,把广告的音视频pid、携带pmt表的传输流数据包的pid和携带pcr的传输流数据包的pid修改成与视频节目一致,将广告的pat表替换成视频节目的,当广告播放到广告时长时,视频服务器查询索引文件获得视频节目的广告时长的广告插播切回点,切回视频节目。
当视频节目播放完毕,则停止本次点播过程。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。