著录项信息
专利名称 | 一种基于多样性应用的电视字幕播出设备性能保障的方法 |
申请号 | CN200810056031.3 | 申请日期 | 2008-01-11 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2009-07-15 | 公开/公告号 | CN101483723 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04N5/278 | IPC分类号 | H;0;4;N;5;/;2;7;8查看分类表>
|
申请人 | 新奥特(北京)视频技术有限公司 | 申请人地址 | 北京市海淀区西草场1号硅谷电脑城15层1501-1506室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 新奥特(北京)视频技术有限公司 | 当前权利人 | 新奥特(北京)视频技术有限公司 |
发明人 | 吴正斌 |
代理机构 | 北京天悦专利代理事务所(普通合伙) | 代理人 | 田明;王瑛 |
摘要
本发明涉及广电领域电视节目制播机构的字幕播出技术,具体涉及一种基于多样性应用的电视字幕播出设备性能保障的方法。该方法根据字幕播出系统的数据结构,使用随机数发生器,模拟实际应用环境,自动构造图文字幕对象,然后使用字幕渲染引擎,对字幕进行多线程自动静态渲染和动态特效渲染,同时记录对系统资源的使用情况,以监测字幕渲染逻辑设计上的缺陷,保障字幕播出系统的安全性、实时性和稳定性。
1.一种基于多样性应用的电视字幕播出设备性能保障的方法,其特征在于:该方法根据字幕播出系统的数据结构,使用随机数发生器,模拟实际应用环境,自动构造图文字幕对象;然后使用字幕渲染引擎,对字幕进行多线程自动静态渲染和动态特效渲染;同时,记录对系统资源的使用情况,以监测字幕渲染逻辑设计上的缺陷;
对字幕进行静态渲染和动态特效渲染的步骤如下:
(1)枚举出系统中所有的TrueType字库,针对每种TrueType字库,枚举出这个字库中所有有效的字符;
(2)枚举出系统中的所有可以处理的图元类;
(3)根据当前字幕类型,开始一次渲染;
(4)循环进行下一次渲染;
步骤(3)中,如果当前字幕类型是字元,则按如下步骤进行处理:
A.遍历每个TrueType字库;
B.针对每一个TrueType字库,遍历该字库中的每个有效字符;
C.针对每个字符,根据预设的最小字号、最大字号、字号步长,循环处理每个字号;
D.针对每个字号,根据预设的最小宽度、最大宽度、宽度步长,循环处理每个宽度;
E.针对每个宽度,按照字幕渲染引擎中的随机数发生器,产生出来随机的静态渲染参数和动态渲染参数;
F.创建出来一个字幕对象,将上述的静态、动态渲染参数赋给这个字幕对象;
G.将这个字幕对象按照字幕工程文件的组织形式生成一个字幕工程文件;
H.将这个字幕对象交给字幕播出系统的字幕渲染引擎进行静态渲染和动态播出;
I.在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况;
J.错误处理;
步骤(3)中,如果当前字幕类型是图元,则按如下步骤进行处理:
a.遍历每种类型的图元;
b.针对每种图元,根据预设的最小高度、最大高度、高度步长,循环处理每个高度;
c.针对每个高度,根据预设的最小宽度、最大宽度、宽度步长,循环处理每个宽度;
d.针对每个宽度,按照字幕渲染引擎中的随机数发生器,产生出来随机的静态渲染参数和动态渲染参数;
e.创建出来一个字幕对象,将上述的静态、动态渲染参数赋给这个字幕对象;
f.将字幕对象按照字幕工程文件的组织形式生成一个字幕工程文件;
g.将字幕对象交给字幕播出系统的字幕渲染引擎进行静态渲染和动态播出;
h.在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况;
i.错误处理。
2.如权利要求1所述的基于多样性应用的电视字幕播出设备性能保障的方法,其特征在于:所述的字幕播出系统的数据结构中,一个完整的字幕单是若干个字幕播出任务组成的一个链表,一个字幕播出任务是若干个字幕场景组成的一个链表,一个字幕场景是若干个字幕对象组成的一个链表。
3.如权利要求1所述的基于多样性应用的电视字幕播出设备性能保障的方法,其特征在于:该方法采用以电视字幕单为驱动的播出模式,包括如下步骤:
(1)随机产生一个节目单,每个字幕条目的播出时间遵守前后的规则随机产生;
(2)为每个播出条目中随机生成一个字幕播出序列;
(3)为每个字幕播出序列,根据随机数模型产生一个字幕对象或者一个对象组;
(4)将所述一个字幕对象或者一个对象组按照字幕工程文件的组织形式生成一个字幕工程文件;
(5)将所述字幕工程文件交给字幕播出系统的字幕渲染引擎进行静态渲染和动态播出;
(6)在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况;
(7)进行错误处理;
(8)返回到步骤(1),循环处理下一个节目单。
4.如权利要求1所述的基于多样性应用的电视字幕播出设备性能保障的方法,其特征在于:该方法建立一个常用的汉字、词语、句子的数据库,在进行渲染时,遍历该数据库中的所有文字信息,以替代对TrueType字库中的所有有效字符的遍历。
5.如权利要求4所述的基于多样性应用的电视字幕播出设备性能保障的方法,其特征在于:该方法针对绝大多数参数的取值范围,确定一个经验值范围,使随机数发生器产生的值90%以上落在这个经验值范围之内。
6.如权利要求1所述的基于多样性应用的电视字幕播出设备性能保障的方法,其特征在于:该方法使用一个渲染工作站集群,通过预先设置,在每台工作站上部署不同的渲染参数,分别对不同类型的字幕内容进行渲染,然后通过部署一台工作站,集中监视每个工作站的渲染状态;另外,一台工作站上启动多个渲染线程,分别对不同类型的字幕内容进行渲染。
7.如权利要求1所述的基于多样性应用的电视字幕播出设备性能保障的方法,其特征在于:该方法在渲染参数生成后,交给字幕渲染引擎之前,首先使用文本日志或者二进制文件的方式,将这些渲染参数记录下来,下次重新启动时,根据这些文件进行参数的恢复,并根据恢复后的字幕参数进行后续的渲染任务。
一种基于多样性应用的电视字幕播出设备性能保障的方法 \n技术领域\n[0001] 本发明涉及广电领域电视节目制播机构的字幕播出技术,具体涉及一种基于多样性应用的电视字幕播出设备性能保障的方法。 \n背景技术\n[0002] 电视字幕作为一种必备的电视节目要素,是一种重要的电视图文的展现形式。随着电视频道、节目内容的细分,各个部门的分工也更加专业化,对于不同类型节目的制作,以单一类型的字幕系统已很难满足要求。另外,电视节目的日益多样性和电视观众欣赏、鉴赏水平的不断提高,也要求电视字幕的应用模式必然朝着多样性的方向发展。 [0003] 从节目特性角度来说,一个完整的字幕系统应该能够很好的支持以下类型节目的制作和播出:新闻类、财经类、体育类、综艺晚会类、气象类、专题类、电视剧类、频道后期包装类。 \n[0004] 从电视字幕的具体类别角度出发,一个字幕系统应该支持各种不同的字幕形式: [0005] -节目片头类:指标注节目/栏目名称或本期内容的字幕; \n[0006] -节目片尾、节目结束标志类:指标注演职员、单位名单的字幕或规定的结束画面标志; \n[0007] -人物介绍、演职员类:指介绍主持人、现场报道记者、被采访人等人物标识字幕; [0008] -内容提要类:指无主体画面、或主体画面经过特技处理所附的标题内容; [0009] -问题及答案类:指节目中标注问题、答案内容的图标字幕; \n[0010] -图文图表类:指内容数据以数字、表格、线条、关系图显示的字幕画面; [0011] -特技类:指以特技效果处理的字幕或标识; \n[0012] -栏目标识:指叠加在节目画面中的固定栏目标识、或本期节目标识; [0013] -标题字幕:指新闻标题字幕、话题提示或者是有主体背景画面的字幕; [0014] -事件说明类:指说明事件发生时间、地点、物件名称、注释等内容的字幕; [0015] -唱词、同期声对白、画外音、解说词:指与画面的声音对应的文字标注; [0016] -节目曲名、创作者、表演者:指标注节目名称、创作者、表演者信息的字幕; [0017] -素材来源说明:如“资料”,指对早期摄制画面的标注; \n[0018] -节目预告:指提示播出内容和时间的字幕; \n[0019] -栏目信息:指提供栏目联系方法、电话、电邮、地址等相关信息; [0020] -滚动信息:指滚动新闻、天气预报、股票等时效信息; \n[0021] -节目播出属性提示:反映直播、录播形式; \n[0022] -频道标识。 \n[0023] 从实现的技术角度出发,上述所有这些应用上的需求使得字幕系统的数据结构变得越来越复杂。 \n[0024] 在信息时代,面对呈爆炸性递增的信息,电视媒体必须在最短的时间内将海量的图文信息发布出去,并力求更丰富、更精彩的内容包装形式,以吸引更多受众眼球。这就对图文信息发布的基本技术实现工具--字幕机提出了更高的要求。从最初的解释视频画面逐渐发展为展现电视画面、形成具有冲击力视觉效果的重要形式。在技术上要求字幕制播系统结合最新的计算机图形图像技术,产生大量的静态渲染效果和动态播出特效,并运用基于三维图形加速引擎的三维实时字幕技术,从传统的在视频上生成字幕的单一功能,向“寓包装于内容”的视频信息综合发布平台转变。从实现的技术角度出发,字幕系统的数据处理的算法变得越来越复杂,使用了大量基于CPU和GPU的二维、三维图形图像处理的核心算法。 \n[0025] 在目前广播电视机构的电视台网建设中,都非常关注电视媒体产业化的进程,并使用相应的技术手段突出电视节目的产品化和市场化的属性。电视节目播出后的交换和再利用,将在市场流通环节和生产环节具有潜在的效益。然而,电视字幕是电视节目的重要组成部分,在制作环节完成字幕和图像的合成,图像和字幕无法再行分离,使节目在交换和再利用时价值锐减。 \n[0026] 传统的字幕制作是在节目制作区域完成的,节目制作部门将字幕直接制作并叠加在图像画面上,记录在节目承载介质(磁带或硬盘)上。电视字幕 的制播分离是指在节目制作域把字幕内容和字幕的展现形式单独制作并转换成字幕工程文件。字幕工程文件不仅包含字幕的内容和展现形式,并且能够与节目画面的时间码一一对应,在节目播出时再将字幕工程文件转换成字幕效果叠加在节目画面上同步播出。在播出后保存的节目是尽可能少字幕、易于今后节目交换和再利用的版本。 \n[0027] 事实上,对于电视台而言,无论技术如何发展,节目形式如何变化,播出线上的设备的安全性和稳定性都是第一位重要的,无论是传统的录像机、基于盘带结合播出模式的硬盘录像机、专业的视音频服务器,还是专门用来进行图文展现的字幕播出服务器。任何一次硬件或软件上的技术问题,都会导致严重的播出事故。在所有电视台的技术要求中,都会要求这些设备7×24小时无故障工作。除了在硬件平台上采用专业的PC服务器平台以及采用双机热备的冗余模式之外,在播出系统软件上,要求数据的处理逻辑是BugFree的,对CPU、GPU、内存的调度是合理的、可控的。 \n[0028] 当前主要靠手工测试的方法来保障电视字幕播出设备的安全性、实时性和稳定性。具体做法就是依据用户的使用环境,设计大量的测试用例,进行手工测试。这种做法的弊端是: \n[0029] 测试的工作量很大; \n[0030] 测试的结果在很大程度上取决于测试人员的经验; \n[0031] 即便设计在多的测试用例,从理论上来说,也无法覆盖核心渲染算法的所有分支; \n[0032] 在手工测试的过程中,往往忽略对系统资源占用的分析,特别是CPU的使用和内存泄露,无法真正保障字幕播出的实时性。 \n发明内容\n[0033] 本发明的目的在于针对现有技术存在的缺陷,提供一种字幕播出设备性能的保障方法,该方法支持具体复杂数据结构的字幕播出服务器,在进行多样性二维、三维图文静态渲染和动态特效播出时具有安全性、实时性、稳定性和可靠性,对系统资源(CPU、GPU、物理内存、虚拟内存)的占用在合理的范围之内,从而避免电视字幕播出过程中,产生中断、黑场、抖动、停顿、宕机等一系列故障。 \n[0034] 本发明的技术方案如下:一种基于多样性应用的电视字幕播出设备性能保障的方法,该方法根据字幕播出系统的数据结构,使用随机数发生器,模拟实际应用环境,自动构造图文字幕对象;然后使用字幕渲染引擎,对字幕进行多线程自动静态渲染和动态特效渲染;同时,记录对系统资源的使用情况,以监测字幕渲染逻辑设计上的缺陷。 [0035] 如上所述的基于多样性应用的电视字幕播出设备性能保障的方法,其中,所述的字幕播出系统的数据结构中,一个完整的字幕单是若干个字幕播出任务组成的一个链表,一个字幕播出任务是若干个字幕场景组成的一个链表,一个字幕场景是若干个字幕对象组成的一个链表。 \n[0036] 进一步,在上述基于多样性应用的电视字幕播出设备性能保障的方法中,采用以电视字幕单为驱动的播出模式,包括如下步骤: \n[0037] (1)随机产生一个节目单,每个字幕条目的播出时间遵守前后的规则随机产生; [0038] (2)为每个播出条目中随机生成一个字幕播出序列; \n[0039] (3)为每个字幕播出序列,根据随机数模型产生一个字幕对象或者一个对象组; [0040] (4)将所述一个字幕对象或者一个对象组按照字幕工程文件的组织形式生成一个字幕工程文件; \n[0041] (5)将所述字幕工程文件交给字幕播出系统的字幕渲染引擎进行静态渲染和动态播出; \n[0042] (6)在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况; [0043] (7)进行错误处理; \n[0044] (8)返回到步骤(1),循环处理下一个节目单。 \n[0045] 如上所述的基于多样性应用的电视字幕播出设备性能保障的方法,其中,对字幕进行静态渲染和动态特效渲染的步骤如下: \n[0046] (1)枚举出系统中所有的TrueType字库,针对每种TrueType字库,枚举出这个字库中所有有效的字符; \n[0047] (2)枚举出系统中的所有可以处理的图元类; \n[0048] (3)根据当前字幕类型,开始一次渲染; \n[0049] (4)循环进行下一次渲染。 \n[0050] 进一步,在上述基于多样性应用的电视字幕播出设备性能保障的方法中,在对字幕进行静态渲染和动态特效渲染中,如果当前字幕类型是字元,则按如下步骤进行处理: [0051] (1)遍历每个TrueType字库; \n[0052] (2)针对每一个TrueType字库,遍历该字库中的每个有效字符; \n[0053] (3)针对每个字符,根据预设的最小字号、最大字号、字号步长,循环处理每个字号; \n[0054] (4)针对每个字号,根据预设的最小宽度、最大宽度、宽度步长,循环处理每个宽度; \n[0055] (5)针对每个宽度,按照字幕渲染引擎中的随机数发生器,产生出来随机的静态渲染参数和动态渲染参数; \n[0056] (6)创建出来一个字幕对象,将上述的静态、动态渲染参数赋给这个字幕对象; [0057] (7)将这个字幕对象按照字幕工程文件的组织形式生成一个字幕工程文件; [0058] (8)将这个字幕对象交给字幕播出系统的字幕渲染引擎进行静态渲染和动态播出; \n[0059] (9)在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况; [0060] (10)错误处理。 \n[0061] 如果当前字幕类型是图元,则按如下步骤进行处理: \n[0062] (1)遍历每种类型的图元; \n[0063] (2)针对每种图元,根据预设的最小高度、最大高度、高度步长,循环处理每个高度; \n[0064] (3)针对每个高度,根据预设的最小宽度、最大宽度、宽度步长,循环处理每个宽度; \n[0065] (4)针对每个宽度,按照字幕渲染引擎中的随机数发生器,产生出来随机的静态渲染参数和动态渲染参数; \n[0066] (5)创建出来一个字幕对象,将上述的静态、动态渲染参数赋给这个字幕对象; [0067] (6)将字幕对象按照字幕工程文件的组织形式生成一个字幕工程文件; [0068] (7)将字幕对象交给字幕播出系统的渲染引擎进行静态渲染和动态播出; [0069] (8)在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况; [0070] (9)错误处理。 \n[0071] 如上所述的基于多样性应用的电视字幕播出设备性能保障的方法,其中,该方法建立一个常用的汉字、词语、句子的数据库,在进行渲染时,遍历该数据库中的所有文字信息,以替代对TrueType字库中的所有有效字符的遍历。 \n[0072] 如上所述的基于多样性应用的电视字幕播出设备性能保障的方法,其中,该方法针对绝大多数参数的取值范围,确定一个经验值范围,使随机数发生器产生的值90%以上落在这个经验值范围之内。 \n[0073] 如上所述的基于多样性应用的电视字幕播出设备性能保障的方法,其中,该方法使用一个渲染工作站集群,通过预先设置,在每台工作站上部署不同的渲染参数,分别对不同类型的字幕内容进行渲染,然后通过部署一台工作站,集中监视每个工作站的渲染状态;\n另外,一台工作站上也可以启动多个渲染线程,分别对不同类型的字幕内容进行渲染。 [0074] 如上所述的基于多样性应用的电视字幕播出设备性能保障的方法,其中,该方法在渲染参数生成后,交给渲染引擎之前,首先使用文本日志或者二进制文件的方式,将这些渲染参数记录下来,下次重新启动时,根据这些文件进行参数的恢复,并根据恢复后的字幕参数进行后续的渲染任务。 \n[0075] 本发明的有益效果如下: \n[0076] (1)根据字幕对象的参数模型和每个参数的取值范围,使用随机数发生器,自动生成字幕对象; \n[0077] (2)通过对参数自动生成模型的调整,最大限度的保障了字幕渲染参数更加贴近实际的应用环境,保证了这种方式的有效性; \n[0078] (3)根据设备的情况部署集群渲染工作站,在渲染前,制定每台工作站的渲染任务,用监视和错误处理终端收集每台渲染工作站的渲染状态以及错误信息并进行处理; [0079] (4)本发明还提出了基于断点续测的字幕渲染与播出引擎,提高了字幕渲染的效率,避免做一些无用功; \n[0080] (5)本发明所提供的方法基于复杂数据结构和多样性应用,对字幕播出设备的安全性和稳定性进行有效的确证。 \n附图说明\n[0081] 图1为字幕对象的数据结构示意图。 \n[0082] 图2为一个字幕对象的静态渲染模型示意图。 \n[0083] 图3为一个字幕对象的动态渲染模型示意图。 \n[0084] 图4为字幕对象参数随机数模型示意图。 \n[0085] 图5为电视字幕渲染引擎模型示意图。 \n[0086] 图6为电视字幕单驱动播出模型示意图。 \n[0087] 图7为基于无人值守的分布式、多线程字幕渲染和播出引擎示意图。 具体实施方式\n[0088] 下面结合附图和具体实施例对本发明进行详细的描述。 \n[0089] 本发明的主要核心方案是根据字幕播出系统的数据结构,使用随机数发生器,模拟实际应用环境,自动构造图文字幕对象,然后使用字幕渲染引擎,对字幕进行多线程自动静态渲染和动态特效渲染,同时记录对系统资源的使用情况,以监测字幕渲染逻辑设计上的缺陷,保障字幕播出系统的安全性、实时性和稳定性。 \n[0090] 本发明涉及到的技术内容如下: \n[0091] 电视字幕静态渲染参数随机发生器模型 \n[0092] 电视字幕动态特效渲染参数随机发生器模型 \n[0093] 电视字幕渲染引擎模型 \n[0094] 电视字幕单驱动播出模型 \n[0095] 随机参数模型的实用性调整 \n[0096] 基于无人值守的分布式、多线程字幕渲染和播出 \n[0097] 基于断点续测的渲染与播出引擎 \n[0098] 1.电视字幕参数随机发生器模型 \n[0099] 由于电视字幕应用的多样性和复杂度,一个字幕播出服务器的数据结构是非常复杂的,主体的数据包括静态渲染数据和动态特技参数。 \n[0100] 1.1字幕对象静态渲染参数模型: \n[0101] 从静态渲染参数而言,包括如下的参数: \n[0102] 场景类型:包括普通字幕场景、滚屏字幕场景、插播字幕场景、唱词字幕场景,每个字幕场景包含了多个不同类型的字幕对象; \n[0103] 字幕对象:包括一般的文本字幕、图元字幕、三维物体、唱词字幕、动画字幕、故事板字幕。每种字幕对象包括字幕的几何属性和二维渲染参数、三维渲染参数。 [0104] 字幕对象的几何属性:包括二维空间尺寸、TrueType字库、字元的字号、逻辑宽度、旋转角度、三维空间属性。 \n[0105] 字幕对象的二维渲染参数:字幕对象的面、内边、外边、侧边、浮雕、投影、填充、内发光、外发光、内阴影、外阴影、光泽属性、描边属性。每种渲染的渲染源包括单色、渐变色、图像纹理填充。 \n[0106] 字幕对象的三维渲染参数:三维物体的顶点颜色、平面贴图、凹凸贴图、反射纹理、材质属性、三维光照模型。 \n[0107] 图1为字幕对象的一般数据结构。由此图可以看出:一个完整的字幕单是若干个字幕播出任务组成的一个链表;一个字幕播出任务是若干个字幕场景组成的一个链表;一个字幕场景是若干个字幕对象组成的一个链表。 \n[0108] 图2为一个字幕对象的静态渲染模型,由此可以看出一个典型的字幕系统具有非常复杂的数据结构。 \n[0109] 1.2字幕对象动态渲染参数模型: \n[0110] 从动态渲染参数而言,包括如下的参数: \n[0111] 动态特技的类型:例如水波特技、空间变换特技、波浪特技、火焰特技、路径特技、包装特技。 \n[0112] 不同类型特技的具体参数。 \n[0113] 组合特技。 \n[0114] 图3为一个字幕对象的动态渲染模型。 \n[0115] 1.3字幕对象参数随机数模型 \n[0116] 根据上面的参数模型和每个参数的取值范围,使用随机数发生器,自动生成字幕对象。图4为字幕对象参数随机数模型。 \n[0117] 随机数发生器是一种公知技术,在实际运用中非常之多,如游戏设计、信息仿真、扩频通信、信息加密和系统测试等。在这里使用随机数发生器,主要的目的是:第一,无人值守的自动渲染,第二,所产生的字幕对象可以尽可能的覆盖用户在实际使用字幕播出服务器时的所有情况。 \n[0118] 2.电视字幕渲染引擎模型 \n[0119] 图5为电视字幕渲染引擎模型。对这个引擎的简要描述如下: \n[0120] 第一步,枚举出系统中所有的TrueType字库,针对每种TrueType字库,枚举出这个字库中所有有效的字符。 \n[0121] 第二步,枚举出系统中的所有可以处理的图元类。 \n[0122] 第三步,开始一次渲染。 \n[0123] 在一次渲染过程中,如果当前字幕类型是字元,则: \n[0124] (1)遍历每个TrueType字库; \n[0125] (2)针对每一个TrueType字库,遍历该字库中的每个有效字符; \n[0126] (3)针对每个字符,根据预设的最小字号、最大字号、字号步长,循环处理每个字号; \n[0127] (4)针对每个字号,根据预设的最小宽度、最大宽度、宽度步长,循环处理每个宽度; \n[0128] (5)针对每个宽度,按照字幕对象渲染引擎中的随机数发生器,产生出来随机的静态渲染参数和动态渲染参数; \n[0129] (6)创建出来一个字幕对象,将上述的静态、动态渲染参数赋给这个字幕对象; [0130] (7)将这个字幕对象按照字幕工程文件的组织形式生成一个字幕工程文 件; [0131] (8)将这个字幕对象交给播出系统的渲染引擎进行静态渲染和动态播出; [0132] (9)在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况; [0133] (10)错误处理。 \n[0134] 判断错误类型:宕机、CPU、GPU、内存的使用超过预设的门限值。 [0135] 一般认为宕机是最为严重的问题,如果出现宕机,需要启动字幕制作系统,打开原来保存的字幕工程文件,进行跟踪调试。 \n[0136] 如果CPU、GPU、内存的使用超过预设的门限值,则需要进行进一步的判断,例如对递归函数的处理、对内存使用的申请和释放的记录、对GPU的三角片的剖分等。 [0137] 如果当前字幕类型是图元,那么: \n[0138] (1)遍历每种类型的图元; \n[0139] (2)针对每种图元,根据预设的最小高度、最大高度、高度步长,循环处理每个高度; \n[0140] (3)针对每个高度,根据预设的最小宽度、最大宽度、宽度步长,循环处理每个宽度; \n[0141] (4)针对每个宽度,按照字幕对象渲染引擎中的随机数发生器,产生出来随机的静态渲染参数和动态渲染参数; \n[0142] (5)创建出来一个字幕对象,将上述的静态、动态渲染参数赋给这个字幕对象; [0143] (6)将这个字幕对象按照字幕工程文件的组织形式生成一个字幕工程文件; [0144] (7)将这个字幕对象交给播出系统的渲染引擎进行静态渲染和动态播出; [0145] (8)在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况; [0146] (9)错误处理。同上。 \n[0147] 第四步,循环进行下一次渲染。 \n[0148] 3.电视字幕单驱动播出模型 \n[0149] 字幕播出设备最终的使用模式是根据一个节目串联单,和事先定义好的字幕模版,生成一个字幕的播出列表,然后根据绝对时间逐条进行播出。所以我们还需要定义一种“电视字幕单为驱动的播出模型”,其中的字幕对象可以由上述的随机数模型产生,而播出的时间也可以随机产生,但是要根据一定的前后顺序规则。 \n[0150] 电视字幕单驱动播出模型如图6所示。对此模型的描述如下: \n[0151] (1)随机产生一个节目单,每个字幕条目的播出时间可以随机产生,但是需要遵守前后的规则; \n[0152] (2)为每个播出条目中随机生成一个字幕播出序列; \n[0153] (3)为每个字幕播出序列,根据随机数模型产生一个字幕对象或者一个对象组; [0154] (4)将这些字幕对象按照字幕工程文件的组织形式生成一个字幕工程文件; [0155] (5)将这个字幕对象交给播出系统的渲染引擎进行静态渲染和动态播出; [0156] (6)在渲染过程中,记录下CPU、GPU、物理内存、虚拟内存的使用情况; [0157] (7)进行错误处理; \n[0158] (8)循环处理下一个节目单。 \n[0159] 由于一条字幕播出单中是由多个字幕对象组成的,这些字幕对象之间还存在复杂的时间和空间上的逻辑关系,所涵盖的信息要丰富的多,所以处理错误的方式也要复杂的多。针对这种渲染模型会单独有一套错误处理的机制,介绍如下: \n[0160] 宕机错误处理:一般认为宕机是最为严重的问题,如果出现宕机,需要启动字幕播出系统,打开原来保存的字幕单工程文件,进行跟踪调试。 \n[0161] 字幕单播出实时性处理:在一个字幕单条目播出的信息中,会有实时性信息,记录每秒播出的帧数,通过这个数值来判断是否实时。有四种情况会导致字幕播出不实时:第一,字幕对象的空间关系超出处理能力,如同一个 时刻层数太多,或者相关图元的空间太大,或者渲染的参数过于复杂,对于这种情况,需要对具体算法进行优化,并且提出产品应用的限制和风险;第二,GPU加速能力不够,主要是指图形显示卡的三维加速功能,对于这种情况,需要根据具体场合,更换图形加速器;第三,基于CPU的渲染算法处理能力不够,此时需要优化渲染算法,如采取预渲染处理的方式,将播出内容生成动画;第四,字幕播出通道卡(输入输出卡)出现数据阻塞,从而导致播出效果抖动,此时需要对通道卡的兼容性、输入输出机制进行跟踪调试。 \n[0162] 字幕单播出时间关系处理:每一个字幕播出单都会被赋予一个精确到帧的触发时间属性,对应的播出线程会根据这个时间触发该条字幕的播出。在一个字幕单条目播出的信息中,会精确记录该字幕播出单实际的启动时间,在错误处理时,将二者进行对比,即可发现其中的问题。并且通过由多个播出单组成的序列的播出时间的对比,确认是否存在累计误差的问题。因为在播出服务器实际工作过程中,单条字幕播出的时间是允许存在一定范围误差的(具体范围值取决于不同节目的要求),但是累计误差是绝对不允许的。 [0163] 字幕单播出空间关系的处理:主要确认在同一个时刻(或者同一个时间段内)是否存在不同字幕单的物理空间上的重叠。在字幕播出服务器的实际工作中,一个字幕单是一个基本的播出单元,播出序列是按照字幕单的顺序逐个播出的,即:字幕单1入-->字幕单1出-->字幕单2入-->字幕单2出...但是有时需要进行紧急插播,插播进来的字幕单在物理位置是不能与正在播出的字幕单重叠的,否则最终播出的效果就会出现覆盖的情况。所以在每个字幕单播出信息中,需要记录同一个时间段的字幕单信息、每个字幕单最终播出的空间信息,从而进行错误处理。 \n[0164] 4.随机参数模型的实用性调整 \n[0165] 上面的渲染模型完全是根据随机数发生器产生的,从理论上说,这些渲染模型可以最大限度的遍历静态渲染和动态特效算法的所有逻辑分支,从而最大限度的发现设计上的缺陷,但是在实际应用中,有些参数的值使用到的概率很小,例如电视字幕中常用到的汉字字符只有3000个左右,而一个TrueType中的实际字符有40000多个;再例如,对一个字元来说,加边、加影的半径的取值范围是0到500个像素,而实际上用到最多的值集中在5到 20之内。在这种情况下,如果我们完全根据随机数发生器,则得到的参数完全不受控制,那么这种情况下我们进行的很多次的渲染事实上是没有实际应用意义的。 [0166] 在这种情况下,需要更正随机数模型,使得自动产生的参数更符合实际的应用。主要的改造包括以下三个方面: \n[0167] 第一,建立一个常用的汉字、词语、句子的数据库(字典、词典、句典),可以简单的使用Windows标准TEXT文本文件的方式组织这些数据库。在进行渲染时,不是遍历一个TrueType字库中的所有有效字符,而是遍历某一个文本文件中的所有文字信息。 [0168] 第二,由于计算机的随机数发生器产生的是一个伪随机数序列,需要在每次渲染之前,使用一个变量作为随机数的种子。无论使用哪种编程语言实现,都是使用计算机的随机数发生器返回的一个伪随机数序列,这组序列实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布。但是如果计算伪随机序列的初始数值(称为种子)相同,则计算出来的伪随机序列就是完全相同的,所以为了使每次渲染参数的随机性更加合理,从而更多的覆盖渲染引擎的程序逻辑分支,需要在每次渲染之前,使用一个变量作为随机数的种子。指定随机数种子的方法很多,使用计算机的时钟是最简单有效的。 [0169] 因此,在实际的渲染模型中,我们使用了计算机的时钟TickCount。 [0170] DWORD dwTickCount=GetCurrentSystemTickCount(); \n[0171] srand(dwTickCount); \n[0172] 第三,针对绝大多数参数的取值范围,确定一个经验值范围,使随机数发生器产生的值90%以上落在这个经验值范围之内。具体算法如下: \n[0173] 假设1:一个参数的取值范围为[M,N]。 \n[0174] 假设2:在实际使用时,这个参数的有效值都落在[S1,S2]这个区间内,M<S1<S2<N,S1和S2是两个经验值。 \n[0175] 假设3:改造随机数发生器模型,使得在[M,N]范围内产生的随机数百分比为P落在[S1,S2]这个区间内。P是一个门限值,在实际使用中,一般使用90%。 [0176] 基于以上假设,随机数发生器的模型如下: \n[0177] 第一步,将区间[M,N]规约到[0,(N-M)]区间,然后在[0,(N-M)]区间产生一个随机数K; \n[0178] 第二步,根据K值的范围,确定映射算法公式,重新计算需要的随机参数。 [0179] 如果K在[0,P*(N-M)]区间之内,将K值从区间[0,P*(N-M)]映射到区间[S1,S2]之内,映射算法公式如下: \n[0180] \n[0181] 如果K在[P*(N-M),(1+P)/2*(N-M)]区间之内,将K值从区间[P*(N-M),(1+P)/2*(N-M)]映射到区间[M,S1]之内,映射算法公式如下: \n[0182] \n[0183] 如果K在[(1+P)/2*(N-M),(N-M)]区间之内,将K值从区间[(1+P)/2*(N-M),(N-M)]映射到区间[S2,N]之内,映射算法公式如下: \n[0184] \n[0185] 计算后得到的I就是最后需要的随机数。 \n[0186] 通过上述三个方面对参数自动生成模型的调整,就最大限度的保障了字幕渲染参数更加贴近实际的应用环境,保证了这种方式的有效性。 \n[0187] 5.基于无人值守的分布式、多线程字幕渲染和播出 \n[0188] 即使有了上面对随机数发生器模型的改造,在实际工作中,字幕的渲染是非常耗时的,以字元渲染为例,假设当前Windows操作系统中的实际可用的TrueType字库为100个,对每个字库的其中2000个常用汉字字符进行渲染,每个字符的字号从8到200,宽度从\n10%到300%,那个渲染的次数为: \n[0189] 100×2000×(200-8)×(300-10)=11136000000次 \n[0190] 假设每次渲染的平均时间为50毫秒,那么完成渲染的时间为:5.56×1011毫秒,约等于155000小时,大约需要6400天。 \n[0191] 鉴于实用性方面考虑,本发明提出了分布式、多线程字幕渲染的思路:使用一个渲染工作站集群,通过预先设置的方法,在每台工作站上部署不同 的渲染参数,例如可以将这100个字库分别安装在不同的工作站上,而且在每台工作站上指定不同的数据字典。对于其中的一台工作站,也可以启动多个渲染线程,分别对不同类型的字幕内容进行渲染。然后通过部署一台工作站,集中监视每个工作站的渲染状态。 \n[0192] 图7显示了基于无人值守的分布式、多线程字幕渲染和播出引擎。根据设备的情况部署集群渲染工作站,在渲染前,制定每台工作站的渲染任务。监视和错误处理终端用来收集每台渲染工作站的渲染状态,收集错误信息并进行处理。 \n[0193] 6.基于断点续测的字幕渲染与播出引擎 \n[0194] 正如上一节表述的那种,字幕的渲染是一件耗时的工作。本发明所提到的方法的最终目的是发现字幕播出设备设计上的缺陷,那么,当错误发生后,系统一旦退出后,所要做的工作是根据错误出现现场留下的一些数据对设计逻辑进行分析,并最终修正这个缺陷。那么当缺陷修正完之后,需要重新启动对字幕的渲染,此时如果还是从头进行渲染,必然有些工作是反复而且没有意义的。鉴于此,本发明还提出了基于断点续测的字幕渲染与播出引擎,主要的作用是接着上次渲染退出时的参数进行渲染。这样以来,可以提高字幕渲染的效率,避免做一些无用功。主要的设计思路是:当渲染参数生成后,在交给渲染引擎之前,首先使用文本日志或者二进制文件的方式,将这些渲染参数记录下来,下次重新启动时,根据这些文件进行参数的恢复,并根据恢复后的字幕参数进行后续的渲染任务。 [0195] 本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。
法律信息
- 2018-02-27
未缴年费专利权终止
IPC(主分类): H04N 5/278
专利号: ZL 200810056031.3
申请日: 2008.01.11
授权公告日: 2012.06.06
- 2017-10-31
专利权的转移
登记生效日: 2017.10.12
专利权人由北京市文化科技融资租赁股份有限公司变更为新奥特(北京)视频技术有限公司
地址由100044 北京市顺义区金航中路1号院2号楼401室变更为100143 北京市海淀区西草场1号硅谷电脑城15层1501-1506室
- 2015-04-15
专利权的转移
登记生效日: 2015.03.26
专利权人由新奥特(北京)视频技术有限公司变更为北京市文化科技融资租赁股份有限公司
地址由100080 北京市海淀区西草场1号北京硅谷电脑城15层1501-1506室变更为100044 北京市顺义区金航中路1号院2号楼401室
- 2012-06-06
- 2010-12-15
实质审查的生效
IPC(主分类): H04N 5/278
专利申请号: 200810056031.3
申请日: 2008.01.11
- 2009-07-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| | 暂无 |
2000-12-01
| | |
2
| | 暂无 |
1999-10-14
| | |
3
| |
2007-11-07
|
2005-02-19
| | |
4
| |
2005-06-22
|
2003-12-19
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |