本发明涉及广告投放技术领域,具体而言,特别涉及一种广告和正片的合并方法、装置和广告的投放系统。
背景技术:
随着互联网时代的到来,用户已经能够通过互联网来获得各种各样的多媒体内容,不可缺少的,媒体内容提供商在向用户提供正片的同时,广告作为其收入来源之一,也会随正片一起呈现给用户。
目前,为了有针对性的投放用户感兴趣或有用的广告,大多广告的投放系统都在根据用户的习惯、喜好和需求等因素,选择一种或一类广告投放至用户。例如专利号为201310480396.x的中国专利,公开了一种用于在媒体流中插入广告的方法和系统,基于与媒体流关联的数据、位置以及与用户关联的参数实时从一个或多个广告中选出一个广告,在下发给用户终端时,如该专利中的图4所示,先将实况广播也即正片传输给用户终端,在插入第一广告的时刻,开始将广告传输到用户设备。从中可以看出,该专利公开的在媒体流中插入广告的方法,正片的媒体文件与广告的媒体文件仍然是单独的文件。
而发明人发现,由于正片的媒体文件与广告的媒体文件仍然是单独的文件,常常会在正片和广告转换时出现卡顿现象,播放不流畅,用户体验性差。
综上,针对现有技术中向用户终端提供正片和广告时,容易出现播放不流畅的现象而影响用户体验的问题,目前尚未提出有效的解决方法。
技术实现要素:
本发明的主要目的在于提供一种广告和正片的合并方法、装置和广告的投放系统,以解决现有技术中向用户终端提供正片和广告时,容易出现播放不流畅的现象而影响用户体验的问题。
一方面,提供了一种广告和正片的合并方法。该方法包括:响应于来自用户终端的播放请求,解析播放请求以得到播放请求所请求的正片、广告和广告插入正片的合并位置描述参数,合并位置描述参数用于表示从正片开始预定时间值后插入广告,预定时间值大于或等于0;获取正片的正片媒体文件和广告的广告媒体文件,其中,正片媒体文件和广告媒体文件中均包括能够被播放器播放的媒体数据;以及按照合并位置描述参数,合并正片媒体文件和广告媒体文件为一个新的媒体文件。
进一步地,正片媒体文件和广告媒体文件中均还包括元数据,元数据为用于描述媒体数据的属性的数据,合并正片媒体文件和广告媒体文件为一个新的媒体文件包括:合并广告和正片的元数据为一个新的元数据。
进一步地,元数据包括编码信息,在执行获取正片媒体文件和广告媒体文件的步骤之后,执行合并正片媒体文件和广告媒体文件的步骤之前,方法还包括:匹配正片的编码信息和广告的编码信息;其中,在该方法中,仅当正片的编码信息和广告的编码信息完全一致时,执行合并正片媒体文件和广告媒体文件的步骤。
进一步地,媒体数据由帧数据组成,元数据还包括数据元素为帧大小的第一数据集、数据元素为帧位置的第二数据集和数据元素为帧的时间戳的第三数据集,合并广告和正片的元数据为一个新的元数据包括:合并正片的第一数据集和广告的第一数据集作为新第一数据集;合并正片的第二数据集和广告的第二数据集作为新第二数据集;合并正片的第三数据集和广告的第三数据集作为新第三数据集;将编码信息、新第一数据集、新第二数据集和新第三数据集作为新的元数据。
进一步地,合并正片媒体文件和广告媒体文件为一个新的媒体文件包括:合并广告和正片的媒体数据为一个新的媒体数据,其中,合并广告和正片的媒体数据具体为:获取正片的媒体数据的正片第一总时长;根据正片第一总时长和预定时间值,确定广告与正片的合并关系,其中,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中;若广告置于正片之前,则将广告的媒体数据顺序置于正片的媒体数据之前;若广告置于正片之后,则将广告的媒体数据顺序置于正片的媒体数据之后;以及若广告置于正片之中,则在正片的媒体数据中,确定第一插入位置,并将广告的媒体数据顺序插于正片的媒体数据的第一插入位置,其中,第一插入位置为正片的媒体数据中播放时长为预定时间值的数据位置。
进一步地,正片和广告均为mp4格式,帧数据包括音频帧和视频帧,至少一个音频帧构成一个音频数据块,至少一个视频帧构成一个视频数据块,正片媒体文件和广告媒体文件的物理存储形式均为:起始位置为元数据,在元数据之后,以音频数据块和视频数据块交替出现。
合并正片的第一数据集和广告的第一数据集作为新第一数据集包括:若广告置于正片之前,则将广告的第一数据集顺序置于正片的第一数据集之前以得到新第一数据集;若广告置于正片之后,则将广告的第一数据集顺序置于正片的第一数据集之后以得到新第一数据集;若广告置于正片之中,则将广告的第一数据集顺序插于正片的第一数据集中、且与第一插入位置对应的位置之处以得到新第一数据集。
合并正片的第二数据集和广告的第二数据集作为新第二数据集包括:若广告置于正片之前,将广告的第二数据集中的每个数据元素增加第一偏移量,将正片的第二数据集中的每个数据元素增加第二偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之前以得到新第二数据集,其中,第一偏移量为正片的元数据的长度,第二偏移量为广告的元数据的长度与广告的媒体数据长度之和;若广告置于正片之后,将广告的第二数据集中的每个数据元素增加第三偏移量,将正片的第二数据集中的每个数据元素增加第四偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之后以得到新第二数据,其中,第三偏移量为正片的元数据的长度与正片的媒体数据长度之和,第四偏移量为广告的元数据的长度;若广告置于正片之中,将广告的第二数据集中的每个数据元素增加第五偏移量,将正片的第二数据集中的前n个数据元素增加第六偏移量,将正片的第二数据集中的后m个数据元素增加第七偏移量,将增加偏移量后的广告的第二数据集顺序插于增加偏移量后的正片的第二数据集中、且与第一插入位置对应的位置之处以得到新第二数据,其中,第五偏移量为正片的元数据的长度与正片的第一媒体子数据长度之和,第一媒体子数据为正片的媒体数据中、第一插入位置之前的媒体数据,n为正片的第二数据集中与第一插入位置对应的位置之前的数据元素个数,m为正片的第二数据集中与第一插入位置对应的位置之后的数据元素个数,第六偏移量为广告的元数据的长度,第七偏移量为广告的元数据的长度与广告的媒体数据长度之和。
合并正片的第三数据集和广告的第三数据集作为新第三数据集包括:若广告置于正片之前,将正片的第三数据集中的每个数据元素增加第八偏移量,将广告的第三数据集顺序置于增加偏移量后的正片的第三数据集之前以得到新第三数据集,其中,第八偏移量为广告的媒体数据的广告第一总时长;若广告置于正片之后,将广告的第三数据集中的每个数据元素增加第九偏移量,将增加偏移量后的广告的第三数据集顺序置于正片的第三数据集之后以得到新第三数据集,其中,第九偏移量为正片的媒体数据的正片第一总时长;若广告置于正片之中,将广告的第三数据集中的每个数据元素增加第十偏移量,将正片的第三数据集中的后l个数据元素增加第八偏移量,将增加偏移量后的广告的第三数据集顺序插于增加偏移量后的正片的第三数据集中、且与第一插入位置对应的位置之处以得到新第三数据,其中,第十偏移量为第一媒体子数据的时长,l为正片的第三数据集中与第一插入位置对应的位置之后的数据元素个数。
进一步地,编码信息包括:视频编码方式、视频编码等级、分辨率、码率、帧率、音频编码方式和音频采样率。
进一步地,能够被播放器播放的媒体数据为索引纯文本文件,索引纯文本文件中的索引用于指示播放器找到对应的音视频文件的网络地址进行在线播放,按照合并位置描述参数,合并正片媒体文件和广告媒体文件为一个新的媒体文件包括:获取广告的索引纯文本文件中所有索引指示的音视频文件的广告第二总时长;获取正片的索引纯文本文件中所有索引指示的音视频文件的正片第二总时长;根据正片第二总时长和预定时间值,确定广告与正片的合并关系,其中,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中;若广告置于正片之前,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之前;若广告置于正片之后,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之后;以及若广告置于正片之中,则在正片的索引纯文本文件中,确定第二插入位置,并将广告的索引纯文本文件中的索引顺序插于正片的索引纯文本文件中的第二插入位置,其中,在正片的索引纯文本文件中第二插入位置之前的所有索引指示的音视频文件的长度为预定时间值。
另一方面,提供了一种广告和正片的合并装置。该装置包括:解析模块,用于响应于来自用户终端的播放请求,解析播放请求以得到播放请求所请求的正片、广告和广告插入正片的合并位置描述参数,合并位置描述参数用于表示从正片开始预定时间值后插入广告,预定时间值大于或等于0;获取模块,用于获取正片的正片媒体文件和广告的广告媒体文件,其中,正片媒体文件和广告媒体文件中均包括能够被播放器播放的媒体数据;以及合并模块,用于按照合并位置描述参数,合并正片媒体文件和广告媒体文件为一个新的媒体文件。
进一步地,正片媒体文件和广告媒体文件中均还包括元数据,元数据为用于描述媒体数据的属性的数据,合并模块包括第一合并子模块,第一合并子模块用于合并广告和正片的元数据为一个新的元数据。
进一步地,元数据包括编码信息,装置还包括匹配模块,用于在获取模块获取正片媒体文件和广告媒体文件之后,合并模块合并正片媒体文件和广告媒体文件之前,匹配正片的编码信息和广告的编码信息;其中,在装置中,仅当正片的编码信息和广告的编码信息完全一致时,合并模块执行合并正片媒体文件和广告媒体文件的步骤。
进一步地,媒体数据由帧数据组成,元数据还包括数据元素为帧大小的第一数据集、数据元素为帧位置的第二数据集和数据元素为帧的时间戳的第三数据集,第一合并子模块具体用于执行如下的步骤:合并正片的第一数据集和广告的第一数据集作为新第一数据集;合并正片的第二数据集和广告的第二数据集作为新第二数据集;合并正片的第三数据集和广告的第三数据集作为新第三数据集;将编码信息、新第一数据集、新第二数据集和新第三数据集作为新的元数据。
进一步地,合并模块包括第二合并子模块,第二合并子模块用于合并广告和正片的媒体数据为一个新的媒体数据,其中,第二合并子模块具体用于执行如下的步骤:获取正片的媒体数据的正片第一总时长;根据正片第一总时长和预定时间值,确定广告与正片的合并关系,其中,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中;若广告置于正片之前,则将广告的媒体数据顺序置于正片的媒体数据之前;若广告置于正片之后,则将广告的媒体数据顺序置于正片的媒体数据之后;以及若广告置于正片之中,则在正片的媒体数据中,确定第一插入位置,并将广告的媒体数据顺序插于正片的媒体数据的第一插入位置,其中,第一插入位置为正片的媒体数据中播放时长为预定时间值的数据位置。
进一步地,正片和广告均为mp4格式,帧数据包括音频帧和视频帧,至少一个音频帧构成一个音频数据块,至少一个视频帧构成一个视频数据块,正片媒体文件和广告媒体文件的物理存储形式均为:起始位置为元数据,在元数据之后,以音频数据块和视频数据块交替出现。
第一合并子模块在合并正片的第一数据集和广告的第一数据集时,具体执行以下步骤:若广告置于正片之前,则将广告的第一数据集顺序置于正片的第一数据集之前以得到新第一数据集;若广告置于正片之后,则将广告的第一数据集顺序置于正片的第一数据集之后以得到新第一数据集;若广告置于正片之中,则将广告的第一数据集顺序插于正片的第一数据集中、且与第一插入位置对应的位置之处以得到新第一数据集。
第一合并子模块在合并正片的第二数据集和广告的第二数据集时,具体执行以下步骤:若广告置于正片之前,将广告的第二数据集中的每个数据元素增加第一偏移量,将正片的第二数据集中的每个数据元素增加第二偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之前以得到新第二数据集,其中,第一偏移量为正片的元数据的长度,第二偏移量为广告的元数据的长度与广告的媒体数据长度之和;若广告置于正片之后,将广告的第二数据集中的每个数据元素增加第三偏移量,将正片的第二数据集中的每个数据元素增加第四偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之后以得到新第二数据,其中,第三偏移量为正片的元数据的长度与正片的媒体数据长度之和,第四偏移量为广告的元数据的长度;若广告置于正片之中,将广告的第二数据集中的每个数据元素增加第五偏移量,将正片的第二数据集中的前n个数据元素增加第六偏移量,将正片的第二数据集中的后m个数据元素增加第七偏移量,将增加偏移量后的广告的第二数据集顺序插于增加偏移量后的正片的第二数据集中、且与第一插入位置对应的位置之处以得到新第二数据,其中,第五偏移量为正片的元数据的长度与正片的第一媒体子数据长度之和,第一媒体子数据为正片的媒体数据中、第一插入位置之前的媒体数据,n为正片的第二数据集中与第一插入位置对应的位置之前的数据元素个数,m为正片的第二数据集中与第一插入位置对应的位置之后的数据元素个数,第六偏移量为广告的元数据的长度,第七偏移量为广告的元数据的长度与广告的媒体数据长度之和。
第一合并子模块在合并正片的第三数据集和广告的第三数据集时,具体执行以下步骤:若广告置于正片之前,将正片的第三数据集中的每个数据元素增加第八偏移量,将广告的第三数据集顺序置于增加偏移量后的正片的第三数据集之前以得到新第三数据集,其中,第八偏移量为广告的媒体数据的广告第一总时长;若广告置于正片之后,将广告的第三数据集中的每个数据元素增加第九偏移量,将增加偏移量后的广告的第三数据集顺序置于正片的第三数据集之后以得到新第三数据集,其中,第九偏移量为正片的媒体数据的正片第一总时长;若广告置于正片之中,将广告的第三数据集中的每个数据元素增加第十偏移量,将正片的第三数据集中的后l个数据元素增加第八偏移量,将增加偏移量后的广告的第三数据集顺序插于增加偏移量后的正片的第三数据集中、且与第一插入位置对应的位置之处以得到新第三数据,其中,第十偏移量为第一媒体子数据的时长,l为正片的第三数据集中与第一插入位置对应的位置之后的数据元素个数。
进一步地,编码信息包括:视频编码方式、视频编码等级、分辨率、码率、帧率、音频编码方式和音频采样率。
进一步地,能够被播放器播放的媒体数据为索引纯文本文件,索引纯文本文件中的索引用于指示播放器找到对应的音视频文件的网络地址进行在线播放,按照合并位置描述参数,合并模块具体执行以下步骤:获取广告的索引纯文本文件中所有索引指示的音视频文件的广告第二总时长;获取正片的索引纯文本文件中所有索引指示的音视频文件的正片第二总时长;根据正片第二总时长和预定时间值,确定广告与正片的合并关系,其中,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中;若广告置于正片之前,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之前;若广告置于正片之后,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之后;以及若广告置于正片之中,则在正片的索引纯文本文件中,确定第二插入位置,并将广告的索引纯文本文件中的索引顺序插于正片的索引纯文本文件中的第二插入位置,其中,在正片的索引纯文本文件中第二插入位置之前的所有索引指示的音视频文件的长度为预定时间值。
再一方面,本发明提供了一种广告的投放系统。该系统包括:用户终端,用于发送播放请求至媒体服务器,以请求正片资源和广告资源;媒体服务器,用于执行本发明提供的任意一种广告和正片的合并方法,将正片资源和广告资源合并为一个资源下发至用户终端。
通过本发明,提出了一种广告和正片的合并方法,包括:响应于来自用户终端的播放请求,解析播放请求以得到播放请求所请求的正片、广告和广告插入正片的合并位置描述参数,合并位置描述参数用于表示从正片开始预定时间值后插入广告;获取正片的正片媒体文件和广告的广告媒体文件,其中,正片媒体文件和广告媒体文件中均包括能够被播放器播放的媒体数据;以及按照合并位置描述参数,合并正片媒体文件和广告媒体文件为一个新的媒体文件。在该方法中,合并正片媒体文件和广告的广告媒体文件为一个媒体文件,对于用户终端来讲,其播放一个媒体文件即可,避免在播放正片媒体文件和广告的广告媒体文件的转换时刻出现卡顿,解决了现有技术中向用户终端提供正片和广告时,容易出现播放不流畅的现象而影响用户体验的问题,达到了提升用户体验的效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是根据本发明第一实施例的广告的投放系统的示意图;
图2是根据本发明第二实施例的广告和正片的合并方法的流程图;
图3是根据本发明第三实施例的广告和正片的物理存储形式示意图;
图4是根据本发明第三实施例的广告和正片的合并方法的流程图;
图5是根据本发明第四实施例的广告和正片的合并方法的流程图;以及
图6是根据本发明第五实施例的广告和正片的合并装置的框图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步说明。需要指出的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本申请中提到的“第一数据集”、“第二数据集”、“第一总时长”、“第一偏移量”等中的“第一”、“第二”,仅起标识作用,并没有次序限定的意思表示。
实施例一
本发明实施例一提供了一种广告的投放系统,如图1所示,该投放系统包括用户终端01和媒体服务器02。
其中,用户终端是响应用户操作以播放多媒体的客户端,包括ott终端、iptv终端和dvb终端等,可以是智能电视机、计算机、机顶盒、pad、智能手机等等。
在该系统中,用户终端01响应用户操作,对待播放的正片请求认证计费服务器鉴权;认证计费服务器在接收到用户终端01的鉴权请求时,向广告系统发送广告请求消息;广告系统根据广告请求消息确定投放至用户终端01的广告,生成选择的广告所对应的播放信息返回至认证计费服务器,该播放信息包括广告标识以及广告插入正片的合并位置描述参数;认证计费服务器将广告播放信息下发至用户终端01;用户终端01接收到广告播放信息后,向媒体服务器02发送播放请求,以请求正片资源和广告资源,例如,播放请求的url中的目的地址是正片的资源地址,该资源地址可定位到正片的正片媒体文件,url携带的参数为广告标识和合并位置描述参数,由广告标识可定位到广告的广告媒体文件,由合并位置描述参数可确定从正片开始多长时间后插入广告,该时间是一个预定时间值,由广告系统确定,广告系统在确定该预定时间值时,可参考正片内容、广告内容以及用户习惯等方面确定。
媒体服务器02响应用户终端的播放请求,获取到正片资源和广告资源,也即正片媒体文件和广告媒体文件,然后将两个媒体文件合并为一个新的媒体文件,作为一个资源下发至所述用户终端01。
采用该实施例提供的系统,对于用户终端来讲,其播放一个媒体文件即可,避免在播放正片媒体文件和广告的广告媒体文件的转换时刻出现卡顿,使得用户终端在播放正片和广告时,播放更加流畅,提升用户体验。
其中,媒体服务器02合并广告和正片的方法,可采用下述实施例中提供的任意一种广告和正片的合并方法。
实施例二
本发明实施例二提供了一种广告和正片的合并方法,该方法的执行主体可以为媒体服务器,也可以为其他与媒体服务器交互的第三方平台,该实施例以媒体服务器为例进行说明。
在该实施例提供的广告和正片的合并方法中,先响应用户终端的播放请求,得到合并位置描述参数、定位广告的参数以及定位正片的参数,例如,定位广告的参数为广告标识id,媒体服务器的数据库中存储有多个广告,每个广告对应唯一一个广告标识id;定位正片的参数为正片的网络资源地址,任意一个网络资源在网络上具有唯一一个资源地址。再进一步从媒体服务器的数据库中找出要合并的广告和正片,最后按照合并位置描述参数将广告和正片合并为一个资源。
具体地,如图2所示,该方法包括如下步骤:
步骤s102:响应于来自用户终端的播放请求,解析播放请求。
例如,播放请求的url中的目的地址是正片的资源地址,该资源地址可定位到正片的正片媒体文件,url携带的参数为广告标识和合并位置描述参数,由广告标识可定位到广告的广告媒体文件,由合并位置描述参数可确定从正片开始预定时间值时插入广告。
媒体服务器解析该播放请求,能够确定播放请求所请求的正片、广告和上述合并位置描述参数。
步骤s104:获取正片的正片媒体文件和广告的广告媒体文件。
在确定播放请求所请求的正片后,从数据库中找出正片媒体文件和广告媒体文件,其中,正片与广告的媒体格式相同,媒体文件中均首先包括媒体数据,该媒体数据是指能够被播放器播放以呈现出多媒体视听内容的数据,不同媒体格式所对应的媒体数据可以不同,例如,mp4格式的媒体数据是帧数据,而m3u8格式的媒体数据实际上记录索引的一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行播放。
媒体文件中除包括媒体数据之外,依媒体格式不同,还可能包括其他数据,例如对于媒体数据为mp4格式的情况,媒体文件中还包括元数据,该元数据用于描述媒体数据的属性。
步骤s106:按照合并位置描述参数,合并正片媒体文和广告媒体文件为一个新的媒体文件。
在合并正片媒体文件和广告媒体文件时,包括将广告和正片的媒体数据合并为一个新的媒体数据,也即,将正片媒体文件中的媒体数据与广告媒体文件中的媒体文件进行合并;还包括将媒体文件中的其他类型的数据对应合并为一个数据,从而使得正片媒体文件和广告媒体文件合并为一个媒体文件。
采用该实施例提供的方法,将合并后的新的媒体文件下发至用户终端时,对于用户终端来讲,其播放的是一个媒体文件,从而不会出现播放正片媒体文件和广告媒体文件的转换时刻出现卡顿,用户终端的播放器播放包括正片和广告的一个媒体文件,因而,对于正片和广告内容的呈现,播放更加流畅,提升了用户体验,获得了商业应用的巨大成功。
实施例三
该实施例为在实施例二的基础上进一步优选的广告和正片的合并方法,在该实施例中,广告和正片的格式均为mp4格式,广告媒体文件和正片媒体文件均包括能够被播放器播放的媒体数据,还包括元数据,其中,元数据为用于描述媒体数据的属性的数据。媒体数据由帧数据组成,帧数据包括音频帧和视频帧,至少一个音频帧构成一个音频数据块,至少一个视频帧构成一个视频数据块,如图3所示,正片媒体文件和广告媒体文件的物理存储形式均为:起始位置为元数据,在元数据之后,以音频数据块和视频数据块交替出现。参见图4,该方法可以包括以下步骤:
步骤s202:响应于来自用户终端的播放请求,解析播放请求。
通过解析播放请求,得到播放请求所请求的正片、广告和广告插入正片的合并位置描述参数,合并位置描述参数用于表示从正片开始预定时间值后插入广告。
步骤s204:获取正片的正片媒体文件和广告的广告媒体文件。
正片媒体文件和广告媒体文件均包括媒体数据和元数据。其中,元数据又包括编码信息、数据元素为帧大小的第一数据集、数据元素为帧位置的第二数据集和数据元素为帧的时间戳的第三数据集。
在该步骤中,获取到的正片媒体文件和广告媒体文件中均包括媒体数据、编码信息、第一数据集、第二数据集和第三数据集。
步骤s206:匹配正片的编码信息和广告的编码信息。
正片的编码信息和广告的编码信息均包括视频编码方式、视频编码等级、分辨率、码率、帧率、音频编码方式和音频采样率等参数,在进行匹配时,逐个进行比较匹配,若所有的参数都相同,也即正片的编码信息和广告的编码信息一致,则执行步骤s208。若任意一个参数不相同,则中止匹配,并且不进行后续合并的步骤。
步骤s208:合并广告和正片的元数据为一个新的元数据。
具体地,首先合并正片的第一数据集和广告的第一数据集作为新第一数据集、合并正片的第二数据集和广告的第二数据集作为新第二数据集、合并正片的第三数据集和广告的第三数据集作为新第三数据集,然后将编码信息、新第一数据集、新第二数据集和新第三数据集作为新的元数据。
步骤s210:合并广告和正片的媒体数据为一个新的媒体数据。
将正片媒体文件和广告媒体文件的元数据和媒体数据分别合并以后,得到一个新的媒体文件,该新的媒体文件中的元数据为步骤s208中得到的新的元数据,该新的媒体文件中的媒体数据为步骤s210中得到的新的媒体数据,该新的媒体文件也即广告和正片合并后的媒体文件。
具体地,在得到新的媒体文件的过程中,首先获取正片的媒体数据的正片第一总时长和广告的媒体数据的广告第一总时长,也即,播放器在播放正片时共需要正片第一总时长的时间,在播放广告时共需要广告第一总时长的时间,然后根据正片第一总时长和预定时间值,确定广告与正片的合并关系,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中,其中:
若预定时间值为零,则合并关系为广告置于正片之前;
若预定时间值小于正片第一总时长,则合并关系为广告置于正片之中;
若预定时间值等于正片第一总时长,则合并关系为广告置于正片之后。
在确定合并关系后,再进一步分别合并媒体数据、第一数据集、第二数据集和第三数据集。
第一,针对广告置于正片之前的情况:
将广告的媒体数据顺序置于正片的媒体数据之前,以得到新媒体数据;
将广告的第一数据集顺序置于正片的第一数据集之前,以得到新第一数据集;
将广告的第二数据集中的每个数据元素增加第一偏移量,将正片的第二数据集中的每个数据元素增加第二偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之前以得到新第二数据集,其中,第一偏移量为正片的元数据的长度,第二偏移量为广告的元数据的长度与广告的媒体数据长度之和。
将正片的第三数据集中的每个数据元素增加第八偏移量,将广告的第三数据集顺序置于增加偏移量后的正片的第三数据集之前以得到新第三数据集,其中,第八偏移量为广告的媒体数据的广告第一总时长。
例如,第一数据集、第二数据集和第三数据集均为数组。在广告媒体文件中,第一个音频帧(数组下标为0,记为audio_sample_0)在广告媒体文件中的偏移量等于广告文件的元数据的长度,记为ad_metadata_length(单位字节,byte),经过合并后,原广告媒体文件中的第一个音频帧audio_sample_0在合并后的文件中的数组下标也是0,但其在合并后的文件中的位置变成了新文件metadata的大小,记为new_metadata_length,以此类推,原广告媒体文件中的所有帧在新的媒体文件中的位置都增加了new_metadata_length-d_metadata_length,也即正片的元数据的长度。
假设广告媒体文件中的所有音视频的总个数为n,总长度为ad_length,则原正片的所有音视频帧在新媒体文件中的位置相对于原位置都增加了new_metadata_length-move_metadata_length+ad_length,也即广告的元数据的长度与广告的媒体数据长度之和。
原广告媒体文件的所有帧的时间戳不变。假设广告文件的总时长为15s,则正片媒体文件的所有帧的时间戳都要往后偏移15s。
第二,针对广告置于正片之后的情况:
将广告的媒体数据顺序置于正片的媒体数据之后,以得到新媒体数据;
将广告的第一数据集顺序置于正片的第一数据集之后,以得到新第一数据集;
将广告的第二数据集中的每个数据元素增加第三偏移量,将正片的第二数据集中的每个数据元素增加第四偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之后以得到新第二数据,其中,第三偏移量为正片的元数据的长度与正片的媒体数据长度之和,第四偏移量为广告的元数据的长度;
将广告的第三数据集中的每个数据元素增加第九偏移量,将增加偏移量后的广告的第三数据集顺序置于正片的第三数据集之后以得到新第三数据集,其中,第九偏移量为正片的媒体数据的正片第一总时长。
第三,针对广告置于正片之中的情况:
在正片的媒体数据中,确定第一插入位置,并将广告的媒体数据顺序插于正片的媒体数据的第一插入位置,以得到新媒体数据,其中,第一插入位置为正片的媒体数据中播放时长为预定时间值的数据位置;
将广告的第一数据集顺序插于正片的第一数据集中、且与第一插入位置对应的位置之处,以得到新第一数据集;
将广告的第二数据集中的每个数据元素增加第五偏移量,将正片的第二数据集中的前n个数据元素增加第六偏移量,将正片的第二数据集中的后m个数据元素增加第七偏移量,将增加偏移量后的广告的第二数据集顺序插于增加偏移量后的正片的第二数据集中、且与第一插入位置对应的位置之处,以得到新第二数据,其中,第五偏移量为正片的元数据的长度与正片的第一媒体子数据长度之和,第一媒体子数据为正片的媒体数据中、第一插入位置之前的媒体数据,n为正片的第二数据集中与第一插入位置对应的位置之前的数据元素个数,m为正片的第二数据集中与第一插入位置对应的位置之后的数据元素个数,第六偏移量为广告的元数据的长度,第七偏移量为广告的元数据的长度与广告的媒体数据长度之和;
将广告的第二数据集中的每个数据元素增加第十偏移量,将正片的第三数据集中的后l个数据元素增加第八偏移量,将增加偏移量后的广告的第三数据集顺序插于增加偏移量后的正片的第三数据集中、且与第一插入位置对应的位置之处,以得到新第三数据,其中,第十偏移量为第一媒体子数据的时长,l为正片的第三数据集中与第一插入位置对应的位置之后的数据元素个数。
例如,假设正片媒体文件每个音频数据块都包含2个音频帧,每个视频数据块都包含2个视频帧,则正片共有2*2=4个音频帧,2*2=4个视频帧,正片元数据的长度为100,则正片的元数据信息中会存储如下的信息:
音频帧大小数组(4个元素):
4096;4096;4096;4096
视频帧大小数组(4个元素):
16384;16384;16384;16384
正片的文件结构:
正片元数据;正片音频数据块0;正片视频数据块0;正片音频数据块1;正片视频数据块1
广告元数据的长度为50,则广告的元数据信息中会存储如下的信息:
音频帧大小数组(4个元素):
1024;1024;1024;1024
视频帧大小数组(4个元素):
2048;2048;2048;2048
广告的文件结构:
广告元数据;广告音频数据块0;广告视频数据块0;广告音频数据块1;广告视频数据块1
假设每个视频帧的时长为1,如果插入时间为2,则根据每个视频帧的时长,可以计算出需要将广告的视频帧插入到正片的第二个视频帧之后,音频帧也是如此,则合并后的新的多媒体文件的元数据信息如下:
音频帧大小数组(8个元素):
4096;4096;1024;1024;1024;1024;4096;4096
视频帧大小数组(8个元素):
16384;16384;2048;2048;2048;2048;16384;16384
合并后的文件结构图:
新的元数据;正片音频数据块0;正片视频数据块0;广告音频数据块0;广告视频数据块0;广告音频数据块1;广告视频数据块1;正片音频数据块1;正片视频数据块1
实施例四
该实施例为在实施例二的基础上进一步优选的广告和正片的合并方法,在该实施例中,广告和正片的格式均为m3u8格式,广告媒体文件和正片媒体文件均包括能够被播放器播放的媒体数据,其中,媒体数据为索引纯文本文件,索引纯文本文件中的索引用于指示播放器找到对应的音视频文件的网络地址进行在线播放。参见图5,该方法可以包括以下步骤:
步骤s302:响应于来自用户终端的播放请求,解析播放请求。
通过解析播放请求,得到播放请求所请求的正片、广告和广告插入正片的合并位置描述参数,合并位置描述参数用于表示从正片开始预定时间值后插入广告。
步骤s304:获取正片的正片媒体文件和广告的广告媒体文件。
例如,正片媒体文件为:
正片m3u8:
#extinf:10
http://example.com/正片1.ts
#extinf:10
http://example.com/正片2.ts
#extinf:10
http://example.com/正片3.ts
#extinf:10
http://example.com/正片4.ts
#ext-endlist
广告媒体文件为:
广告m3u8:
#extinf:10
http://example.com广告1.ts
#extinf:10
http://example.com/广告2.ts
#extinf:10
http://example.com/广告3.ts
#ext-endlist
步骤s306:获取广告的索引纯文本文件中所有索引指示的音视频文件的广告第二总时长。
步骤s308:获取正片的索引纯文本文件中所有索引指示的音视频文件的正片第二总时长。
步骤s310:根据正片第二总时长和预定时间值,确定广告与正片的合并关系,其中,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中。
步骤s312:若广告置于正片之前,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之前。
步骤s314:若广告置于正片之后,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之后。
步骤s316:若广告置于正片之中,则在正片的索引纯文本文件中,确定第二插入位置,并将广告的索引纯文本文件中的索引顺序插于正片的索引纯文本文件中的第二插入位置,其中,在正片的索引纯文本文件中第二插入位置之前的所有索引指示的音视频文件的长度为预定时间值。
对于上述举例的广告媒体文件和正片媒体文件,均包括了所有分片的url,播放器播放时,会顺序下载播放媒体中的每个分片。其中#extinf:10指的是一个分片的持续时长,紧随其后的就是该分片的url。
假如需要将广告插入到正片的10s位置(即播放10s正片后就开始播放广告),则遍历正片媒体文件的每一行,获取到每个分片的时长,累加够10s后,则将广告媒体文件写入其中,最后生成的新的媒体文件为:
#extinf:10
http://example.com/正片1.ts
#extinf:10
http://example.com广告1.ts
#extinf:10
http://example.com/广告2.ts
#extinf:10
http://example.com/广告3.ts
#extinf:10
http://example.com/正片2.ts
#extinf:10
http://example.com/正片3.ts
#extinf:10
http://example.com/正片4.ts
#ext-endlist
实施例五
与本发明实施例二提供的广告和正片的合并方法相对应,本发明实施例还提供了一种广告和正片的合并装置,该装置位于媒体服务器端或第三方平台端,参见图6,该装置可以包括解析模块10、获取模块30和合并模块50。
其中,解析模块10用于响应于来自用户终端的播放请求,解析播放请求以得到播放请求所请求的正片、广告和广告插入正片的合并位置描述参数,合并位置描述参数用于表示从正片开始预定时间值后插入广告。
获取模块30用于获取正片的正片媒体文件和广告的广告媒体文件,其中,正片媒体文件和广告媒体文件中均包括能够被播放器播放的媒体数据。
合并模块50用于按照合并位置描述参数,合并正片媒体文件和广告媒体文件为一个新的媒体文件。
采用该实施例提供的合并装置,将合并后的新的媒体文件下发至用户终端时,对于用户终端来讲,其播放的是一个媒体文件,从而不会出现播放正片媒体文件和广告媒体文件的转换时刻出现卡顿,用户终端的播放器播放包括正片和广告的一个媒体文件,因而,对于正片和广告内容的呈现,播放更加流畅,提升了用户体验,获得了商业应用的巨大成功。
一种情况,正片媒体文件和广告媒体文件中均还包括元数据,元数据为用于描述媒体数据的属性的数据,合并模块包括第一合并子模块,第一合并子模块用于合并广告和正片的元数据为一个新的元数据。
优选地,元数据包括编码信息,包括:视频编码方式、视频编码等级、分辨率、码率、帧率、音频编码方式和音频采样率。该装置还包括匹配模块,用于在获取模块获取正片媒体文件和广告媒体文件之后,合并模块合并正片媒体文件和广告媒体文件之前,匹配正片的编码信息和广告的编码信息;其中,在装置中,仅当正片的编码信息和广告的编码信息完全一致时,合并模块执行合并正片媒体文件和广告媒体文件的步骤。
采用该优选实施例,在编码信息一致时才进行合并,进一步确保合并的多媒体文件在用户终端播放的流畅性。
优选地,媒体数据由帧数据组成,元数据还包括数据元素为帧大小的第一数据集、数据元素为帧位置的第二数据集和数据元素为帧的时间戳的第三数据集,第一合并子模块具体用于执行如下的步骤:合并正片的第一数据集和广告的第一数据集作为新第一数据集;合并正片的第二数据集和广告的第二数据集作为新第二数据集;合并正片的第三数据集和广告的第三数据集作为新第三数据集;将编码信息、新第一数据集、新第二数据集和新第三数据集作为新的元数据。
优选地,合并模块包括第二合并子模块,第二合并子模块用于合并广告和正片的媒体数据为一个新的媒体数据,其中,第二合并子模块具体用于执行如下的步骤:获取正片的媒体数据的正片第一总时长;根据正片第一总时长和预定时间值,确定广告与正片的合并关系,其中,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中;若广告置于正片之前,则将广告的媒体数据顺序置于正片的媒体数据之前;若广告置于正片之后,则将广告的媒体数据顺序置于正片的媒体数据之后;以及若广告置于正片之中,则在正片的媒体数据中,确定第一插入位置,并将广告的媒体数据顺序插于正片的媒体数据的第一插入位置,其中,第一插入位置为正片的媒体数据中播放时长为预定时间值的数据位置。
优选地,正片和广告均为mp4格式,帧数据包括音频帧和视频帧,至少一个音频帧构成一个音频数据块,至少一个视频帧构成一个视频数据块,正片媒体文件和广告媒体文件的物理存储形式均为:起始位置为元数据,在元数据之后,以音频数据块和视频数据块交替出现。
第一合并子模块在合并正片的第一数据集和广告的第一数据集时,具体执行以下步骤:
若广告置于正片之前,则将广告的第一数据集顺序置于正片的第一数据集之前以得到新第一数据集;若广告置于正片之后,则将广告的第一数据集顺序置于正片的第一数据集之后以得到新第一数据集;若广告置于正片之中,则将广告的第一数据集顺序插于正片的第一数据集中、且与第一插入位置对应的位置之处以得到新第一数据集。
第一合并子模块在合并正片的第二数据集和广告的第二数据集时,具体执行以下步骤:若广告置于正片之前,将广告的第二数据集中的每个数据元素增加第一偏移量,将正片的第二数据集中的每个数据元素增加第二偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之前以得到新第二数据集,其中,第一偏移量为正片的元数据的长度,第二偏移量为广告的元数据的长度与广告的媒体数据长度之和;若广告置于正片之后,将广告的第二数据集中的每个数据元素增加第三偏移量,将正片的第二数据集中的每个数据元素增加第四偏移量,将增加偏移量后的广告的第二数据集顺序置于增加偏移量后的正片的第二数据集之后以得到新第二数据,其中,第三偏移量为正片的元数据的长度与正片的媒体数据长度之和,第四偏移量为广告的元数据的长度;若广告置于正片之中,将广告的第二数据集中的每个数据元素增加第五偏移量,将正片的第二数据集中的前n个数据元素增加第六偏移量,将正片的第二数据集中的后m个数据元素增加第七偏移量,将增加偏移量后的广告的第二数据集顺序插于增加偏移量后的正片的第二数据集中、且与第一插入位置对应的位置之处以得到新第二数据,其中,第五偏移量为正片的元数据的长度与正片的第一媒体子数据长度之和,第一媒体子数据为正片的媒体数据中、第一插入位置之前的媒体数据,n为正片的第二数据集中与第一插入位置对应的位置之前的数据元素个数,m为正片的第二数据集中与第一插入位置对应的位置之后的数据元素个数,第六偏移量为广告的元数据的长度,第七偏移量为广告的元数据的长度与广告的媒体数据长度之和。
第一合并子模块在合并正片的第三数据集和广告的第三数据集时,具体执行以下步骤:若广告置于正片之前,将正片的第三数据集中的每个数据元素增加第八偏移量,将广告的第三数据集顺序置于增加偏移量后的正片的第三数据集之前以得到新第三数据集,其中,第八偏移量为广告的媒体数据的广告第一总时长;若广告置于正片之后,将广告的第三数据集中的每个数据元素增加第九偏移量,将增加偏移量后的广告的第三数据集顺序置于正片的第三数据集之后以得到新第三数据集,其中,第九偏移量为正片的媒体数据的正片第一总时长;若广告置于正片之中,将广告的第三数据集中的每个数据元素增加第十偏移量,将正片的第三数据集中的后l个数据元素增加第八偏移量,将增加偏移量后的广告的第三数据集顺序插于增加偏移量后的正片的第三数据集中、且与第一插入位置对应的位置之处以得到新第三数据,其中,第十偏移量为第一媒体子数据的时长,l为正片的第三数据集中与第一插入位置对应的位置之后的数据元素个数。
另一种情况,能够被播放器播放的媒体数据为索引纯文本文件,索引纯文本文件中的索引用于指示播放器找到对应的音视频文件的网络地址进行在线播放,按照合并位置描述参数,合并模块具体执行以下步骤:获取广告的索引纯文本文件中所有索引指示的音视频文件的广告第二总时长;获取正片的索引纯文本文件中所有索引指示的音视频文件的正片第二总时长;根据正片第二总时长和预定时间值,确定广告与正片的合并关系,其中,合并关系包括广告置于正片之前、广告置于正片之后和广告置于正片之中;若广告置于正片之前,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之前;若广告置于正片之后,则将广告的索引纯文本文件中的索引顺序置于正片的索引纯文本文件中的索引之后;以及若广告置于正片之中,则在正片的索引纯文本文件中,确定第二插入位置,并将广告的索引纯文本文件中的索引顺序插于正片的索引纯文本文件中的第二插入位置,其中,在正片的索引纯文本文件中第二插入位置之前的所有索引指示的音视频文件的长度为预定时间值。
从以上各实施例的描述中,可以看出,本发明实施例解决了向用户终端提供正片和广告时,容易出现播放不流畅的问题,达到了提升用户体验效果。
需要说明的是,上述装置或系统实施例属于优选实施例,所涉及的模块并不一定是本申请所必须的。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本申请的装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。