发明内容
本申请实施例通过提供一种针对VOD视频结束播放后启动DTV信号的方法和装置,解决了现有技术中VOD视频中如果有多个视频连续播放模式下,会频繁启动或暂停DTV信号,导致系统不稳定,且影响用户体验。
第一方面,本申请实施例提供了一种针对VOD视频结束播放后启动DTV信号的方法,所述方法包括:
当接收到当前VOD视频结束播放后发送的销毁播放器的指令,创建一用于针对下一VOD视频起播时写入数据的可读写文件;
若检测到所述可读写文件在创建后预设时长内的数据内容被更改时,则不启动DTV信号的解码器,若检测到所述可读写文件在创建后的预设时长内未被更改时,则启动DTV信号的解码器。
第二方面,本申请实施例还提供了一种针对VOD视频结束播放后启动DTV信号的方法,所述方法包括:
接收当前VOD视频结束播放后发送的销毁播放器的指令后,在预设时长内,若没有接收到下一VOD视频起播发送的创建播放器的指令,则启动DTV信号的解码器,否则不启动DTV信号的解码器。
第三方面,本申请实施例还提供了一种针对VOD视频播放结束后启动DTV信号的装置,所述装置包括:
文件创建模块,用于当接收到当前VOD视频结束播放后发送的销毁播放器的指令,创建一用于针对下一VOD视频起播时写入数据的可读写文件;
DTV信号启动模块,用于若检测到所述可读写文件在创建后预设时长内的数据内容被更改时,则不启动DTV信号的解码器,若检测到所述可读写文件在创建后的预设时长内未被更改时,则启动DTV信号的解码器。
第四方面,本申请实施例还提供了一种针对VOD视频结束播放后启动DTV信号的装置,所述装置包括:
信号处理模块,用于接收当前VOD视频结束播放后发送的销毁播放器的指令后,在预设时长内,若没有接收到下一VOD视频起播发送的创建播放器的指令,则启动DTV信号的解码器,否则不启动DTV信号的解码器。
第五方面,本申请实施例还提供了一种终端设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行上述程序时实现以下步骤,该步骤包括:
当接收到当前VOD视频结束播放后发送的销毁播放器的指令,创建一用于针对下一VOD视频起播时写入数据的可读写文件;
若检测到所述可读写文件在创建后预设时长内的数据内容被更改时,则不启动DTV信号的解码器,若检测到所述可读写文件在创建后的预设时长内未被更改时,则启动DTV信号的解码器。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本申请在接收到当前VOD视频结束播放后发送的销毁播放器的指令时,创建一用于针对下一VOD视频起播时写入数据的可读写文件,这样,如果在可读写文件创建后预设时长内,检测到可读写文件数据内容更改,不启动DTV信号的解码器,而在检测到可读写文件没有被更改时,启动DTV信号的解码器,这样,相对于已有技术中接收VOD视频销毁播放器的指令后,直接启动DTV信号而言,本申请通过判断预设时长内可读写文件的数据内容是否变化,可以确定下一VOD视频是否会在预设时长内起播,如果起播则不必像现有技术一样启动DTV,下一VOD视频没有在预设时长内起播,才会触发启动DTV信号的解码器,这样不会因为前后VOD视频之间的短暂间隔造成DTV信号的频繁启动和暂停,进而在多个VOD视频播放的过程中,不会出现DTV信号的画面频繁闪现的问题,提高了系统的稳定性,并提升了用户体验。
具体实施方式
本申请实施例通过提供一种针对VOD视频结束播放后启动DTV信号的方法和装置,解决了现有技术中在类似于HBBTV这样的平台中,VOD视频中如果有多个视频连续播放,会频繁启动或暂停DTV信号,导致系统不稳定,且影响用户体验。为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
HBBTV平台可以通过码流中的AIT解析出网络应用,在这种场景下网络应用和DTV是共存的,网络应用包括多种类型,常见的比如VOD视频类应用,类似于“爱奇艺”APP,可以基于用户的需求,从服务器中取得对应的视频数据,完成播放。比如说用户在电视上观看正常的电视节目DTV信号,如果码流中被编码进去一些网络内容,电视终端会有红色按纽提示(用户对应在遥控器端可以点击“红色”按键对网络内容进行展示),会把实时的信息提示出来,可以是球赛的视频,可以是最新的新闻,或者是足球球赛球衣的购买信息,HBBTV平台可以实现将网络应用的内容以及电视DTV信号连贯在一起,本申请并不局限于HBBTV平台,只要是类似于像HBBTV平台这种把DTV和网络应用兼容在码流中,且对于网络应用中的VOD视频类应用需要和DTV切换播放器使用权的功能平台,都可以采用本申请实施方式解决类似的技术问题。
对于VOD视频类应用,如果应用只是单独播放某个VOD片源的话,现有技术处理即VOD应用启动后去播放视频,此时需要将DTV停掉;而在视频播放完成之后,DTV需要恢复是没问题的,但是在现有的一些VOD视频中,其会加入很多广告内容,使原本一个VOD片源变成多个VOD视频连续播放,也即一个VOD正片视频会结合很多个格式类型可能不同的VOD广告视频,多个VOD连播的间隙,去开关DTV这个动作对于应用层是多余的,但是目前终端无法判定当前的VOD应用中用户点击的某个VOD视频是单独播放模式还是多个VOD视频连续播放模式。
如图2所示,为本实施例提供的一种针对HBBTV平台中VOD视频结束播放后启动DTV信号的方法,所述方法包括:
步骤S101,当接收到当前VOD视频结束播放后发送的销毁播放器的指令,创建一用于针对下一VOD视频起播时写入数据的可读写文件;
为了不占用播放器等硬件资源,在一个具体的VOD视频结束播放后应用层会销毁播放器(Player),相比于现有技术,本申请接收到销毁播放器的指令后,不会直接启动DTV功能,而是通过一个线程创建一个可读写文件,这个可读写文件的作用是下一个VOD视频起播时,系统会对该可读写文件进行数据写入操作。
优选的,该可读写文件可以具体为一个FIFO(命名管道)文件,FIFO文件是一种特殊的文件形式,它的管道的写入端从可以从另外一个文件读出数据,然后写入写管道。管道的读取端从管道读出后写到其他文件中, FIFO文件可提供一个路径名与之关联,这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO文件不相关的进程也能交换数据。例如可以关联一个具体的地址为”tmp/hbbtv_fifo”,这样,其他访问进程可以直接到这个地址上与FIFO文件进行通信。
进一步的,在FIFO文件创建后,如果有下一VOD视频起播,会对所述可读写文件也就是FIFO文件进行数据写入操作,此时,写入操作包括多种,delete是对数据进行删除(删除是用新写入的数据覆盖老的数据),update是对数据进行修改,insert是对数据进行插入,这几项都会对数据表进行写操作。也就是说,在下一VOD视频起播时,可以向FIFO文件中插入数据,删除数据,或者修改数据。
优选的,创建一用于针对下一VOD视频起播时写入数据的可读写文件之后还包括:
若接收到下一VOD视频起播时发送的创建播放器的指令,则向所述可读写文件写入预设字符。
例如可以写入“F”字符或者“空格”字符或者多种字符的组合。
步骤S102,若检测到所述可读写文件在创建后预设时长内的数据内容被更改时,则不启动DTV信号的解码器,若检测到所述可读写文件在创建后的预设时长内未被更改时,则启动DTV信号的解码器。
由于下一VOD视频起播后会向可读写文件中进行写操作,例如,写入一个预设的字符,这样,导致可读写文件的数据内容发生改变,系统在检测到读写文件的数据内容发生改变后,则会确定下一VOD视频起播了,此时,可以不启动DTV信号的解码器,仅当检测到可读写文件没有变化时,启动DTV信号的解码器。
启动DTV信号的解码器和不启动DTV信号的解码器是表征启动DTV相关功能和不启动DTV相关功能,也就是在启动DTV信号的解码器后,系统开始执行DTV相关功能,即从网络VOD视频应用的场景切换回数字电视信号的场景,不启动DTV信号的解码器含义类似,不能狭义的理解为仅仅开关DTV信号的解码器。
本方案在每一个VOD视频结束播放后,都会创建一个可读写文件,例如,如果当前一个片源中存在多个VOD视频,包括广告和正片,以广告1+广告2+正片为例,在广告1播放完成后,系统会创建一个可读写文件1,在广告2起播后,会向可读写文件1中进行数据写入,这样,如果可读写文件1的数据内容在预设事件内更改,则说明广告2在可读写文件1创建后的预设时间内起播了,此时不需要启动DTV功能,也即在广告1和广告2的间隙,不需要执行启动DTV信号的解码器的动作,类似的,在广告2结束播放后,也会重新创建一个可读写文件2,在正片起播后,会向可读写文件2进行数据写入,此时要注意,正片起播只会去找广告2结束播放后创建的可读写文件2,而不会向可读写文件1进行数据写入,系统此时也会检测可读写文件2是否会在可读写文件2创建后的预设时长内发生数据内容的更改,也就是说,每一个VOD视频起播后,都只查找前一个VOD视频结束播放后创建的可读写文件。
具体的,若检测到所述可读写文件在创建后预设时长内的数据内容被更改时,则不启动DTV信号的解码器具体包括:
步骤S1021,通过select系统调用函数对所述可读写文件进行监听;
步骤S1022,在所述可读写文件创建后的预设时长内,若接收到所述select系统调用函数的目标返回值,则不启动DTV信号的解码器,其中,所述目标返回值在监听到所述可读写文件被写入所述预设字符后触发。
以可读写文件为FIFO文件,即管道为例,对于管道而言,select系统调用函数是通过检查管道是否阻塞,来进行监听的。只要所监听的管道阻塞,select系统调用函数就能立马获知,并将其在内部参数返回值相应为置1。管道阻塞的情况之一是向管道即FIFO文件写操作,例如写入字符,当然,对于非阻塞的情况,select系统调用函数也能监听到,通常是通过读取select系统调用函数的返回值来判断,不同的返回值代表不同的含义,如果读取到的返回值为0,说明是关闭了管道,如果返回值为正值,说明是向管道FIFO文件写数据了。也即FIFO文件的变化,会唤醒select系统调用函数,该调用函数的目标返回值在所述可读写文件写入所述预设字符后触发。
其中,预设时长可以根据实际情况制定,例如,将预设时长设定为2s,那么如果FIFO文件在创建后的2秒内发生变化,则可以确定下一个VOD视频已经起播,相应的,可以不启动DTV信号的解码器,如果FIFO文件在2秒内没有发生变化,那么可以确定下一个VOD视频并没有起播,此时,需要像现有技术一样,将DTV信号重新恢复启动。
当然,能够判断可读写文件的数据内容发生变化,并不是仅能通过select系统调用函数检测,本申请实施方式还提供另外一种,如下所述:
若检测到所述可读写文件的数据内容发生改变,则不启动DTV信号具体包括:
步骤S1023,在所述可读写文件创建后的预设时长内,周期性的读取所述可读写文件的数据内容是否变化,若发生变化,则不启动DTV信号的解码器。
对于可读写文件来说,可以向其发送周期性的读命令操作,周期性读取文件中的数据内容,将每一次读取的结果与前一次读取的结果进行比较,如果发生变化,则不启动DTV信号的解码器,如果没有变化,则认为下一个VOD视频并没有在预设时间内起播,此时,可以启动DTV信号的解码器。
进一步的,所述方法还包括步骤S103,在所述可读写文件创建后的所述预设时长之后,删除所述可读写文件。
可读写文件可以删除也可以不删除,如果不执行删除,系统要对每一个VOD视频结束播放后的可读写文件进行管理,还是以“广告1+广告2+正片”为例,广告1结束后创建可读写文件1,广告2结束后创建可读写文件2,正片结束后创建可读写文件3….,每一个VOD视频起播时,都只对前一个VOD视频结束播放创建的可读写文件进行数据写入,也即广告2起播时,会向可读写文件1进行数据写入,正片起播时,会向可读写文件2进行数据写入。如果每个可读写文件都保留在内存中,一方面会占用内存空间,另一方面会增加系统的复杂性,需要对每一个可读写文件进行区分,例如将广告2起播时发送的创建播放器的请求中携带标识信息A,同时在广告1结束播放时创建的可读写文件1中也增加标识信息A,这样,系统在解析得到广告2起播请求中的标识信息后,需要遍历的查找每个可读写文件中的标识信息,最终找到可读写文件1,因此,为了实现方便,在每个可读写文件创建后的预设时长结束时,删除所述可读写文件。在预设时长内,可以检测可读写文件的数据内容是否有变化。预设时长结束后,不必再对可读写文件进行监控,在预设时长后,是否对可读写文件写入数据,系统已不再关心。
进一步的,在接收到下一VOD视频起播时发送的创建播放器的指令之后,还包括:
步骤S104,判断所述可读写文件是否存在;
步骤S105,若是,则向所述可读写文件写入预设字符;若否,则确定所述DTV信号已启动,发送暂停DTV信号的指令。
如果在预设时间内,可读写文件没有发生变化,此时认为下一VOD视频并未起播,可以启动DTV信号,该可读写文件可以删除掉。这样,下一VOD视频起播后,可以先去判断是否有可读写文件存在,具体的,例如去指定的地址上查看是否存在所述可读写文件的文件描述符,判断文件是否存在属于现有技术,在此不再赘述。
对于下一VOD视频而言,如果可读写文件存在,那么说明此时还处于预设时间内,则系统需要向该可读写文件中写入预设字符,那么系统在检测到可读写文件发生变化后,就不会启动DTV信号的解码器,而如果可读写文件不存在,说明此时已经超过预设时间,前一VOD视频创建的可读写文件已经被删除,那么相应的,DTV信号必然已经启动,此时,可以发送暂停DTV解码的指令,使DTV模式暂停,将DTV的播放器资源释放,为上述的下一VOD视频也马上要播放的VOD视频创建播放器,下一VOD视频播放完成后,会重复之前的实现过程,再创建新的可读写文件,依次类推。最终本申请实施例想要达到的效果如图3所示,将DTV信号的启动和暂停过程从每一个VOD视频(例如广告视频以及正片视频)中去除,每一个VOD视频中间的间隔,可由运营商参与运营,例如插入图片等等。
本申请在接收到当前VOD视频结束播放后发送的销毁播放器的指令时,创建一用于针对下一VOD视频起播时写入数据的可读写文件,这样,如果在可读写文件创建后预设时长内,检测到可读写文件数据内容更改,不启动DTV信号的解码器,而在检测到可读写文件没有被更改时,启动DTV信号的解码器,这样,相对于已有技术中接收VOD视频销毁播放器的指令后,直接启动DTV信号而言,本申请通过判断预设时长内可读写文件的数据内容是否变化,可以确定下一VOD视频是否会在预设时长内起播,如果起播则不必像现有技术一样启动DTV,下一VOD视频没有在预设时长内起播,才会触发启动DTV信号的解码器,这样不会因为前后VOD视频之间的短暂间隔造成DTV信号的频繁启动和暂停,进而在多个VOD视频播放的过程中,不会出现DTV信号的画面频繁闪现的问题,提高了系统的稳定性,并提升了用户体验。
基于相同的发明构思,如图4所示,本申请还提供了另外一种针对VOD视频结束播放后启动DTV信号的方法,所述方法包括:
步骤S401,接收VOD视频结束播放后发送的销毁播放器的指令后,在预设时长内,若没有接收到下一VOD视频起播后发送的创建播放器的指令,则启动DTV信号,否则不启动DTV信号。
在实际执行该方法的过程中,并不仅仅依靠通过检测可读写文件在预设时长内的变化,才能确定是否启动DTV信号。
在接收VOD视频结束播放后发送的销毁播放器的指令后,如果在预设时长内,没有接收到下一VOD视频起播后发送的创建播放器的指令,则认为下一VOD视频并没有在预设时长内起播,此时可以启动DTV信号,而如果接收到下一VOD视频起播后发送的创建播放器的指令,则认为下一VOD视频在预设时长内要起播,此时就不能启动DTV信号。
在具体实现时,可以利用计时器设定预设的时间,对接收到的指令类型进行判断,相对于已有技术中接收VOD视频销毁播放器的指令后,直接启动DTV信号而言,通过判断预设时长内是否接收到下一VOD视频起播后发送的创建播放器的指令,可以确定下一VOD视频是否会在预设时长内起播,如果起播则不必像现有技术一样启动DTV信号的解码器,下一VOD视频没有在预设时长内起播,才会触发启动DTV信号的解码器,这样不会因为前后VOD视频之间的短暂间隔造成DTV信号的频繁启动和暂停,进而不会出现DTV信号的画面频繁闪现的问题,提高了系统的稳定性,并提升了用户体验。
基于相同的发明构思,如图5所示,本申请还提供了一种VOD视频播放结束后启动DTV信号的装置500,所述装置500包括:
文件创建模块501,用于当接收到当前VOD视频结束播放后发送的销毁播放器的指令,创建一用于针对下一VOD视频起播时写入数据的可读写文件;
DTV信号启动模块502,用于若检测到所述可读写文件在创建后预设时长内的数据内容被更改时,则不启动DTV信号的解码器,若检测到所述可读写文件在创建后的预设时长内未被更改时,则启动DTV信号的解码器。
本申请在接收到当前VOD视频结束播放后发送的销毁播放器的指令时,创建一用于针对下一VOD视频起播时写入数据的可读写文件,这样,如果在可读写文件创建后预设时长内,检测到可读写文件数据内容更改,不启动DTV信号的解码器,而在检测到可读写文件没有被更改时,启动DTV信号的解码器,这样,相对于已有技术中接收VOD视频销毁播放器的指令后,直接启动DTV信号而言,本申请通过判断预设时长内可读写文件的数据内容是否变化,可以确定下一VOD视频是否会在预设时长内起播,如果起播则不必像现有技术一样启动DTV,下一VOD视频没有在预设时长内起播,才会触发启动DTV信号的解码器,这样不会因为前后VOD视频之间的短暂间隔造成DTV信号的频繁启动和暂停,进而在多个VOD视频播放的过程中,不会出现DTV信号的画面频繁闪现的问题,提高了系统的稳定性,并提升了用户体验。
基于相同的发明构思,如图6所示,本申请还提供了一种VOD视频结束播放后启动DTV信号的装置600,其特征在于,所述装置600包括:
信号处理模块601,用于接收当前VOD视频结束播放后发送的销毁播放器的指令后,在预设时长内,若没有接收到下一VOD视频起播发送的创建播放器的指令,则启动DTV信号的解码器,否则不启动DTV信号的解码器。
在具体实现时,可以利用计时器设定预设的时间,对接收到的指令类型进行判断,相对于已有技术中接收VOD视频销毁播放器的指令后,直接启动DTV信号而言,通过判断预设时长内是否接收到下一VOD视频起播后发送的创建播放器的指令,可以确定下一VOD视频是否会在预设时长内起播,如果起播则不必像现有技术一样启动DTV信号,下一VOD视频没有在预设时长内起播,才会触发启动DTV信号,这样不会因为前后VOD视频之间的短暂间隔造成DTV信号的频繁启动和暂停,进而不会出现DTV信号的画面频繁闪现的问题,提高了系统的稳定性,并提升了用户体验。
图7为本发明终端一应用环境的实施例的结构示意图。如图7所示,本实施例以终端为电视机为例,可以包括:处理器701、存储器702和通信接口703;
在所述存储器702存储有可在所述处理器上运行的计算机程序,所述处理器执行上述程序时实现以下步骤,该步骤包括:
当接收到当前VOD视频结束播放后发送的销毁播放器的指令,创建一用于针对下一VOD视频起播时写入数据的可读写文件;
若检测到所述可读写文件在创建后预设时长内的数据内容被更改时,则不启动DTV信号的解码器,若检测到所述可读写文件在创建后的预设时长内未被更改时,则启动DTV信号的解码器。
其中,存储器502,用于存储程序;具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器502可能包含随机存取存储器(random access memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
通信接口503,用于接收输入信号或者指令;
处理器501,用于根据信号或指令执行存储器502存储的程序,用于执行本发明方法实施例所提供的技术方案,其实现原理和技术效果类似,可参考图2所示的方法实施例,此处不再赘述。
处理器可以由集成电路(Integrated Circuit,简称IC) 组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器可以是中央处理器(Central Processing Unit,简称CPU),也可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
图8为本申请通过select系统调用函数检测可读写文件是否变化的的数据流程示意图,APP为网络VOD视频应用侧,Middleware为中间软件程序实现侧,而TV为处理DTV信号,执行DTV功能侧。
APP侧在一个VOD视频播放时,以发送播放指令到Middleware侧,若VOD视频播放完成,则发送销毁播放器指令的命令到Middleware侧,Middleware侧在接收到该指令后,通过一个线程创建FIFO文件,进而判断FIFO文件是否在2s内发生变化,如果没有发生变化,则向TV侧发送启动DTV信号的解码器的指令,TV侧在接收到该指令后,则会执行启动DTV解码的操作,如果FIFO文件没有变化,此时并没有指令传递给TV侧,因此,TV侧不会启动DTV解码操作。下一个VOD视频起播时,APP侧会向Middleware侧发送创建新的播放器的指令,Middleware侧接收到指令后,并不会向TV侧发送暂停DTV信号的指令,而是判断当前是否有FIFO文件存在,如果存在,则会向FIFO文件写入一个预设字符,该写操作会唤醒用于检测FIFO文件变化的select系统调用函数,该函数返回一个目标值,使得Middleware侧得知下一个VOD视频要起播,不会启动DTV信号的解码器,如果FIFO文件不存在,则认为前一个VOD视频创建的FIFO文件由于在2s内没有变化而被删除,DTV信号必然已经启动,此时,则向TV侧发送停止DTV信号解码的指令,以释放DTV信号播放需要占用的播放器资源。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发
明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。