在数字压缩视频码流中叠加字幕的方法 【技术领域】
本发明涉及一种叠加字幕的方法,特别是一种在数字压缩视频码流中叠加字幕的方法。属于音像传播技术领域。
背景技术
随着视频信息在全世界范围里的传播,各种语言的字幕的叠加成为消除语言障碍的一种有效的途径。目前主要字幕与视频的叠加方式有以下几种:(1)在编码之前直接将字幕叠加到视频层,这样虽然简单但字幕破坏了视频画面的完整性,用户不能自由的选择及关闭字幕。(2)字幕以字符内码的方式存储于一个单独的文件中,在视频播放的过程中由播放机读出此字符内码,从相应字库中取得显示点阵信息在叠加到视频层上。虽然通过此种方式用户也能够对字幕有所控制,但对消费类播放机的实现有一定的困难。所以这种方式一般用于个人电脑上地软件播放机。(3)字幕的数据叠加混合在压缩视频码流中,在播出过程中动态叠加在视频层上,用户可以动态选择和开关字幕。DVD-Video(DVD视盘)和EVD就是采取这种字幕方式。
经对专利的文献检索时发现,申请人为:北京阜国数字技术有限公司,中国专利申请名称为:一种用在数字视频上动态叠加字幕的方法,专利申请号为:01134554.3,公开号为:1345159A,该专利申请自述为:一种在数字视频上动态叠加字幕的方法,具体涉及一种用于数字视盘、数字电视、网络视频、视频点播(VOD)等数字视频应用领域中在数字视频上动态叠加字幕的方法。本发明其特征在于叠加字幕的数据由一系列的OGT页组成,OGT页由OGT头、OGT象素数据和OGT命令序列三部分数据组成,OGT页和视频数据流按照一定的规则复用后进行传送和储存。本发明能有效提高各种数字视频应用的字幕叠加能力,使字幕具有更多色彩能力和特技能力,实现简单,语法清晰,易于操作。就目前看来,该专利技术存在以下不足:(1)字幕是按照隔行的方式存储的。随着逐行电视机的日益普及,带有逐行输出功能也成为播放机的一个必备功能。所以采用逐行存储字幕的方式也变得顺理成章了。(2)字幕调色板信息和高亮区调色板信息都在码流中,这样不仅使数据显得非常冗余而且在进行搜索操作时,势必会对字幕显示造成一定的影响。
【发明内容】
本发明的目的在于克服现有技术中的不足,提供一种在数字压缩视频码流中叠加字幕的方法,使其简单有效的实现字幕的叠加。本发明在增强字幕叠加能力且降低系统实现开销的基础上,克服了原有叠加字幕方法的不足,达到了字幕制作的实现简单,高效,移植性强。
本发明是通过以下技术方案实现的,音视频复合码流由系统复合过程完成,在复合过程中,音视频压缩码流、字幕开始时间与字幕数据区的数据进行复合,字幕数据区则包括了字幕终止时间、显示区域、强制显示位、字幕字符文件与字符点阵库合成的字符点阵数据;而导航系统中的命令控制文件则由字幕调色板、字幕混合度控制数据通过盘片生成系统合成。
实现字幕的全部数据由三部分组成:PES包中的字幕显示时间戳、字幕数据区和导航系统中的命令控制文件中的关于字幕的控制命令。既保持了MPEG系统包的格式兼容,实现了同样的功能,又能通过导航系统实现字幕显示的更多特效。
所述的PES包中的字幕显示时间戳是将字幕数据区与视频压缩码流混合时产生的时间戳,代表此字幕数据区中字幕的开始显示时间。在本发明所用到的方法中,可以有多种方法很简单的实现修改字幕开始显示时间。从而为字幕的调整提供了一种快速简洁的方式。
所述的字幕数据区包含有字幕的参数和字幕的数据。字幕的数据本身以逐行的方式来存储,是由字符点阵数据构成。包含了被编码的比特图数据,即字幕中的每个点都由其所对应的颜色索引值来表示。而字幕数据区的大小由字幕区域大小和用到的最大颜色数来决定。
所述的命令控制文件(采用导航系统定义的控制文件)包含有设置字幕属性的命令,主要是在指定的时间将字幕的调色板和与视频层的混合程度设定为指定值。在命令控制文件中还有一组特定的控制字幕高亮的命令,高亮区的实现必须建立在有效显示的字幕上。当字幕的显示的点落在高亮区时,会选择高亮区的调色板和混合程度值,来替代字幕的调色板和混合程度值来显示。
上述提到的对字幕高亮区的控制,是用于实现音视频盘片播放中用户参与互动的操作功能。因此按钮的显示及操作也成为导航系统的必备功能。本导航系统采用字幕高亮方式与视频图像的配合来形成用户参与互动选择的按钮。将所有高亮控制全部集成在此命令控制文件中方便了盘片制作系统的制作,而且使得播放机的播放实现变得较为简单。高亮区控制命令主要包括高亮区域的设定、高亮调色板及与视频层混合度的设置,按钮之间相对切换信息的设置和按钮功能的设置。
字幕信息采用逐行格式存储,更方便于在逐行下的显示。普通DVD和EVD的字幕存储数据是分为上半场部分和下半场部分,这就需要系统同时提供两套解码模块来实现字幕的解压和显示,而现在采用逐行格式存储数据后,只需要一套解码模块就可以轻松实现在任何TV制式下的显示,从而大大减少硬件解码的开销。同时,相对于隔行下的字幕显示,在逐行下显示的字幕可以完全避免闪烁,使显示效果有明显的提高。
字幕调色版信息与字幕数据的分离。普通DVD和EVD都是将调色板信息叠加混合在压缩视频码流中。而EVD更是将调色板信息叠加在每个字幕信息中,不仅大大增加了数据的冗余度,而且在播放过程中,如果进行搜索操作,势必会对字幕显示带来一定的影响。而本发明所用到的方法中,不仅字幕调色板信息简介明了,可以轻易对字幕颜色和字幕混合度进行任意处理,而且这种调整可以在视频播放中的任意时刻,从而能够实现以前字幕叠加方式不能实现的许多特效。
字幕高亮区信息的独立。同样,普通DVD和EVD都是将字幕高亮区的信息叠加混合在压缩视频码流中。而EVD仍然将这些信息叠加在了每个字幕信息中,如2)所提到,会有相同的不足。而本发明所用的方法,信息简单,可以使得制作与高亮区相关的效果简单化,同时还可以做到在任何时候添加,删除,调整字幕高亮区的信息,从而使更多的效果得以实现。另外,高亮区信息的独立更使DVD菜单的制作过程变得异常简单。
本发明具有实质性特点和显著进步,字幕信息采用逐行格式存储,方便实现,并能取得更好的视觉效果。字幕调色版信息与字幕数据的分离,实现更为方便、灵活,同时也减少了数据的冗余量。
【附图说明】
图1为本发明涉及的字幕制作过程图。
图2为本发明定义的字幕信息存储位置图。
图3为本发明实现字幕所需的命令所属的命令控制文件的结构图。
图4为本发明的一个实例效果图。
【具体实施方式】
在描述根据本发明的最佳实施例之前,先给出在描述实施例时会用到的约定、数字表示法和基本类型说明,这些信息是构成最佳实施例的基本知识或数据描述方法的说明,有助于比较好地理解最佳实施例。
约定
比特排序:所有多位比特数的图示表示为最高有效位(msb)在左边,最低有效位(lsb)在右边。最高有效位比特是具有最高比特位号的比特。如下图,比特i表示比特位置为i的比特。
表1 8比特字节地排序举例
msb lsb
字节排序:需要超过8位比特来表示的数据,在视盘中占有一个以上的字节。对于所有这些数据来说,在视盘上的字节排列次序是:最高有效字节(MSB)在最前面,而最低有效字节(LSB)在最后。
多字节数据的图示表示为:左边或更高的字节是最高有效字节,右边或更低的字节是最低有效宇节。
表2 两个字节地数据排序举例
数字表示法
十进制表示法:数字的十进制标记用十进制数字表示,最高有效位在左边,最低有效位在右边。
十六进制表示法:数字的十六进制标记用一个或多个十六进制数字的序列后跟一个“h”表示,最高有效位在左边,最低有效位在右边。
十六进制数字0 1 2 3 4 5 6 7 8 9 A B C D E F
十进制值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
二进制数的标识:所有的二进制数后面都加上一个b,最高有效位在左边,最低有效位在右边。一个二进制数由0、1或*表示,(*可为0或1)。
基本类型
INTn n位的有符号整数(n可以为8,16,32,64)。
UINTn n位的无符号整数(n可以为8,16,32,64)。
Bytes 无确切含义的多个字节,填充内容是从低字节开始,未填充的内容必须全部置为0。
LSN 逻辑扇区号,其实逻辑扇区的逻辑扇区号为0,以后每个逻辑扇区的逻辑扇区号为前一个逻辑扇区的逻辑扇区号加1。
RBP 相对字节位置
RLSN 相对逻辑扇区号
STRING 以ASCII编码的字符串
ZERO 表示对应字节的所以比特均为零
(I)字幕数据格式
字幕数据由开始时间、终止时间、强制显示位、显示区域、点阵数据区、调色板和混合属性组成,它们分别存储在PES包中的字幕显示时间戳、字幕数据区和导航系统中的命令控制文件中的关于字幕的控制命令中。具体存储位置参见图2。
PES包中的字幕显示时间戳
此格式必须与压缩码流视频中的格式相同,例如MPEG1必须符合ISO/IEC 11172,MPEG2必须符合ISO/IEC 13818
字幕数据区
此字幕数据区的存储格式下表3: 相对偏移RBP 数据段名称说明字节数 数据类型 0 FORCE强制显示位1 UINT8 1-3 SUB_SIZE字幕数据区长度3 UINT24 4-7 END_SCR显示终止时间4 UINT32 8-9 START_X字幕水平开始位置2 UINT16 10-11 START_Y字幕垂直开始位置2 UINT16 12-13 LENGTH_X字幕水平宽度2 UINT16 14-15 LENGTH_Y字幕垂直高度2 UINT16 16- PIX_DATA字幕点阵数据
FORCE强制显示位
本标志位表示该字幕是否要强制显示,格式如下(表4):B7 B6 B5 B4 B3 B2 B1 B0强制显示位 保留
强制显示位:0---非强制显示字幕
1---强制显示字幕
SUB_SIZE 字幕数据区长度
表示该字幕数据区的数据长度,类型为整数。
END_SCR 显示终止时间
表示字幕的终止显示时间对MPEG码流以90000个时钟的时间戳为单位,类型为整数。0代表无终止时间及一直显示此字幕。但当下一个字幕的显示开始时间到来时,当前字幕会停止显示,即使其终止时间未到或为0。
START_X 字幕水平开始位置
该字幕相对与视频图像左上角的水平偏移位置,类型为整数
START_Y 字幕垂直开始位置
该字幕相对与视频图像左上角的垂直偏移位置,类型为整数
LENGTH_X 字幕水平宽度
该字幕显示区域的水平宽度,类型为整数
LENGTH_Y 字幕垂直高度
该字幕显示区域的垂直高度,类型为整数
PIX_DATA 字幕点阵数据
此字幕的点阵数据以逐行的方式存储在此区域,既可以是原始的非压缩点阵数据,也可以是以游程编码方式压缩的数据
(II)字幕制作过程
在此方法中,音视频复合码流由系统复合过程完成,在复合过程中,音视频压缩码流、字幕开始时间与字幕数据区的数据进行复合,字幕数据区包括了字幕终止时间、显示区域、强制显示位、字幕字符文件与字符点阵库合成的字符点阵这些数据;导航系统中的命令控制文件由字幕调色板、字幕混合度控制数据通过盘片生成系统合成(如图1所示)。
具体实现方法,包括以下步骤:
1、从已授权字幕信息的电影盘中提取出字幕数据区信息和字幕开始时间信息,分别以文件形式存储。对于字幕时间信息,可以随时进行调整,以改变字幕开始显示时间。
2、将字幕数据区信息按照字幕开始时间叠加至音视频压缩码流中。此步骤中,可以任意修改字幕显示区域。在有多种字幕的情况下,还可以修改字幕顺序。
3、将字幕调色板信息和高亮区信息作为独立信息,用HVD盘制作工具(该工具用于生成HVD盘的导航信息、加密音视频压缩码流和添加字幕显示设置命令)生成单独的文件。此步骤中,可以在播放过程中的任意时间点加入所需要的字幕调色板信息以及高亮区的各种信息,包括高亮区域的设定、高亮调色板及与视频层混合度的设置,高亮区内按钮之间相对切换信息的设置和按钮功能的设置。
(III)通过命令控制文件中的命令实现字幕的实例
命令控制文件
所有的命令都存放于一个独立的命令控制文件中,此命令控制文件的结构如图3所示。
命令控制文件的格式为表5: 相对偏移RBP 数据段名称说明字节数 数据类型 0-7 CTR_VER控制文件版本号8 STRING 8-11 CMD_TABLE_NUM指令集总数4 UNIT32 CMD_TABLE_1指令集1 CMD_TABLE_2指令集2 。。。 CMD_TABLE_n指令集n
指令集格式如下表6: 相对偏移RBP 数据段名称说明字节数 数据类型 0-3 CMD_TIME指令集执行时间4 UNIT32 4-7 TAB_LENGTH指令集数据长度4 UNIT32 8- COMMOND_1指令1 COMMOND_2指令2 。。。 COMMOND_n指令n
每条指令的格式如下表7: 相对偏移RBP 数据段名称说明字节数 数据类型 0 CMD_TYPE指令类型1 UNIT8 CMD_PARA_1指令参数1 CMD_PARA_2指令参数2 。。。 。。。 CMD_PARA_n指令参数n
指令集说明
指令集中的指令按其功能可划分为四类:
1.播放过程控制
控制各个音视频流的播放状态及相互之间的播放连接。
2.播放参数的设置
设置播放机播方过程中使用的参数,比如音频及字幕语言的选择。
3.字幕参数的设置
设置字幕所用的调色板及与视频层的混合程度。使用命令控制的方式来设置字幕的参数,可使得字幕的显示效果更多样化及便于播放机实现。
4.字幕高亮区的控制
用户参与互动的操作功能已成为音视频盘片播放不可缺少的功能之一,因此按钮的显示及操作也成为导航系统的必备功能。本导航系统采用字幕高亮方式与视频图像的配合来形成用户参与互动选择的按钮。将所有高亮控制全部集成在此命令控制文件中方便了盘片制作系统的制作,而且使得播放机的播放实现变得较为简单。高亮区控制命令主要包括高亮区域的设定、高亮调色板及与视频层混合度的设置,按钮之间相对切换信息的设置和按钮功能的设置。
所有的命令按执行时间存储于不同的命令之中,相同执行时间的命令存储于同一个命令之中,按存储的顺序执行。
指令集的具体格式为表8: 指令类型 指令名称说明参数数目 1 CMD_PLAY_END播放流结束标志0 2 CMD_PLAY_POINT下一次播放入口2 3 SET_SUB_ATTR设置字幕显示参数16 4 SET_BUTTON_NUM设置按钮个数1 5 SET_HLI_AREA设置高亮显示区域5 6 SET_BUTTON_ACTION设置按钮对应功能2 7 SET_HLI_BUTTON设置选中按钮1 8 CMD_PLAY_RSM记忆播放开始0 9 SET_STILL_TIME设置静止画面时间1 10 SET_HLI_ATTR设置高亮区显示参数16 11 SET_SEL_ATTR设置高亮选中区显示参数16 12 ENABLE_HLI允许高亮显示0 13 DISABLE_HLI禁止高亮显示0 14 CMD_STOP停止播放0 15 SET_AUDIO选择音频语言1 16 SET_CAPTION选择字幕语言1 255 CMD_END命令结尾0
SET_SUB_ATTR 设置字幕显示参数
此命令用来设置字幕的显示调色板和混合度参数。此命令有16个参数(类型UNIT8)参见下表9:字幕颜色0的Y值字幕颜色0的Cb值字幕颜色0的Cr值字幕颜色0与视频层混合度值字幕颜色1的Y值字幕颜色1的Cb值字幕颜色1的Cr值字幕颜色1与视频层混合度值字幕颜色2的Y值字幕颜色2的Cb值字幕颜色2的Cr值字幕颜色2与视频层混合度值字幕颜色3的Y值字幕颜色3的Cb值字幕颜色3的Cr值字幕颜色3与视频层混合度值
SET_HLI_AREA 设置高亮显示区域
此命令设置高亮显示区域,有五个参数(表10):高亮区对应的按钮号(UNIT8)高亮区水平开始位置(UNIT16)高亮区垂直开始位置(UNIT16)高亮区水平宽度(UNIT16)高亮区垂直高度(UNIT16)
SET_HLI_BUTTON 设置选中按钮
此命令可以设置高亮区选择的按钮号,具有一个参数:
按钮号(UNIT8):欲选中的按钮号。
若按钮号等于255,则是实际选中的按钮号为当前音频语言的设置号;
若按钮号等于254,则是实际选中的按钮号为当前字幕语言的设置号
SET_HLI_ATTR 设置高亮区显示参数
此命令用来设置当前高亮区的按钮的显示调色板和混合度参数。此命令有16个参数(类型UNIT8),参见表11:高亮区颜色0的Y值高亮区颜色0的Cb值高亮区颜色0的Cr值高亮区颜色0与视频层混合度值高亮区颜色1的Y值高亮区颜色1的Cb值高亮区颜色1的Cr值高亮区颜色1与视频层混合度值高亮区颜色2的Y值高亮区颜色2的Cb值高亮区颜色2的Cr值高亮区颜色2与视频层混合度值高亮区颜色3的Y值高亮区颜色3的Cb值高亮区颜色3的Cr值高亮区颜色3与视频层混合度值
SET_SEL_ATTR 设置高亮选中区显示参数
此命令用来设置当前高亮选中区的按钮的显示调色板和混合度参数。此命令有16个参数(类型UNIT8)参见表12:高亮选中区颜色0的Y值高亮选中区颜色0的Cb值高亮选中区颜色0的Cr值高亮选中区颜色0与视频层混合度值高亮选中区颜色1的Y值高亮选中区颜色1的Cb值高亮选中区颜色1的Cr值高亮选中区颜色1与视频层混合度值高亮选中区颜色2的Y值高亮选中区颜色2的Cb值高亮选中区颜色2的Cr值高亮选中区颜色2与视频层混合度值高亮选中区颜色3的Y值高亮选中区颜色3的Cb值高亮选中区颜色3的Cr值高亮选中区颜色3与视频层混合度值
ENABLE_HLI 允许高亮显示
此命令通知导航系统在字幕和高亮数据都齐备的情况下开始高亮区的显示。此命令没有参数
DISABLE_HLI 禁止高亮显示
此命令通知导航系统停止高亮区的显示。此命令没有参数
SET_CAPTION 选择字幕语言
此命令用于选择视频流播放时所选中的字幕语言,主要用于菜单中设置字幕语言。此命令带有一个参数:
字幕流号(UNIT8):通知导航系统将此字幕流号设置为系统分离用的字幕号。
本发明的具体实施例
本发明不仅可以实现各种字幕特效,而且可以简单的方法实现DVD中菜单的制作,下面仅举例制作有两个按钮分别控制字幕选择和记忆播放的菜单。具体制作方法如下:
在HVD盘制作工具中,做以下设置:
0(设置时间信息)
设置字幕调色板:
SET_SUB_ATTR 0 80 80 0 40 80 80 0 80 80 80 0 ff 80 80 0
设置选择区调色板:
SET_SEL_ATTR e0 80 80 7 40 80 80 f 80 80 80 f ff 80 80 f
设置高亮区调色板:
SET_HLI_ATTR e0 10 92 7 40 10 92 f 80 10 92 f ff 10 92 f
设置按钮数目:SET_BUTTON_NUM 2
设置高亮显示区域1:SET_HLI_AREA 1 180 320 80 40
设置按钮1上键对应功能:SET_BUTTON_ACTION 1 UP
设置选中按钮为1:SET_HLI_BUTTON 1
设置按钮1下键对应功能:SET_BUTTON_ACTION 1 DOWN
设置选中按钮为1:SET_HLI_BUTTON 1
设置按钮1左键对应功能:SET_BUTTON_ACTION 1 LEFT
设置选中按钮为2:SET_HLI_BUTTON 2
设置按钮1右键对应功能:SET_BUTTON_ACTION 1 RIGHT
设置选中按钮为2:SET_HLI_BUTTON 2
设置按钮1确认键对应功能:SET_BUTTON_ACTION 1 ENTER
选择字幕语言为Ox40:SET_CAPTION 40
设置高亮显示区域2:SET_HLI_AREA 2 560 320 80 40
设置按钮2上键对应功能:SET_BUTTON_ACTION 2 UP
设置选中按钮为2:SET_HLI_BUTTON 1
设置按钮2下键对应功能:SET_BUTTON_ACTION 2 DOWN
设置选中按钮为2:SET_HLI_BUTTON 1
设置按钮2左键对应功能:SET_BUTTON_ACTION 2 LEFT
设置选中按钮为1:SET_HLI_BUTTON 2
设置按钮2右键对应功能:SET_BUTTON_ACTION 2 RIGHT
设置选中按钮为1:SET_HLI_BUTTON 2
设置按钮2确认键对应功能:SET_BUTTON_ACTION 2 ENTER
记忆播放开始:CMD_PLAY_RSM
设置选中按钮为1:SET_HLI_BUTTON 1
允许高亮显示:ENABLE_HLI
根据上述简单的设置,就可以制作出一个简单实用的菜单来。如图4所示,该菜单中有两个按钮,分别为字幕选择按钮和记忆播放按钮,按下字幕选择按钮可以打开并选择一种字幕,记忆播放按钮按下则可以回到进入菜单前的播放断点。并且两个按钮之间可以来回切换。