一种移动多媒体广播字幕同步的方法和系统技术领域
本发明涉及移动多媒体广播领域,尤其涉及一种移动多媒体广播字幕同
步的方法和系统。
背景技术
随着中国移动多媒体广播(CMMB)的商用和用户数量的增加,用户群
体和用户需求呈现多元化的倾向。提供多样的灵活的业务是提高用户体检,
增加用户忠诚度的手段之一。
现有CMMB中,为纯音频节目提供字幕的方式一般有以下几种:
将字幕内嵌在纯音频数据中,这种方式字幕形式固定单一;
将字幕信息通过移动多媒体广播数据段发送解决了字幕固定单一的问
题,但是这种方式不能保证播出的字幕和音频同步,同时也无法灵活地插入
字幕,如节目A和B顺序播放,仅为节目B提供字幕;
将字幕发送到终端,由使用终端的用户手动调整字幕的播放时间,以实
现字幕与音频同步,这种方式用户体验性差。
将字幕发送到终端后,再将字幕与音频的同步信息发送至终端,由终端
根据该同步信息调整字幕的播放时间,这种方式需要终端预留较大的存储空
间缓存整个字幕文件,且需要字幕提前很长时间发送导致实时性差。
发明内容
本发明提供了一种移动多媒体字幕同步方法和系统,以解决如何实现字
幕与音频同步的技术问题。
为解决上述技术问题,本发明提供了一种移动多媒体广播字幕同步的方
法,所述方法包括:
接收字幕服务器发送的字幕数据包和音频编码器发送的音频子帧;
从所述音频子帧中获取音频开始播放时间;
从所述字幕数据包中获取字幕;
确定字幕相对于音频开始播放时间的时间偏移;
在封装时间到达时,将所述字幕的字符串、音频开始播放时间、字幕相
对于音频开始播放时间的时间偏移封装到与所述字幕对应的音频子帧的数据
段;
将所述数据段发送至移动多媒体广播终端。
进一步地,确定所述字幕相对于音频开始播放时间的时间偏移包括:
从包含所述字幕数据包的数据流中获取字幕与音频子帧关系的信息;
根据所述字幕与音频子帧关系的信息确定与字幕对应的音频子帧;
根据该字幕在本地时区的开始时间及所述与字幕对应的音频子帧的时间
戳设置字幕与该音频子帧的同步标记;
根据该同步标记确定字幕相对于音频开始播放时间的时间偏移。
进一步地,所述封装时间根据所述字幕在本地时区的开始时间确定,确
定步骤包括:
设字幕在本地时区的开始时间为M,本地GPS提供的当前时间(TOD)
为N,从接收字幕数据包到发送所述数据段的收发时差为R,封装时间为S;
M、N、R和S的单位为秒;
所述M与N的时间差为I=floor(|M-N|),floor(·)表示取整,|·|表示取绝
对值;
J=floor(R);
则,S=I+J。
进一步地,根据所述字幕数据包获取的字幕由多个字幕片组成;
根据所述同步标记确定所述字幕片相对于音频开始播放时间的时间偏
移;
在所述封装时间到达时,将字幕片的字符串、音频的开始播放时间、字
幕片相对于音频开始播放时间的时间偏移封装到与所述字幕对应的音频子帧
的数据段。
进一步地,所述根据该同步标记确定所述字幕片相对于音频开始播放时
间的时间偏移包括以下步骤:
开启一定时器,设置该定时器的定时长度与同步标记等值;
当达到所述定时长度时,计算所述字幕片相对于音频开始播放时间的时
间偏移。
为解决上述技术问题,本发明还提供了一种移动多媒体广播字幕同步的
系统,所述系统包括:
接收模块,用于接收字幕服务器发送的字幕数据包和音频编码器发送的
音频子帧;
获取模块,用于从所述字幕数据包中获取字幕,从所述音频子帧中获取
音频开始播放时间;
时间偏移确定模块,用于确定所述字幕相对于音频开始播放时间的时间
偏移;
封装模块,用于在所述封装时间到达时,将所述字幕的字符串、音频开
始播放时间、字幕相对于音频开始播放时间的时间偏移封装到与所述字幕对
应的音频子帧的数据段;
发送模块,用于将所述数据段发送至移动多媒体广播终端。
进一步地,所述时间偏移确定模块,用于确定所述字幕相对于音频开始
播放时间的时间偏移,包括:
时间偏移确定模块,用于从包含所述字幕数据包的数据流中获取字幕与
音频子帧关系的信息;根据所述字幕与音频子帧关系的信息确定与字幕对应
的音频子帧;根据该字幕在本地时区的开始时间及所述与字幕对应的音频子
帧的时间戳设置字幕与该音频子帧的同步标记;根据该同步标记确定字幕相
对于音频开始播放时间的时间偏移。
进一步地,所述封装模块,用于根据所述字幕在本地时区的开始时间确
定所述封装时间,包括:
设字幕在本地时区的开始时间为M,本地GPS提供的当前时间(TOD)
为N,从接收字幕数据包到发送所述数据段的收发时差为R,封装时间为S;
M、N、R和S的单位为秒;
设所述M与N的时间差为I=floor(|M-N|),floor(·)表示取整,|·|表示取
绝对值;
J=floor(R);
则,S=I+J。
进一步地,所述获取模块,用于从所述字幕数据包中获取由多个字幕片
组成的字幕;
所述时间偏移确定模块,用于根据所述同步标记确定所述字幕片相对于
音频开始播放时间的时间偏移;
所述封装模块,用于在所述封装时间到达时,将字幕片的字符串、音频
的开始播放时间、字幕片相对于音频开始播放时间的时间偏移封装到与所述
字幕对应的音频子帧的数据段。
进一步地,所述时间偏移确定模块,用于根据该同步标记确定所述字幕
片相对于音频开始播放时间的时间偏移包括:
开启一定时器,设置该定时器的定时长度与同步标记等值;
当达到所述定时长度时,计算所述字幕片相对于音频开始播放时间的时
间偏移。
上述技术方案,封装后的音频子帧的数据段中包含了音频开始播放时间
和字幕相对于音频开始播放时间的时间偏移,使得接收到该音频子帧的移动
多媒体广播终端能够根据字幕相对于音频开始播放时间的时间偏移确定字幕
的播放时间,达到与音频同步的技术效果。
附图说明
图1为本实施例的移动多媒体广播字幕同步方法流程图;
图2为本应用示例字幕服务器向复用器传输数据流的封装示意图;
图3为本应用示例封装了字幕信息的音频子帧的数据段的格式示意图;
图4为本实施例的移动多媒体广播字幕同步系统组成模块图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图
对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申
请中的实施例及实施例中的特征可以相互任意组合。
图1为本实施例的移动多媒体广播字幕同步方法流程图。
S101接收字幕服务器发送的字幕数据包和音频编码器发送的音频子帧;
S102从所述音频子帧中获取音频开始播放时间;
S103从所述字幕数据包中获取字幕;
在实际应用中,也允许字幕数据包包含指示字幕数据包采用时间体系的
信息(如UTC时间体系)、指示字幕数据包所处时区的信息以及字幕在其所
处时区的开始时间;当接收到该数据包后,根据指示字幕数据包采用时间体
系的信息、指示字幕数据包所处时区的信息以及接收端本地所处时区将字幕
在其所处时区的开始时间修正为字幕在本地时区的开始时间。如,指示字幕
数据包采用时间体系的信息为UTC,指示字幕数据包所处时区的信息为东5
区,字幕在其所处时区的开始时间为0点整,接收端本地所处时区为东8区,
修正后的字幕在本地时区的开始时间为3点整。
字幕数据包除了包含上述记载的信息外,根据不同的应用需要,所述字
幕数据包还可包含其他信息,如,为了明显地与音频子帧相区分,在所述字
幕数据包中增加表示本数据包为字幕的信息;为了使终端选用正确字符集,
在所述字幕数据包中增加字幕字符串编码方式;为了终端能识别字幕展示持
续时间并在合适的时间结束字幕展示,在所述字幕数据包中增加字幕持续时
间。
S104确定字幕相对于音频开始播放时间的时间偏移;
具体为:
从包含所述字幕数据包的数据流中获取字幕与音频子帧关系的信息;
根据所述字幕与音频子帧关系的信息确定与字幕对应的音频子帧;
根据该字幕在本地时区的开始时间及所述与字幕对应的音频子帧的时间
戳设置字幕与该音频子帧的同步标记;其中,字幕在本地时区的开始时间可
从所述字幕数据包中获取;
根据该同步标记确定字幕相对于音频开始播放时间的时间偏移;
S105在封装时间到达时,将所述字幕的字符串、音频开始播放时间、字
幕相对于音频开始播放时间的时间偏移封装到与所述字幕对应的音频子帧的
数据段;
所述封装时间根据所述字幕在本地时区的开始时间确定,确定步骤包括:
设字幕在本地时区的开始时间为M,本地GPS提供的当前时间TOD
(Time of Day)为N,从接收字幕数据包到发送数据段的收发时差为R,封装
时间为S;M、N、R和S的单位为秒;
设所述M与N的时间差为I=floor(|M-N|),floor(·)表示取整,|·|表示取
绝对值;
J=floor(R);
则,S=I+J。
S106将所述数据段发送至移动多媒体广播终端。
上述从所述字幕数据包中解析出的字幕字符串还可由多个字幕片组成以
方便较长字幕数据传输或者应用于多种语言字幕,此时,可根据同步标记确
定所述字幕片相对于音频开始播放时间的时间偏移;在所述封装时间到达时,
将音频的开始播放时间、字幕片相对于音频开始播放时间的时间偏移、字幕
片的字符串封装到与所述字幕对应的音频子帧的数据段。
移动多媒体广播终端接收到上述音频子帧的数据段后,根据数据段中包
含的音频的开始播放时间、字幕相对于音频开始播放时间的时间偏移,进行
播放字幕的字符串的操作;如果数据段中封装的是字幕片信息,根据数据段
中包含的音频的开始播放时间、字幕片相对于音频开始播放时间的时间偏移
来播放字幕片的字符串。
下面以一个具体的应用示例,对上述实施例的移动多媒体广播字幕同步
方法进行进一步说明。该应用示例涉及字幕服务器、音频编码器以及复用器,
其中字幕服务器和复用器之间传输的数据流采用UDP封装,见图2。
步骤1,字幕服务器向复用器发送UDP封装的数据流,其中每个UDP
的消息体部分用于组成字幕数据包;音频编码器向复用器发送音频子帧;
所述字幕数据包包括指示字幕数据包所处时区的信息、字幕更新序号、
字幕在其所处时区的开始时间、编码方式、字幕片数、字幕片1参数、字幕
片2参数、...、字幕片n参数以及字幕内容,其中,
指示字幕数据包所处时区的信息(4bit);
字幕更新序号(4bit),当字幕更新时该序号加1,复用器可通过比较接
收到的字幕数据包中携带该序号和已接收的字幕数据包中携带的该序号是否
一致,决定是否重新同步字幕在本地时区的开始时间;
字幕在其所处时区的开始时间(32bit);
字幕编码方式(bit);
字幕片数(8bit);
字幕片n参数(80bit),其中又包含3个字段,分别是:字幕片n播放
时间(32bit)、字幕片n结束时间(32bit)和字幕片n长度(16bit);
字幕内容,根据字幕数据包中包含的字幕片数和字幕片n长度可以从字
幕内容中提取相应的字幕片内容。
步骤2,复用器接收到UDP封装的数据流后,从所述UDP中提取消息
体组成上述字幕数据包;复用器接收到音频子帧后,从音频子帧中提取音频
开始播放时间;
步骤3,复用器从UDP封装的数据流中解析出标识字幕与子帧关系的信
息,根据该信息确定与字幕对应的子帧;
步骤4,复用器从所述字幕数据包中获取指示字幕数据包所处时区的信
息以及字幕在其所处时区的开始时间,复用器将所述指示字幕数据包所处时
区的信息与复用器所在的时区(即本地时区)进行比较,如果一致,则字幕
数据包中包含的字幕在其所处时区的开始时间即为字幕在本地时区的开始时
间;如果不一致,则将字幕在其所处时区的开始时间修正为字幕在本地时区
的开始时间;
步骤5,复用器根据该字幕在本地时区的开始时间及所述与字幕对应的
音频子帧的时间戳设置字幕与该音频子帧的同步标记;
步骤6,复用器根据该同步标记确定所述字幕片相对于音频开始播放时
间的时间偏移;
步骤7,复用器从本地GPS获得当前时间TOD为N,复用器根据调试统
计获取其收发数据时差为R,N和R单位为秒;
步骤8,复用器启动一定时器,当定时时间到达S=S=I+J时,将字幕信
息封装到所述与字幕对应的音频子帧的数据段,该数据段的格式如图3所示;
其中,I=floor(|M-N|),J=floor(R),floor(·)表示取整,|·|表示取绝对值,M
表示字幕在本地时区的开始时间,单位为秒;
该数据段由数据段头、数据单元1、数据单元2、...、数据单元n组成;
其中,数据段头又由数据单元数、数据单元1参数、数据单元2参数、...、
数据单元n参数、CRC组成;数据单元n参数包括数据单元类型和数据单元
长度这两个字段;
数据单元n依次由业务ID(16bit)、保留字段(16bit)、编码方式(32bit)、
保留字段、音频开始播放时间(32bit)、字幕片n相对于音频开始播放时间
的时间偏移(16bit)、字幕片n持续播放时间(32bit)、字幕片n长度(16bit)
以及字幕内容组成;
开始封装的第1秒第1片字幕的开始播放时间=音频开始播放时间+
[(|M-N|-I)+(R-J)+字幕片1相对于音频开始播放时间的时间偏移]*22.5;
第1秒第n片字幕的开始播放时间=音频开始播放时间+[(|M-N|-I)+
(R-J)+字幕片n相对于音频开始播放时间的时间偏移*1000]*22.5;
第H秒第n片字幕的开始播放时间=音频开始播放时间+[(|M-N|-I)+
(R-J)+(字幕片n相对于音频开始播放时间的时间偏移-H)*1000]*22.5;
步骤9,复用器将该子帧封装到复帧,并将该复帧转换为PMS流发送给
移动多媒体广播终端。
图4为本实施例的移动多媒体广播字幕同步系统组成模块图。
该系统包括:
接收模块,用于接收字幕服务器发送的字幕数据包和音频编码器发送的
音频子帧;
获取模块,用于根据所述字幕数据包获取字幕,根据所述音频子帧获取
音频开始播放时间;
时间偏移确定模块,用于确定所述字幕相对于音频开始播放时间的时间
偏移;
所述时间偏移确定模块,可用于从包含所述字幕数据包的数据流中获取
字幕与音频子帧关系的信息;根据所述字幕与音频子帧关系的信息确定与字
幕对应的音频子帧;根据该字幕在本地时区的开始时间及所述与字幕对应的
音频子帧的时间戳设置字幕与该音频子帧的同步标记;根据该同步标记确定
字幕相对于音频开始播放时间的时间偏移;
封装模块,用于在所述封装时间到达时,将所述字幕的字符串、音频开
始播放时间、字幕相对于音频开始播放时间的时间偏移封装到所述与字幕对
应的音频子帧的数据段;
设字幕在本地时区的开始时间为M,本地GPS提供的当前时间TOD为
N,从接收字幕数据包到发送数据段的收发时差为R,封装时间为S;M、N、
R和S的单位为秒;
设所述M与N的时间差为I=floor(|M-N|),floor(·)表示取整,|·|表示取
绝对值;
J=floor(R);
则,S=I+J。
发送模块,用于将所述数据段发送至移动多媒体广播终端。
上述实施例中获取模块根据所述字幕数据包获取的字幕字符串可由多个
字幕片组成;
此时,时间偏移确定模块,用于根据该同步标记确定所述字幕片相对于
音频开始播放时间的时间偏移;
时间偏移确定模块可开启一定时器,设置该定时器的定时长度与同步标
记等值;当达到所述定时长度时,计算所述字幕片相对于音频开始播放时间
的时间偏移。
封装模块,用于在所述封装时间到达时,将音频的开始播放时间、字幕
片相对于音频开始播放时间的时间偏移、字幕片的字符串封装到所述与字幕
对应的音频子帧的数据段。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序
来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读
存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用
一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用
硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任
何特定形式的硬件和软件的结合。
需要说明的是,本发明还可有其他多种实施例,在不背离本发明精神及
其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变
和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范
围。