DVB字幕同步方法及系统与流程

文档序号:15848782发布日期:2018-11-07 09:30阅读:380来源:国知局
DVB字幕同步方法及系统与流程

本发明涉及多媒体播放领域,特别涉及dvb字幕的处理。

背景技术

字幕是一种最显目且最为直接提供信息的途径,字幕可分为硬字幕和软字幕,硬字幕在电视节目播放前,字幕数据直接和节目数据刻录在一起,这样字幕数据就和电视节目数据混合在一起,该种字幕不方便修改且不支持多语言字幕。软字幕是把编码后字幕数据复用到传输流中,用户接收端解码字幕内容并最终显示到屏幕上,软字幕与用户高度互动,能够被用户接收,dvb(digitalvideobroadcasting数字视频广播)字幕作为软字幕中的一种在数字机顶盒的应用可满足数字机顶盒在多个国家销售使用涉及多种语言的需求。

现有技术中,数字机顶盒应不同市场需求采用不同平台的嵌入式芯片,不同嵌入式芯片的sdk(软件开发工具包)会提供不同的字幕解析以及同步控制方法,因而存在因芯片平台解析字幕pes(packetizedelementarystreams基本码流包)包延时过长造成字幕不能同步音视频显示的问题,同时会存在代码复用率低且移植困难的问题。



技术实现要素:

本发明所要解决的技术问题是:克服因不同芯片平台解析字幕pes包延时不一致造成字幕不能同步音视频显示的问题,提出一种dvb字幕同步方法及系统。

为解决上述技术问题,本发明提出了一种dvb字幕同步方法,包括段解析处理方法及时间同步处理方法;

所述段解析处理方法包括以下步骤:

对有效的字幕pes包(基本码流包)进行段解析,所述段解析包括pcs段(页复合段)解析,所述pcs段解析获取pcs段中的页状态并确定工作状态,若工作状态为获取数据状态则继续对字幕pes包进行段解析获得待显示的字幕信息,所述字幕信息包括显示时间戳、显示时长和根据显示时间戳及终端解码器的本地同步时间进行系统时间换算得出的实际显示时间,若当前工作状态为控制操作状态则发送字幕准备完毕消息,所述pcs段解析轮询监听等待消息,所述等待消息包括等待时长,若监听到等待消息则pcs段解析暂停,暂停的时间为所述等待时长;

所述时间同步处理方法包括以下步骤:

根据接收到的所述字幕准备完毕消息、所述实际显示时间及所述显示时长采用动态分配等待时长的方法控制字幕送显指令或字幕消隐指令或所述等待消息的发送。

作为本发明上述dvb字幕同步方法的一种优选,所述动态分配等待时长的方法包括如下步骤:

s1、发送字幕消隐指令,阻塞等待直至实时监听到字幕准备完毕消息;

s2、获取待显示字幕的字幕信息,计算等待时长,等待时长等于所述实际显示时间减去当前系统时间二;

s3、如果等待时长小于等于零则进入步骤s7,否则进入步骤s4;

s4、如果显示时长大于时长预设值,则设置最大等待时长为预定倍数的显示时长,否则设置最大等待时长为预定倍数的时长预设值;

s5、判断等待时长是否大于最大等待时长,如果是则进入步骤s1,否则进入步骤s6;

s6、发送等待消息;

s7、发送字幕送显指令,等待对应的等待时长后进入s1。

作为本发明上述dvb字幕同步方法的另一种优选,所述动态分配等待时长的方法包括如下步骤:

s1、设置等待时长的初始值为无限大;

s2、判断等待时长是否为无限大,如果是则阻塞等待直至实时监听到字幕准备完毕消息后进入步骤s5,否则进入步骤s3;

s3、等待对应的等待时长后,判断是否接收到字幕准备完毕消息,如果是则进入步骤s5,否则进入步骤s4;

s4、发送字幕消隐指令,同步设置等待时长为无限大,进入步骤s2;

s5、获取待显示字幕的字幕信息;

s6、计算等待时长,等待时长等于所述实际显示时间减去当前系统时间二;

s7、如果等待时长小于等于零则进入步骤s11,否则进入步骤s8;

s8、如果显示时长大于时长预设值,则设置最大等待时长为预定倍数的显示时长,否则设置最大等待时长为预定倍数的时长预设值;

s9、判断等待时长是否大于最大等待时长,如果是则进入步骤s4,否则进入步骤s10;

s10、发送等待消息,进入步骤s11;

s11、发送字幕送显指令,同步设置等待时长为显示时长,进入步骤s2。

作为本发明上述dvb字幕同步方法的一种改进,所述当前工作状态的确定方法为:若所述页状态的值为1或2,则当前工作状态为获取数据状态,若所述页状态的值为0,则当前工作状态为控制操作状态。

作为本发明上述dvb字幕同步方法的又一种改进,所述系统时间换算的方法为:所述显示时间戳减去终端解码器提供的本地同步时间得到时间差值,若此时间差值小于零,则待显示字幕的实际显示时间等于当前系统时间一加上时间差预设值,否则,待显示字幕的实际显示时间等于所述时间差值除以视频同步的时间尺度后加上当前系统时间一。

为解决上述技术问题,本发明提出了一种dvb字幕同步系统,包括:

包括字幕段解析模块和时间同步控制模块;

所述字幕段解析模块对有效的字幕pes包进行段解析,该字幕段解析模块包括pcs段解析模块,所述pcs段解析模块获取pcs段中的页状态并确定当前工作状态,若当前工作状态为获取数据状态则继续对字幕pes包进行段解析获得待显示的字幕信息,所述字幕信息包括显示时间戳、显示时长和根据显示时间戳及终端解码器的本地同步时间进行系统时间换算得出的实际显示时间,若当前工作状态为控制操作状态则发送字幕准备完毕消息,所述pcs段解析轮询监听等待消息,所述等待消息包括等待时长,若监听到等待消息则pcs段解析暂停,暂停的时间为所述等待时长;

所述时间同步控制模块根据接收到的所述字幕准备完毕消息、实际显示时间及显示时长采用动态分配等待时长的方法控制字幕送显指令或字幕消隐指令或所述等待消息的发送。

作为本发明上述dvb字幕同步系统的一种优选,所述时间同步控制模块包括用于计算所述动态分配等待时长的计算模块,所述计算模块包括如下计算步骤:

s1、发送字幕消隐指令,阻塞等待直至实时监听到字幕准备完毕消息;

s2、获取待显示字幕的字幕信息,计算等待时长,等待时长等于所述实际显示时间减去当前系统时间二;

s3、如果等待时长小于等于零则进入步骤s7,否则进入步骤s4;

s4、如果显示时长大于时长预设值,则设置最大等待时长为预定倍数的显示时长,否则设置最大等待时长为预定倍数的时长预设值;

s5、判断等待时长是否大于最大等待时长,如果是则进入步骤s1,否则进入步骤s6;

s6、发送等待消息;

s7、发送字幕送显指令,等待对应的等待时长后进入s1。

作为本发明上述dvb字幕同步系统的另一种优选,所述时间同步控制模块包括用于计算所述动态分配等待时长的计算模块,所述计算模块包括如下计算步骤:

s1、设置等待时长的初始值为无限大;

s2、判断等待时长是否为无限大,如果是则阻塞等待并实时监听字幕准备完毕消息,如收到该消息则进入步骤s5,否则进入步骤s3;

s3、等待对应的等待时长后,如果是则阻塞等待直至实时监听到字幕准备完毕消息后进入步骤s5,否则进入步骤s4;

s4、发送字幕消隐指令,同步设置等待时长为无限大,进入步骤s2;

s5、获取待显示字幕的字幕信息;

s6、计算等待时长,等待时长等于所述实际显示时间减去当前系统时间二;

s7、如果等待时长小于等于零则进入步骤s11,否则进入步骤s8;

s8、如果显示时长大于时长预设值,则设置最大等待时长为预定倍数的显示时长,否则设置最大等待时长为预定倍数的时长预设值;

s9、判断等待时长是否大于最大等待时长,如果是则进入步骤s4,否则进入步骤s10;

s10、发送所述等待消息,进入步骤s11;

s11、发送字幕送显指令,同步设置等待时长为显示时长,进入步骤s2。

作为本发明上述dvb字幕同步系统的一种改进,所述字幕段解析模块包括用于确定当前工作状态的确定模块,所述确定模块处理流程包括:若所述页状态的值为1或2,则当前工作状态为获取数据状态,若所述页状态的值为0,则当前工作状态为控制操作状态。

作为本发明上述dvb字幕同步系统的又一种改进,所述字幕段解析模块包括用于系统时间换算的时间换算模块,所述时间换算模块根据所述显示时间戳减去终端解码器提供的本地同步时间得到时间差值,若此时间差值小于零,则待显示字幕的实际显示时间等于当前系统时间一加上时间差预设值,否则,待显示字幕的实际显示时间等于所述时间差值除以视频同步的时间尺度后加上当前系统时间一。

本发明的有益效果是:

1)通过段解析模块发送字幕准备完毕消息告知时间同步控制模块,使得时间同步控制模块在第一时间得知待显示的字幕信息已经准备好,解决了字幕信息传递延时过长的问题;通过时间间同步控制模块在字幕送显信息发送的同时发送等待消息告知段解析模块,使得段解析模块能协调字幕的显示信息暂停对字幕的解析,解决了段解析模块解析过快造成字幕同步显示异常的问题。

2)采用动态分配等待时长的方法,可以更好的应对多个市场字幕码流的差异性,在码流环境复杂下仍能够保证字幕的同步显示效果。

3)仅依耐终端解码器提供的本地同步时间实现了字幕与音频或视频的同步控制,其中,终端可以是数字机顶盒、个人视频录相机和电视机等具有dvb字幕处理功能的设备,解码器可以是音频解码器或视频解码器,字幕段的解析与时间同步控制方法均用独立于芯片平台的软件实现,可快速在基于不同芯片平台的终端中集成应用。

附图说明

图1为本发明实施例的完整的dvb字幕处理系统的逻辑框图。

图2为本发明实施例的所述动态分配等待时长方法流程图。

图3为本发明实施例的所述动态分配等待时长的另一种方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步详细说明。

本发明旨在克服因不同芯片平台解析字幕pes包延时不一致造成字幕不能同步音视频显示的问题,提出一种dvb字幕同步方法及系统。

本发明提出了一种dvb字幕同步方法,包括段解析处理方法及时间同步处理方法;

所述段解析处理方法包括以下步骤:

对有效的字幕pes包进行段解析,所述段解析包括pcs段解析,所述pcs段解析获取pcs段中的页状态并确定工作状态,若工作状态为获取数据状态则继续对字幕pes包进行段解析获得待显示的字幕信息,所述字幕信息包括显示时间戳、显示时长和根据显示时间戳及终端解码器的本地同步时间进行系统时间换算得出的实际显示时间,若当前工作状态为控制操作状态则发送字幕准备完毕消息,所述pcs段解析轮询监听等待消息,所述等待消息包括等待时长,若监听到等待消息则pcs段解析暂停,暂停的时间为所述等待时长;

所述时间同步处理方法包括以下步骤:

根据接收到的所述字幕准备完毕消息、所述实际显示时间及所述显示时长采用动态分配等待时长的方法控制字幕送显指令或字幕消隐指令或所述等待消息的发送。

本发明提出了一种dvb字幕处理系统,包括字幕段解析模块和时间同步控制模块;

所述字幕段解析模块对有效的字幕pes包进行段解析,该字幕段解析模块包括pcs段解析模块,所述pcs段解析模块获取pcs段中的页状态并确定当前工作状态,若当前工作状态为获取数据状态则继续对字幕pes包进行段解析获得待显示的字幕信息,所述字幕信息包括显示时间戳、显示时长和根据显示时间戳及终端解码器的本地同步时间进行系统时间换算得出的实际显示时间,若当前工作状态为控制操作状态则发送字幕准备完毕消息,所述pcs段解析轮询监听等待消息,所述等待消息包括等待时长,若监听到等待消息则pcs段解析暂停,暂停的时间为所述等待时长;

所述时间同步控制模块根据接收到的所述字幕准备完毕消息、实际显示时间及显示时长采用动态分配等待时长的方法控制字幕送显指令或字幕消隐指令或所述等待消息的发送。

实施例

如图1所示为完整的dvb字幕处理系统的逻辑框图,其中,pes提取模块用于根据用户设置的字幕语言提取有效的字幕pes包,所述pes提取模块包括ts(传输流)解复用模块和数据预处理模块,所述ts解复用模块用于根据用户设置的字幕语言确定字幕pes包的过滤条件启动pmt表(节目映射表)的滤波获得相应语言字幕pes的pid(包标识符),根据该pid从ts中获取相应字幕pes数据包将pse包放入数据缓存区,具体的来说,ts解复用模块从ts包头的有效净荷单元开始标志(payload_unit_start_indicator)后开始收取对应pid的字幕pes包,下一个有效净荷单元开始标志到来前,在后续的ts包头中连续计数器连续的情况下,将该字幕pes包数据写入数据缓存区,下一个有效净荷标志到来后表明该字幕pes包收完。若ts包头中的连续计数器不连续,且下一个有效净荷标志未到则停止该pes包的数据收取,并将之前收取的数据记录为无效数据。

所述数据预处理模块用来获取有效的字幕pes包,该模块是通过字幕pes包头的16个字节中获取相关信息进行判定,具体的来说,包括如下步骤:

a、当对应pid的字幕pes包收完后,将本次收取字幕pes包的长度值l0及相应的pes包数据存入循环缓存的有效长度信息区并标记此字幕pes包数据收取完整;

b、读取该字幕pes包的前四个字节即字幕包头,判断此四个字节是否为0x00、0x00、0x01和0xbd,如果是则进入步骤c,否则标记该字幕pes包无效,不可作为字幕解析用;

c、读取该字幕pes包头的第5个和第6个字节计算pes数据长度l1,判断l1是否小于6,如果是则丢弃该字幕pes包,否则进入步骤d;

d、判断l1加上6是否小于等于l0,如果是则视为有效字幕pes包,否则标记该字幕pes包无效。

如此经过上述处理可到有效的字幕pes包,可供下面的字幕段解析模块进行解析。

字幕pes包中一般包含多个字幕段,字幕段的段类型可为pts段(显示时间段)、pcs段(页复合段)、rcs段(区域复合段)、clut段(颜色查找表)、object段(实体数据段)、eds段(显示集结束段)和dds段(显示定义段);其中,pts段定义了字幕的显示时间戳;pcs段通过页标志定义了该页的显示时长、页状态(pagestate)、该页中的区域数、各区域号、各区域的水平及垂直位置;rcs段定义了对应区域的宽高、水平垂直位置、所使用的clut表的标签值、对象的标签值、区域背景色以及像素深度等信息;clut段定义了字幕背景颜色像素深度以便把传输的虚颜色转换成实际色板中的颜色;object段定义了对象的编码方法和编码数据,编码方法包括像素编码和字符编码,每一个对象可看作是一个可显示的图像单元;eds段表示显示集传输结束,dds段定义了字幕显示的特定分辨率。

字幕段解析模块对上述字幕段有相应的段解析模块,即字幕段解析模块包括如下段解析模块:pts段解析模块、pcs段解析模块、rcs段解析模块、clut段解析模块、object段解析模块、eds段解析模块和dds段解析模块,由于一个字幕pes包可能包含多个字幕段,因此必须循环分析到最后一个字幕段,具体的,字幕段解析的步骤如下:

a、字幕段解析模块从上述数据缓存区中提取有效的字幕pes包,并取得该字幕pes包中的承载字幕数据的有效负载,所述有效负载数据从字幕pes包的第17个字节开始至结束;

b、判断有效负载的第一个字节即字幕同步标志是否为0x0f,若是则进入步骤c,否则退出解析;

c、判断有效负载的第二个字节即类型标志的值,如为0x0f则进入pts段解析模块,如为0x10则进入pcs段解析模块,如为0x11则进入rcs段解析模块,如为0x12则进入clut段解析模块,如为0x13则进入object段解析模块,如为0x80则进入eds段解析模块,如为0x14则为dds段解析模块,如非上述任何段类型标志,则退出本次解析,等待下一个有效的pes包的字幕段解析。

d、当上述任何一个段解析模块处理完毕,则新的有效负载数据为上述有效负载数据减去相应的段数据,同时进入步骤b进行下一个段的解析。

进一步地,因字幕的时间同步控制主要与pcs段解析模块相关,下面重点讲解pcs段处理的相关流程,pcs段解析模块根据当前的工作状态来确定相应的操作,pcs段的页状态取值分别为0、1和2,pcs段解析模块分为获取数据状态和控制操作状态这两个工作状态,若页状态的值为1或2,则当前工作状态为获取数据状态,若所述页状态的值为0,则当前工作状态为控制操作状态。

所述pcs段解析模块首先获得当前的页状态和显示时长,根据页状态得出当前工作状态,根据系统时间换算的方法计算出实际显示时间,判定当前工作状态,若当前工作状态为获取数据状态则继续对字幕pes包进行上述段解析获得待显示的字幕信息,所述字幕信息包括显示时间戳、显示时长和根据显示时间戳及终端解码器的本地同步时间进行系统时间换算得出的实际显示时间,若当前工作状态为控制操作状态则发送字幕准备完毕消息,所述pcs段解析模块轮询监听等待消息,所述等待消息包括等待时长,若监听到等待消息则pcs段解析暂停,暂停的时间为所述等待时长。

上述系统时间换算的方法为:所述显示时间戳减去终端解码器提供的本地同步时间得到时间差值,若此时间差值小于零,则待显示字幕的实际显示时间等于当前系统时间一加上时间差预设值,否则,待显示字幕的实际显示时间等于所述时间差值除以视频同步的时间尺度后加上当前系统时间一。其中,标清视频编码标准中视频同步的时间尺码为90khz,即每秒钟有90k个时钟;为了保证显示的及时性,时间差预设值推荐为2秒,而当前系统时间一指的是字幕段解析模块获得的当前系统时间,其中,终端可以是数字机顶盒、个人视频录相机和电视机等具有dvb字幕处理功能的设备,解码器可以是音频解码器或视频解码器。

时间同步控制模块会阻塞等待字幕段解析模块的唤醒,直到字幕段解析模块准备好待显示的字幕信息才开始线程其他操作。通常情况下有效的字幕pes包会先于显示时间几秒到达字幕段解析模块,字幕信息中的实际显示时间减去当前系统时间二即时间同步控制模块获得的当前系统时间为待显示字幕的等待时长,该等待时长的取值范围一般在大于0小于10秒范围内,但是在某些特殊的应用市场会发生所述等待时长远远大于10秒的情况,某些异常情景也会造成等待很大,如果直接用该等待时长发起显示前的等待会导致显示数据不同步的问题,另外该等待时长还会影响到字幕段解析的进行,如果长时间等待会导致漏字幕数据。当该时间很大时就需要用其他方法确定等待时间,各个市场码流是不同的,但是码流内的字幕的显示时长大多数情况下是一个定值,基于各个市场的字幕码流分析,每条字幕的显示时长通常在5至15秒,如此可根据每个市场码流中字幕显示时长来动态分配等待时长,利用该动态分配等待时长的方法可以屏蔽各个市场码流的差异性,增加本时间同步系统的通用性,使其在恶劣的码流环境下也可以很好的实现字幕同步。

优选的,如图3所示为动态分配等待时长方法的一种实现,包括如下步骤:

s1、发送字幕消隐指令,阻塞等待直至实时监听到字幕准备完毕消息;

s2、获取待显示字幕的字幕信息,计算等待时长,等待时长等于所述实际显示时间减去当前系统时间二;

s3、如果等待时长小于等于零则进入步骤s7,否则进入步骤s4;

s4、如果显示时长大于时长预设值,则设置最大等待时长为预定倍数的显示时长,否则设置最大等待时长为预定倍数的时长预设值;

s5、判断等待时长是否大于最大等待时长,如果是则进入步骤s1,否则进入步骤s6;

s6、发送等待消息给字幕段解析模块;

s7、发送字幕送显指令,等待对应的等待时长后进入s1。

具体的,如图3所述为动态分配等待时长方法的另一种实现,包括如下步骤:

s1、设置等待时长的初始值为无限大;

s2、判断等待时长是否为无限大,如果是则阻塞等待直至实时监听到字幕准备完毕消息后进入步骤s5,否则进入步骤s3;

s3、等待对应的等待时长后,判断是否接收到字幕准备完毕消息,如果是则进入步骤s5,否则进入步骤s4;

s4、发送字幕消隐指令,同步设置等待时长为无限大,进入步骤s2;

s5、获取待显示字幕的字幕信息;

s6、计算等待时长,等待时长等于所述实际显示时间减去当前系统时间二;

s7、如果等待时长小于等于零则进入步骤s11,否则进入步骤s8;

s8、如果显示时长大于时长预设值,则设置最大等待时长为预定倍数的显示时长,否则设置最大等待时长为预定倍数的时长预设值;

s9、判断等待时长是否大于最大等待时长,如果是则进入步骤s4,否则进入步骤s10;

s10、发送等待消息,进入步骤s11;

s11、发送字幕送显指令,同步设置等待时长为显示时长,进入步骤s2。

上述的时长预设值可根据每条字幕的通常显示时长来确定,可取为5~15秒,优选为5秒,上述预定倍数优选为5倍。

字幕的显示可采用显示控制模块来实现,所述字幕信息还包括显示背景色、显示坐标、显示宽高和显示内容,所述显示控制模块包括显示换算模块和显示效果模块,所述显示换算模块用于根据所述字幕送显指令对显示坐标和显示宽高进行显示换算得到实际的显示坐标和显示宽高,所述显示效果模块用于将显示内容以相应的显示背景色及所述显示坐标和显示宽高进行显示或者消隐。

令字幕pes包中解析出来的显示坐标的x坐标值、显示坐标的y坐标值和显示宽高分别为pes_x、pes_y、pes_width和pes_height;实际显示坐标的x坐标值、实际显示坐标的y坐标值和实际显示宽高分别为dis_x、dis_y、dis_width和dis_height;系统根据制式配置的分辨率为default_width*default_heigh,用户设置的字幕显示分辨率为u_width*u_heigh,dds数据段中规定的分辨率为dds_width*dds_height;

对于不含dds段的标清字幕,实际显示坐标与实际显示宽高计算为如下,其中,符号“*”表示乘法操作,“/”表示除法操作;

dis_x=pes_x*u_width/default_width;

dis_y=pes_y*u_height/default_height;

dis_width=pes_width*u_width/default_width;

dis_height=pes_height*u_height/default_height;

对于含有dds段的字幕,则实际显示坐标与实际显示宽高计算方法如下,

dis_x=pes_x*u_width/dds_width;

dis_y=pes_y*u_height/dds_height;

dis_width=pes_width*u_width/dds_width;

dis_height=pes_height*u_height/dds_height。

如此,通过上述显示换算模块可以计算得出字幕的实际显示坐标与实际显示宽高,显示控制模块获得字幕消隐信息后,对相应的实际显示坐标与实际显示宽高处启动清屏的操作使得字幕消隐,当显示控制模块获得字幕送显信息后,在相应的实际显示起始坐标与实际显示宽高以相应的显示背景色对显示内容进行显示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1