CN117676053A - 一种动态字幕渲染方法及系统 - Google Patents
一种动态字幕渲染方法及系统 Download PDFInfo
- Publication number
- CN117676053A CN117676053A CN202410129158.2A CN202410129158A CN117676053A CN 117676053 A CN117676053 A CN 117676053A CN 202410129158 A CN202410129158 A CN 202410129158A CN 117676053 A CN117676053 A CN 117676053A
- Authority
- CN
- China
- Prior art keywords
- data
- rendering
- caption
- dynamic
- renderer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 427
- 238000000034 method Methods 0.000 title claims abstract description 56
- 230000000694 effects Effects 0.000 claims description 23
- 239000003086 colorant Substances 0.000 claims description 6
- 230000006870 function Effects 0.000 description 51
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/222—Studio circuitry; Studio devices; Studio equipment
- H04N5/262—Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
- H04N5/278—Subtitling
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Television Systems (AREA)
Abstract
本发明公开了一种动态字幕渲染方法及系统,属于字幕渲染技术领域。所述方法包括:动态字幕管理器获取通道中的渲染数据,然后向数据交换器发送第四标志和帧号;数据交换器从字幕渲染器获取渲染数据及帧号,判断两个帧号是否相同:若是,则对渲染数据进行转码;若否,则设置字幕渲染器的起始渲染帧,清除渲染数据,直到获取到起始渲染帧的渲染数据,然后对起始渲染帧的渲染数据进行转码;数据交换器将转码后的渲染数据和第三标志发送至通道中;字幕渲染器在其缓存的渲染数据被数据交换器读走后判断是否存在设置的起始渲染帧:若是,则渲染出起始渲染帧的渲染数据;若否,则渲染出下一帧的渲染数据。本发明能够渲染出更加多样的动态字幕。
Description
技术领域
本发明属于字幕渲染技术领域,特别是涉及一种动态字幕渲染方法及系统。
背景技术
当今主流的字幕渲染系统采用操作系统内置的文字渲染技术,字幕渲染效果过于简单,只能支持简单的调整文字的字体、颜色、字号、位置等功能。随着短视频的流行,现在对于字幕的需求更加的多样化,需要有多样的特效样式、文字动画,能够展示不同的图标等功能。传统的字幕渲染方式已经不能支持这些多样、复杂的功能。
发明内容
本发明的目的在于克服现有技术的不足,提供一种动态字幕渲染方法及系统。
本发明的目的是通过以下技术方案来实现的:
本发明的第一方面公开了一种动态字幕渲染系统,包括:
动态字幕管理器,用于生成字幕数据;
字幕渲染器,用于对所述字幕数据进行渲染;
数据交换器,用于实现动态字幕管理器和字幕渲染器之间的数据交换;
其中,动态字幕管理器根据设置的字幕信息生成字幕数据,所述字幕信息包括文字内容、文字的字体、文字的字号、字体颜色、字幕位置、动画、特效和图标数据;
其中,字幕渲染器渲染出某一帧的渲染数据的过程为:字幕渲染器首先根据文字内容、文字的字体、文字的字号、字体颜色和字幕位置,采用操作系统内置的文字渲染函数对当前帧进行渲染;然后根据选择的动画,调用对应的动画渲染函数,使用JavaScript的canvas技术渲染出当前帧的动画样式;再根据选择的特效,调用对应的特技函数,使用JavaScript的canvas技术渲染出当前帧的特效效果;最后调用图标解码函数,使用JavaScript的canvas技术将图标数据渲染到字幕上,则当前帧渲染完毕。
进一步地,所述动态字幕渲染系统的启动过程包括:
动态字幕管理器生成字幕数据,并将字幕数据和第一标志发送给数据交换器;
数据交换器在收到字幕数据和第一标志后向动态字幕管理器发送第二标志;
数据交换器调用启动函数启动字幕渲染器;
数据交换器解析字幕数据,并将解析后的字幕数据和回调函数发送给字幕渲染器;
字幕渲染器渲染出第一帧的渲染数据,并缓存该渲染数据;
数据交换器调用回调函数获取字幕渲染器缓存的渲染数据;字幕渲染器在其缓存的渲染数据被数据交换器读走后渲染出下一帧的渲染数据,并缓存该渲染数据;
数据交换器对获取到的渲染数据进行转码;
数据交换器向通道发送转码后的渲染数据和第三标志,完成动态字幕渲染系统的启动。
进一步地,所述动态字幕渲染系统的渲染过程包括:
动态字幕管理器在其目前无正在处理的渲染数据时获取通道中的渲染数据,并在获取到该渲染数据后向数据交换器发送第四标志和帧号;
数据交换器在收到第四标志和帧号后,调用回调函数获取字幕渲染器当前缓存的渲染数据以及该渲染数据对应的帧号,判断来自动态字幕管理器的帧号和来自字幕渲染器的帧号是否相同:若是,则对获取到的渲染数据进行转码;若否,则调用帧号设置函数设置字幕渲染器的起始渲染帧,然后循环执行数据清除步骤,直到获取到起始渲染帧的渲染数据,然后对起始渲染帧的渲染数据进行转码,其中,数据清除步骤包括:清除获取到的渲染数据,再调用回调函数获取字幕渲染器当前缓存的渲染数据及帧号;数据交换器将转码后的渲染数据和第三标志发送至通道中;
字幕渲染器在其缓存的渲染数据被数据交换器读走后判断是否存在设置的起始渲染帧:若是,则渲染出起始渲染帧的渲染数据,并缓存该渲染数据;若否,则渲染出下一帧的渲染数据,并缓存该渲染数据。
进一步地,所述动态字幕渲染系统结束渲染的过程包括:
字幕渲染器在完成全部字幕数据的渲染后,若其缓存的最后一个渲染数据被数据交换器读走,则字幕渲染器向数据交换器发送第五标志,然后字幕渲染器自动关闭;
数据交换器在收到第五标志后,若已将最后一个转码后的渲染数据和第三标志发送至通道,则数据交换器向动态字幕管理器发送第五标志;
动态字幕管理器在收到第五标志后向数据交换器发送第六标志;
数据交换器在收到第六标志后自动关闭;
动态字幕管理器在处理完最后一个渲染数据后结束渲染流程。
本发明的第二方面公开了一种动态字幕渲染方法,应用于本发明的第一方面所述的字幕渲染系统,所述方法包括动态字幕渲染系统启动步骤、动态字幕渲染步骤和动态字幕渲染系统关闭步骤;
动态字幕渲染步骤包括:
动态字幕管理器在其目前无正在处理的渲染数据时获取通道中的渲染数据,并在获取到该渲染数据后向数据交换器发送第四标志和帧号;
数据交换器在收到第四标志和帧号后,调用回调函数获取字幕渲染器当前缓存的渲染数据以及该渲染数据对应的帧号,判断来自动态字幕管理器的帧号和来自字幕渲染器的帧号是否相同:若是,则对获取到的渲染数据进行转码;若否,则调用帧号设置函数设置字幕渲染器的起始渲染帧,然后循环执行数据清除步骤,直到获取到起始渲染帧的渲染数据,然后对起始渲染帧的渲染数据进行转码,其中,数据清除步骤包括:清除获取到的渲染数据,再调用回调函数获取字幕渲染器当前缓存的渲染数据及帧号;数据交换器将转码后的渲染数据和第三标志发送至通道中;
字幕渲染器在其缓存的渲染数据被数据交换器读走后判断是否存在设置的起始渲染帧:若是,则渲染出起始渲染帧的渲染数据,并缓存该渲染数据;若否,则渲染出下一帧的渲染数据,并缓存该渲染数据。
进一步地,动态字幕渲染系统启动步骤包括:
动态字幕管理器生成字幕数据,并将字幕数据和第一标志发送给数据交换器;
数据交换器在收到字幕数据和第一标志后向动态字幕管理器发送第二标志;
数据交换器调用启动函数启动字幕渲染器;
数据交换器解析字幕数据,并将解析后的字幕数据和回调函数发送给字幕渲染器;
字幕渲染器渲染出第一帧的渲染数据,并缓存该渲染数据;
数据交换器调用回调函数获取字幕渲染器缓存的渲染数据;字幕渲染器在其缓存的渲染数据被数据交换器读走后渲染出下一帧的渲染数据,并缓存该渲染数据;
数据交换器对获取到的渲染数据进行转码;
数据交换器向通道发送转码后的渲染数据和第三标志,完成动态字幕渲染系统的启动。
进一步地,动态字幕渲染系统关闭步骤包括:
字幕渲染器在完成全部字幕数据的渲染后,若其缓存的最后一个渲染数据被数据交换器读走,则字幕渲染器向数据交换器发送第五标志,然后字幕渲染器自动关闭;
数据交换器在收到第五标志后,若已将最后一个转码后的渲染数据和第三标志发送至通道,则数据交换器向动态字幕管理器发送第五标志;
动态字幕管理器在收到第五标志后向数据交换器发送第六标志,数据交换器在收到第六标志后自动关闭;
动态字幕管理器在处理完最后一个渲染数据后结束渲染流程。
进一步地,所述方法还包括:
动态字幕管理器检测其自身是否发生故障,若是,则向数据交换器发送第七标志;
数据交换器在收到第七标志后终止字幕渲染器,然后向动态字幕管理器发送第八标志,然后数据交换器自动关闭;
动态字幕管理器在收到第八标志后结束渲染流程。
进一步地,所述方法还包括:
数据交换器检测其自身是否发生故障,若是,则终止字幕渲染器,然后向动态字幕管理器发送第七标志;
动态字幕管理器在收到第七标志后向数据交换器发送第八标志,然后结束渲染流程;
数据交换器在收到第八标志后自动关闭。
进一步地,所述方法还包括:
字幕渲染器检测其自身是否发生故障,若是,则通过回调函数向数据交换器发送空的帧数据;
数据交换器在收到空的帧数据后终止字幕渲染器,然后向动态字幕管理器发送第七标志;
动态字幕渲染系统在收到第七标志后向数据交换器发送第八标志,然后结束渲染流程;
数据交换器在收到第八标志后自动关闭。
本发明的有益效果是:
(1)本发明除采用操作系统内置的文字渲染技术外,还采用了JavaScript的canvas技术,能够实现文字的动画效果和特技,以及添加图标的功能,从而能够渲染出更加多样、复杂、美观的动态字幕;
(2)动态字幕管理器、数据交换器和字幕渲染器之间进行数据交换时带有帧号,能够实现帧精确的定位;
(3)字幕渲染器还能设置起始渲染帧,通过设置不同的起始渲染帧或者多次设置起始渲染帧,从而可以实现正序渲染以外的其他方式进行渲染,如进行倒序渲染、间断渲染、以及任意帧渲染。
附图说明
图1为本发明中动态字幕渲染方法的一种流程图;
图2为本发明动态字幕渲染系统启动步骤的一种流程图;
图3为本发明中动态字幕渲染系统渲染和关闭步骤的一种流程图;
图4为本发明中动态字幕管理器故障时的一种流程图;
图5为本发明中数据交换器故障时的一种流程图;
图6为本发明中字幕渲染器故障时的一种流程图;
图7为本发明中动态字幕渲染系统的一种组成框图。
具体实施方式
下面将结合实施例,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
参阅图1至图7,本发明提供一种动态字幕渲染方法及系统:
本实施例的第一方面公开了一种动态字幕渲染方法,应用于动态字幕渲染系统,所述动态字幕渲染系统包括动态字幕管理器、数据交换器和字幕渲染器。
如图1所示,一种动态字幕渲染方法,包括动态字幕渲染系统启动步骤、动态字幕渲染步骤和动态字幕渲染系统关闭步骤。
动态字幕渲染系统启动步骤包括S101至S108。
S101.动态字幕管理器生成字幕数据,并将字幕数据和第一标志发送给数据交换器。
具体的,动态字幕管理器将字幕数据和“准备”标志(即第一标志)发送给数据交换器,此时动态字幕管理器处于等待状态。
具体的,动态字幕管理器根据设置的字幕信息生成字幕数据,所述字幕信息包括文字内容、文字的字体、文字的字号、字体颜色、字幕位置、动画、特效和图标数据。
S102.数据交换器在收到字幕数据和第一标志后向动态字幕管理器发送第二标志。
具体的,数据交换器收到数据后发送一个“收到准备”标志(即第二标志),动态字幕管理器收到“收到准备”标志后才会继续进行后续任务,如处理渲染得到的渲染数据。
S103.数据交换器调用启动函数启动字幕渲染器。
具体的,数据交换器在发送第二标志后调用启动函数来启动字幕渲染器。
S104.数据交换器解析字幕数据,并将解析后的字幕数据和回调函数发送给字幕渲染器。
S105.字幕渲染器渲染出第一帧的渲染数据,并缓存该渲染数据。
具体的,在字幕渲染器渲染出某一帧的渲染数据后,该渲染数据缓存在字幕渲染器,直到该渲染数据被数据交换器读取。
具体的,字幕渲染器渲染出某一帧的渲染数据的过程为:字幕渲染器首先根据文字内容、文字的字体、文字的字号、字体颜色和字幕位置,采用操作系统内置的文字渲染函数对当前帧进行渲染,渲染出基本的文字效果;然后根据选择的动画,调用对应的动画渲染函数,使用JavaScript的canvas技术渲染出当前帧的动画样式;再根据选择的特效,调用对应的特技函数,使用JavaScript的canvas技术渲染出当前帧的特效效果;最后调用图标解码函数,使用JavaScript的canvas技术将图标数据渲染到字幕上,则当前帧渲染完毕。
S106.数据交换器调用回调函数获取字幕渲染器缓存的渲染数据;字幕渲染器在其缓存的渲染数据被数据交换器读走后渲染出下一帧的渲染数据,并缓存该渲染数据。
当数据交换器没有读取字幕渲染器缓存的渲染数据时,字幕渲染器处于等待状态。当数据交换器读取字幕渲染器缓存的渲染数据后,字幕渲染器渲染出下一帧的渲染数据,同时缓存该渲染数据。即,在完成全部字幕数据的渲染之前,数据交换器每读取一帧的渲染数据,则字幕渲染器渲染出下一帧的渲染数据。
S107.数据交换器对获取到的渲染数据进行转码。由于字幕渲染器生成的渲染数据的格式RGBA,因此需要将渲染数据转换成动态字幕管理器需要的数据格式。
S108.数据交换器向通道发送转码后的渲染数据和第三标志,完成动态字幕渲染系统的启动。具体的,数据交换器向数据交换器和动态字幕管理器之间的通道动态字幕管理器发送转码后的渲染数据和“数据”标志(即第三标志),此时数据交换器和字幕渲染器都处于等待状态,整个动态字幕渲染系统已经完全启动,等待动态字幕管理器从通道中读取渲染数据进行处理。
如图3所示,动态字幕管理器将字幕数据和“准备”标志(即第一标志)发送给数据交换器,此时动态字幕管理器处于等待状态。数据交换器收到字幕数据后发送一个“收到准备”标志(即第二标志),动态字幕管理器收到“收到准备”标志后才会继续进行后续任务,如处理渲染得到的渲染数据。数据交换器在发送第二标志后调用启动函数来启动字幕渲染器。数据交换器解析字幕数据,并将解析后的字幕数据和回调函数发送给字幕渲染器。在字幕渲染器渲染出某一帧的渲染数据后,该渲染数据缓存在字幕渲染器,直到该渲染数据被数据交换器读取。当数据交换器没有读取字幕渲染器缓存的渲染数据时,字幕渲染器处于等待状态。当数据交换器读取字幕渲染器缓存的渲染数据后,字幕渲染器渲染出下一帧的渲染数据,同时缓存该渲染数据。由于字幕渲染器生成的渲染数据的格式RGBA,因此需要将渲染数据转换成动态字幕管理器需要的数据格式。数据交换器向数据交换器和动态字幕管理器之间的通道动态字幕管理器发送转码后的渲染数据和“数据”标志(即第三标志),此时数据交换器和字幕渲染器都处于等待状态,整个动态字幕渲染系统已经完全启动,等待动态字幕管理器从通道中读取渲染数据进行处理。
动态字幕渲染步骤包括:
动态字幕管理器在其目前无正在处理的渲染数据时获取通道中的渲染数据,并在获取到该渲染数据后向数据交换器发送第四标志和帧号。
数据交换器在收到第四标志和帧号后,调用回调函数获取字幕渲染器当前缓存的渲染数据以及该渲染数据对应的帧号,判断来自动态字幕管理器的帧号和来自字幕渲染器的帧号是否相同:若是,则对获取到的渲染数据进行转码;若否,则调用帧号设置函数设置字幕渲染器的起始渲染帧,然后循环执行数据清除步骤,直到获取到起始渲染帧的渲染数据,然后对起始渲染帧的渲染数据进行转码,其中,数据清除步骤包括:清除获取到的渲染数据,再调用回调函数获取字幕渲染器当前缓存的渲染数据及帧号;数据交换器将转码后的渲染数据和第三标志发送至通道中。字幕渲染器在其缓存的渲染数据被数据交换器读走后判断是否存在设置的起始渲染帧:若是,则渲染出起始渲染帧的渲染数据,并缓存该渲染数据;若否,则渲染出下一帧的渲染数据,并缓存该渲染数据。
例如,数据交换器从动态字幕管理器接收到的帧号为第九帧,而从字幕渲染器获取到的帧号为第五帧(字幕渲染器在数据交换器读取第五帧的渲染数据后渲染出第六帧的渲染数据,然后缓存第六帧的渲染数据),则数据交换器调用帧号设置函数设置字幕渲染器的起始渲染帧为第九帧。数据交换器清除获取到的第五帧的渲染数据,然后从字幕渲染器读取第六帧的渲染数据(字幕渲染器在数据交换器读取第六帧的渲染数据后渲染出第九帧的渲染数据,然后缓存第九帧的渲染数据),接着数据交换器清除第六帧的渲染数据,然后从字幕渲染器读取第九帧的渲染数据(字幕渲染器在数据交换器读取第九帧的渲染数据后渲染出第十帧的渲染数据,然后缓存第十帧的渲染数据),并对第九帧的渲染数据进行转码。
具体的,如图3所示,启动字幕渲染系统后,数据交换器和字幕渲染器都处于等待状态,动态字幕管理器获取通道中缓存的第一帧的渲染数据,然后向数据交换器发送“收到数据”标志(即第四标志)和帧号。数据交换器收到“收到数据”标志和帧号后,调用回调函数从字幕渲染器获取字第二帧的渲染数据(字幕渲染器在第二帧的渲染数据被读取后渲染出第三帧的渲染数据),数据交换器判断来自动态字幕管理器的帧号是否为第二帧:若是则对第二帧的渲染数据进行转码;若否则数据交换器设置起始渲染帧,然后清除第二帧的渲染数据,再从字幕渲染器获取第三帧的渲染数据(字幕渲染器在第三帧的渲染数据被读取后渲染出起始渲染帧的渲染数据),然后清除第三帧的渲染数据,再字幕渲染器获取起始渲染帧的渲染数据,对起始渲染帧的渲染数据进行转码。数据交换器将转码后的渲染数据发送到数据交换器和动态字幕管理器之间的通道中。动态字幕管理器在处理完第一帧的渲染数据后,从通道读取下一帧的渲染数据,当通道中的渲染数据被动态字幕管理器读取后,数据交换器从字幕渲染器获取下一帧的渲染数据,然后重复上述步骤,直到完成最后一帧的渲染。
如图3所示,动态字幕渲染系统关闭步骤包括:字幕渲染器在完成全部字幕数据的渲染后,判断其缓存的最后一个渲染数据是否被数据交换器读走,若是,则字幕渲染器向数据交换器发送“结束”标志(即第五标志),然后字幕渲染器自动关闭,若否,则字幕渲染器继续等待,直到最后一个渲染数据被数据交换器读走。数据交换器在收到“结束”标志后,在将最后一个转码后的渲染数据和第三标志发送至通道后,数据交换器向动态字幕管理器发送“结束”标志。动态字幕管理器在收到“结束”标志后向数据交换器发送“收到结束”标志(即第六标志),数据交换器在收到“收到结束”标志后自动关闭。动态字幕管理器在处理完最后一个渲染数据后结束渲染流程,如,动态字幕管理器关闭其与数据交换器的数据通道,释放申请的内存。
如图4所示,所述方法还包括:动态字幕管理器检测其自身是否发生故障,若是,则动态字幕管理器不能再处理渲染得到的帧数据,需要结束整个渲染流程,此时,动态字幕管理器不会发送“收到数据”标志,而是向数据交换器发送“错误”标志(即第七标志)。数据交换器在收到“错误”标志后会立即终止字幕渲染器,然后向动态字幕管理器发送“收到错误”标志(即第八标志),然后数据交换器自动关闭。动态字幕管理器在收到“收到错误”标志时,整个渲染流程就会结束。
如图5所示,所述方法还包括:数据交换器检测其自身是否发生故障,若是,则终止字幕渲染器,然后向动态字幕管理器发送“错误”标志(即第七标志)。动态字幕管理器在收到“错误”标志后向数据交换器发送“收到错误”标志(即第八标志),然后结束渲染流程(数据交换器在收到“收到错误”标志后自动关闭)。
如图6所示,所述方法还包括:字幕渲染器检测其自身是否发生故障,若是,则通过回调函数向数据交换器发送空的帧数据。数据交换器在收到空的帧数据后终止字幕渲染器,然后向动态字幕管理器发送“错误”标志(即第七标志)。动态字幕渲染系统在收到“错误”标志后向数据交换器发送“收到错误”标志(即第八标志),然后结束渲染流程。数据交换器在收到“收到错误”标志后自动关闭。
本实施例的第二方面公开了一种动态字幕渲染系统,如图7所示,所述动态字幕渲染系统包括动态字幕管理器、字幕渲染器和数据交换器。
动态字幕管理器用于生成字幕数据;字幕渲染器用于对所述字幕数据进行渲染;数据交换器用于实现动态字幕管理器和字幕渲染器之间的数据交换。
具体的,动态字幕管理器根据设置的字幕信息生成字幕数据,所述字幕信息包括文字内容、文字的字体、文字的字号、字体颜色、字幕位置、动画、特效和图标数据。数据交换器用于动态字幕管理器与渲染器进行数据交换。首先动态字幕管理器将字幕数据(如字幕内容、字体、字体颜色、字幕长度、动画样式等),发送给数据交换器,数据交换器收到数据后进行解析,然后启动字幕渲染器,最后把字幕数据传递给字幕渲染器。字幕渲染器收到数据后,渲染出帧数据后返回给数据交换器,数据交换器将数据重新编码后发送给动态字幕管理器。
动态字幕管理器和数据交换器采用一问一答的方式进行数据传递。当动态字幕管理器向数据交换器发送消息时,需要向数据交换器发送一个“已发送”标志,数据交换器收到数据后要向动态字幕管理器发送一个“已收到”标志(一共有四组状态标志:准备、收到准备;数据、收到数据;完成、收到完成;错误、收到错误)。动态字幕管理器收到返回的“已收到”标志后才会继续进行下一步数据处理。
数据交换器和字幕渲染器采用回调的方式进行数据传递。数据交换器会把用于接收数据的回调函数传递给字幕渲染器,字幕渲染器把渲染好的数据通过回调函数把帧数据回传给数据交换器。数据交换器调用回调函数获取帧数据后,字幕渲染器才会进行下一帧数据的渲染。数据交换器打通了操作系统内置文字渲染与JavaScript的canvas动画、特技和图标渲染;数据交换器对下与字幕渲染器采用回调的方式获取到渲染的数据;数据交换器对上与动态字幕管理器采用通道阻塞的方式交换数据,即,通道内只能存放一份数据,只有通道内的数据被取走后才写入另一份数据;动态字幕管理器取走通道内的渲染数据后,数据交换器才回去调用回调函数获取下一帧渲染数据,从而实现动态字幕管理器对字幕渲染器的渲染数据的精确控制。
所述动态字幕渲染系统的启动过程包括:动态字幕管理器生成字幕数据,并将字幕数据和第一标志发送给数据交换器;数据交换器在收到字幕数据和第一标志后向动态字幕管理器发送第二标志;数据交换器调用启动函数启动字幕渲染器;数据交换器解析字幕数据,并将解析后的字幕数据和回调函数发送给字幕渲染器;字幕渲染器渲染出第一帧的渲染数据,并缓存该渲染数据;数据交换器调用回调函数获取字幕渲染器缓存的渲染数据,字幕渲染器在其缓存的渲染数据被数据交换器读走后渲染出下一帧的渲染数据,并缓存该渲染数据;数据交换器对获取到的渲染数据进行转码并缓存;数据交换器向通道发送转码后的渲染数据和第三标志,完成动态字幕渲染系统的启动。
所述动态字幕渲染系统的渲染过程包括:动态字幕管理器在其目前无正在处理的渲染数据时获取通道中的渲染数据,并在获取到该渲染数据后向数据交换器发送第四标志和帧号。数据交换器在收到第四标志和帧号后,调用回调函数获取字幕渲染器当前缓存的渲染数据以及该渲染数据对应的帧号,判断来自动态字幕管理器的帧号和来自字幕渲染器的帧号是否相同:若是,则对获取到的渲染数据进行转码;若否,则调用帧号设置函数设置字幕渲染器的起始渲染帧,然后循环执行数据清除步骤,直到获取到起始渲染帧的渲染数据,然后对起始渲染帧的渲染数据进行转码,其中,数据清除步骤包括:清除获取到的渲染数据,再调用回调函数获取字幕渲染器当前缓存的渲染数据及帧号;数据交换器将转码后的渲染数据和第三标志发送至通道中。字幕渲染器在其缓存的渲染数据被数据交换器读走后判断是否存在设置的起始渲染帧:若是,则渲染出起始渲染帧的渲染数据,并缓存该渲染数据;若否,则渲染出下一帧的渲染数据,并缓存该渲染数据。
具体的,字幕渲染器渲染出某一帧的渲染数据的过程为:字幕渲染器首先根据文字内容、文字的字体、文字的字号、字体颜色和字幕位置,采用操作系统内置的文字渲染函数对当前帧进行渲染,渲染出基本的文字效果;然后根据选择的动画,调用对应的动画渲染函数,使用JavaScript的canvas技术渲染出当前帧的动画样式;再根据选择的特效,调用对应的特技函数,使用JavaScript的canvas技术渲染出当前帧的特效效果;最后调用图标解码函数,使用JavaScript的canvas技术将图标数据渲染到字幕上,则当前帧渲染完毕。
所述动态字幕渲染系统结束渲染的过程包括:字幕渲染器在完成全部字幕数据的渲染后,若其缓存的最后一个渲染数据被数据交换器读走,则字幕渲染器向数据交换器发送第五标志,然后字幕渲染器自动关闭;数据交换器在收到第五标志后,若已将最后一个转码后的渲染数据和第三标志发送至通道,则数据交换器向动态字幕管理器发送第五标志;动态字幕管理器在收到第五标志后向数据交换器发送第六标志;数据交换器在收到第六标志后自动关闭;动态字幕管理器在处理完最后一个渲染数据后结束渲染流程。
需要说明的是,本领域技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统或者装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再重复描述。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (10)
1.一种动态字幕渲染系统,其特征在于,包括:
动态字幕管理器,用于生成字幕数据;
字幕渲染器,用于对所述字幕数据进行渲染;
数据交换器,用于实现动态字幕管理器和字幕渲染器之间的数据交换;
其中,动态字幕管理器根据设置的字幕信息生成字幕数据,所述字幕信息包括文字内容、文字的字体、文字的字号、字体颜色、字幕位置、动画、特效和图标数据;
其中,字幕渲染器渲染出某一帧的渲染数据的过程为:字幕渲染器首先根据文字内容、文字的字体、文字的字号、字体颜色和字幕位置,采用操作系统内置的文字渲染函数对当前帧进行渲染;然后根据选择的动画,调用对应的动画渲染函数,使用JavaScript的canvas技术渲染出当前帧的动画样式;再根据选择的特效,调用对应的特技函数,使用JavaScript的canvas技术渲染出当前帧的特效效果;最后调用图标解码函数,使用JavaScript的canvas技术将图标数据渲染到字幕上,则当前帧渲染完毕。
2.根据权利要求1所述的一种动态字幕渲染系统,其特征在于,所述动态字幕渲染系统的启动过程包括:
动态字幕管理器生成字幕数据,并将字幕数据和第一标志发送给数据交换器;
数据交换器在收到字幕数据和第一标志后向动态字幕管理器发送第二标志;
数据交换器调用启动函数启动字幕渲染器;
数据交换器解析字幕数据,并将解析后的字幕数据和回调函数发送给字幕渲染器;
字幕渲染器渲染出第一帧的渲染数据,并缓存该渲染数据;
数据交换器调用回调函数获取字幕渲染器缓存的渲染数据;字幕渲染器在其缓存的渲染数据被数据交换器读走后渲染出下一帧的渲染数据,并缓存该渲染数据;
数据交换器对获取到的渲染数据进行转码;
数据交换器向通道发送转码后的渲染数据和第三标志,完成动态字幕渲染系统的启动。
3.根据权利要求1所述的一种动态字幕渲染系统,其特征在于,所述动态字幕渲染系统的渲染过程包括:
动态字幕管理器在其目前无正在处理的渲染数据时获取通道中的渲染数据,并在获取到该渲染数据后向数据交换器发送第四标志和帧号;
数据交换器在收到第四标志和帧号后,调用回调函数获取字幕渲染器当前缓存的渲染数据以及该渲染数据对应的帧号,判断来自动态字幕管理器的帧号和来自字幕渲染器的帧号是否相同:若是,则对获取到的渲染数据进行转码;若否,则调用帧号设置函数设置字幕渲染器的起始渲染帧,然后循环执行数据清除步骤,直到获取到起始渲染帧的渲染数据,然后对起始渲染帧的渲染数据进行转码,其中,数据清除步骤包括:清除获取到的渲染数据,再调用回调函数获取字幕渲染器当前缓存的渲染数据及帧号;数据交换器将转码后的渲染数据和第三标志发送至通道中;
字幕渲染器在其缓存的渲染数据被数据交换器读走后判断是否存在设置的起始渲染帧:若是,则渲染出起始渲染帧的渲染数据,并缓存该渲染数据;若否,则渲染出下一帧的渲染数据,并缓存该渲染数据。
4.根据权利要求1所述的一种动态字幕渲染系统,其特征在于,所述动态字幕渲染系统结束渲染的过程包括:
字幕渲染器在完成全部字幕数据的渲染后,若其缓存的最后一个渲染数据被数据交换器读走,则字幕渲染器向数据交换器发送第五标志,然后字幕渲染器自动关闭;
数据交换器在收到第五标志后,若已将最后一个转码后的渲染数据和第三标志发送至通道,则数据交换器向动态字幕管理器发送第五标志;
动态字幕管理器在收到第五标志后向数据交换器发送第六标志;
数据交换器在收到第六标志后自动关闭;
动态字幕管理器在处理完最后一个渲染数据后结束渲染流程。
5.一种动态字幕渲染方法,应用于权利要求1所述的字幕渲染系统,其特征在于,所述方法包括动态字幕渲染系统启动步骤、动态字幕渲染步骤和动态字幕渲染系统关闭步骤;
动态字幕渲染步骤包括:
动态字幕管理器在其目前无正在处理的渲染数据时获取通道中的渲染数据,并在获取到该渲染数据后向数据交换器发送第四标志和帧号;
数据交换器在收到第四标志和帧号后,调用回调函数获取字幕渲染器当前缓存的渲染数据以及该渲染数据对应的帧号,判断来自动态字幕管理器的帧号和来自字幕渲染器的帧号是否相同:若是,则对获取到的渲染数据进行转码;若否,则调用帧号设置函数设置字幕渲染器的起始渲染帧,然后循环执行数据清除步骤,直到获取到起始渲染帧的渲染数据,然后对起始渲染帧的渲染数据进行转码,其中,数据清除步骤包括:清除获取到的渲染数据,再调用回调函数获取字幕渲染器当前缓存的渲染数据及帧号;数据交换器将转码后的渲染数据和第三标志发送至通道中;
字幕渲染器在其缓存的渲染数据被数据交换器读走后判断是否存在设置的起始渲染帧:若是,则渲染出起始渲染帧的渲染数据,并缓存该渲染数据;若否,则渲染出下一帧的渲染数据,并缓存该渲染数据。
6.根据权利要求5所述的一种动态字幕渲染方法,其特征在于,动态字幕渲染系统启动步骤包括:
动态字幕管理器生成字幕数据,并将字幕数据和第一标志发送给数据交换器;
数据交换器在收到字幕数据和第一标志后向动态字幕管理器发送第二标志;
数据交换器调用启动函数启动字幕渲染器;
数据交换器解析字幕数据,并将解析后的字幕数据和回调函数发送给字幕渲染器;
字幕渲染器渲染出第一帧的渲染数据,并缓存该渲染数据;
数据交换器调用回调函数获取字幕渲染器缓存的渲染数据;字幕渲染器在其缓存的渲染数据被数据交换器读走后渲染出下一帧的渲染数据,并缓存该渲染数据;
数据交换器对获取到的渲染数据进行转码;
数据交换器向通道发送转码后的渲染数据和第三标志,完成动态字幕渲染系统的启动。
7.根据权利要求5所述的一种动态字幕渲染方法,其特征在于,动态字幕渲染系统关闭步骤包括:
字幕渲染器在完成全部字幕数据的渲染后,若其缓存的最后一个渲染数据被数据交换器读走,则字幕渲染器向数据交换器发送第五标志,然后字幕渲染器自动关闭;
数据交换器在收到第五标志后,若已将最后一个转码后的渲染数据和第三标志发送至通道,则数据交换器向动态字幕管理器发送第五标志;
动态字幕管理器在收到第五标志后向数据交换器发送第六标志,数据交换器在收到第六标志后自动关闭;
动态字幕管理器在处理完最后一个渲染数据后结束渲染流程。
8.根据权利要求5所述的一种动态字幕渲染方法,其特征在于,所述方法还包括:
动态字幕管理器检测其自身是否发生故障,若是,则向数据交换器发送第七标志;
数据交换器在收到第七标志后终止字幕渲染器,然后向动态字幕管理器发送第八标志,然后数据交换器自动关闭;
动态字幕管理器在收到第八标志后结束渲染流程。
9.根据权利要求5所述的一种动态字幕渲染方法,其特征在于,所述方法还包括:
数据交换器检测其自身是否发生故障,若是,则终止字幕渲染器,然后向动态字幕管理器发送第七标志;
动态字幕管理器在收到第七标志后向数据交换器发送第八标志,然后结束渲染流程;
数据交换器在收到第八标志后自动关闭。
10.根据权利要求5所述的一种动态字幕渲染方法,其特征在于,所述方法还包括:
字幕渲染器检测其自身是否发生故障,若是,则通过回调函数向数据交换器发送空的帧数据;
数据交换器在收到空的帧数据后终止字幕渲染器,然后向动态字幕管理器发送第七标志;
动态字幕渲染系统在收到第七标志后向数据交换器发送第八标志,然后结束渲染流程;
数据交换器在收到第八标志后自动关闭。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410129158.2A CN117676053B (zh) | 2024-01-31 | 2024-01-31 | 一种动态字幕渲染方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410129158.2A CN117676053B (zh) | 2024-01-31 | 2024-01-31 | 一种动态字幕渲染方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117676053A true CN117676053A (zh) | 2024-03-08 |
CN117676053B CN117676053B (zh) | 2024-04-16 |
Family
ID=90082803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410129158.2A Active CN117676053B (zh) | 2024-01-31 | 2024-01-31 | 一种动态字幕渲染方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117676053B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483723A (zh) * | 2008-01-11 | 2009-07-15 | 新奥特(北京)视频技术有限公司 | 一种基于多样性应用的电视字幕播出设备性能保障的方法 |
KR20110044458A (ko) * | 2009-10-23 | 2011-04-29 | 권정숙 | 문자발생기 및 이를 이용한 자막 및 그래픽 입력 방법 |
CN103905744A (zh) * | 2014-04-10 | 2014-07-02 | 中央电视台 | 一种渲染合成方法及系统 |
CN104540028A (zh) * | 2014-12-24 | 2015-04-22 | 上海影卓信息科技有限公司 | 一种基于移动平台的视频美化交互体验系统 |
US20150109532A1 (en) * | 2013-10-23 | 2015-04-23 | Google Inc. | Customizing mobile media captioning based on mobile media rendering |
US20180139259A1 (en) * | 2016-11-17 | 2018-05-17 | Sony Corporation | Embedding html-5 and javascript in user-data field of mpeg or avc transport stream |
CN110704059A (zh) * | 2019-10-16 | 2020-01-17 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、电子设备及存储介质 |
CN111510744A (zh) * | 2020-07-01 | 2020-08-07 | 北京美摄网络科技有限公司 | 一种处理视音频的方法、装置、电子设备及存储介质 |
CN111526420A (zh) * | 2019-02-01 | 2020-08-11 | 北京右划网络科技有限公司 | 一种视频渲染方法、电子设备及存储介质 |
WO2022112782A2 (en) * | 2020-11-27 | 2022-06-02 | V-Nova International Ltd | Decoding a video stream within a browser |
CN116489265A (zh) * | 2022-12-30 | 2023-07-25 | 武汉艺画开天文化传播有限公司 | Maya实时链接到UE5拍屏的方法 |
WO2023246302A1 (zh) * | 2022-06-20 | 2023-12-28 | 北京字跳网络技术有限公司 | 字幕的显示方法、装置、设备及介质 |
CN117376660A (zh) * | 2022-06-29 | 2024-01-09 | 腾讯科技(北京)有限公司 | 字幕元素的渲染方法、装置、设备、介质及程序产品 |
-
2024
- 2024-01-31 CN CN202410129158.2A patent/CN117676053B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483723A (zh) * | 2008-01-11 | 2009-07-15 | 新奥特(北京)视频技术有限公司 | 一种基于多样性应用的电视字幕播出设备性能保障的方法 |
KR20110044458A (ko) * | 2009-10-23 | 2011-04-29 | 권정숙 | 문자발생기 및 이를 이용한 자막 및 그래픽 입력 방법 |
US20150109532A1 (en) * | 2013-10-23 | 2015-04-23 | Google Inc. | Customizing mobile media captioning based on mobile media rendering |
CN103905744A (zh) * | 2014-04-10 | 2014-07-02 | 中央电视台 | 一种渲染合成方法及系统 |
CN104540028A (zh) * | 2014-12-24 | 2015-04-22 | 上海影卓信息科技有限公司 | 一种基于移动平台的视频美化交互体验系统 |
US20180139259A1 (en) * | 2016-11-17 | 2018-05-17 | Sony Corporation | Embedding html-5 and javascript in user-data field of mpeg or avc transport stream |
CN111526420A (zh) * | 2019-02-01 | 2020-08-11 | 北京右划网络科技有限公司 | 一种视频渲染方法、电子设备及存储介质 |
CN110704059A (zh) * | 2019-10-16 | 2020-01-17 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、电子设备及存储介质 |
CN111510744A (zh) * | 2020-07-01 | 2020-08-07 | 北京美摄网络科技有限公司 | 一种处理视音频的方法、装置、电子设备及存储介质 |
WO2022112782A2 (en) * | 2020-11-27 | 2022-06-02 | V-Nova International Ltd | Decoding a video stream within a browser |
WO2023246302A1 (zh) * | 2022-06-20 | 2023-12-28 | 北京字跳网络技术有限公司 | 字幕的显示方法、装置、设备及介质 |
CN117376660A (zh) * | 2022-06-29 | 2024-01-09 | 腾讯科技(北京)有限公司 | 字幕元素的渲染方法、装置、设备、介质及程序产品 |
CN116489265A (zh) * | 2022-12-30 | 2023-07-25 | 武汉艺画开天文化传播有限公司 | Maya实时链接到UE5拍屏的方法 |
Non-Patent Citations (1)
Title |
---|
李鹏飞 , 陈文飞: "图文字幕系统的技术发展", 电视字幕.特技与动画, no. 08, 20 August 2005 (2005-08-20) * |
Also Published As
Publication number | Publication date |
---|---|
CN117676053B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112422508A (zh) | 一种在浏览器网页中播放视频的方法及系统 | |
RU2278479C2 (ru) | Интерактивное видеооборудование и способ наложения титров на изображение с помощью этого оборудования | |
US8941663B2 (en) | Method and device for rendering user interface font | |
US20040002325A1 (en) | Mobile handset with browser application to be used to recognize textual presentation | |
CN103678267B (zh) | 一种图文混合内容的排版和渲染方法及系统 | |
CN102156569B (zh) | 用于发送手写动画消息的装置和方法 | |
JP2010530999A (ja) | ワープ画像を用いて電子テキストメッセージを修正する方法、システム及びコンピュータプログラム製品 | |
RU2005105432A (ru) | Система и способ обслуживания передачи мультимедийных сообщений | |
CN110457624A (zh) | 视频生成方法、装置、服务器及存储介质 | |
CN112291628A (zh) | 一种基于web浏览器的多线程视频解码播放方法 | |
CN117676053B (zh) | 一种动态字幕渲染方法及系统 | |
WO2010069171A1 (zh) | 一种实现电视字幕动态缩放的移动终端及方法 | |
JP2002259111A (ja) | 電子マンガ閲覧プログラム、記録媒体、閲覧方法及び装置 | |
JP2024513380A (ja) | 字幕の処理方法、装置、機器及び記憶媒体 | |
CN110187858B (zh) | 图像显示方法及系统 | |
CN101764957A (zh) | 一种在会议字幕中插入图片的方法和装置 | |
WO2013020411A1 (zh) | 即时通信终端和实时显示会话消息的方法 | |
CN107248947B (zh) | 表情处理方法及装置、计算机设备及存储介质 | |
CN103491416B (zh) | 字幕数据的单图层显示方法和装置 | |
CN115225615B (zh) | 虚幻引擎像素流送方法及装置 | |
CN113055744A (zh) | 一种视频解码方法及装置 | |
CN114201134B (zh) | 安卓兼容环境中多窗口模式下Toast的优化显示方法 | |
CN115695401A (zh) | 基于浏览器的媒体播放系统 | |
CN101252650A (zh) | 电视机osd生成与显示控制装置及方法 | |
CN100551027C (zh) | 视频通讯中视频格式的控制方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |