CN112055262B - 一种网络流媒体字幕的显示方法及系统 - Google Patents
一种网络流媒体字幕的显示方法及系统 Download PDFInfo
- Publication number
- CN112055262B CN112055262B CN202010803963.0A CN202010803963A CN112055262B CN 112055262 B CN112055262 B CN 112055262B CN 202010803963 A CN202010803963 A CN 202010803963A CN 112055262 B CN112055262 B CN 112055262B
- Authority
- CN
- China
- Prior art keywords
- caption
- subtitle
- track
- data
- subtitles
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/488—Data services, e.g. news ticker
- H04N21/4884—Data services, e.g. news ticker for displaying subtitles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/434—Disassembling of a multiplex stream, e.g. demultiplexing audio and video streams, extraction of additional data from a video stream; Remultiplexing of multiplex streams; Extraction or processing of SI; Disassembling of packetised elementary stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/435—Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
- H04N21/8586—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot by using a URL
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Studio Circuits (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明公开了一种网络流媒体字幕的显示方法,包括如下步骤:1添加字幕并解析数据,所述字幕包括内置字幕和外置字幕,2通过Index或URL选择一路字幕,3开始字幕Sync子线程,子线程循环检查当前播放时间CurrentTrack中是否有字幕需要显示,有则显示,无则清除。本发明将内置、外置字幕采用同一套控制、解析、显示机制,使得用户在选择字幕时可以不区分内置、外置,仅凭编号就可以选择,并且可以降低开发、维护的工作量。
Description
技术领域
本发明涉及网络流媒体技术领域,尤其涉及一种网络流媒体字幕的显示方法及系统。
背景技术
视频中的字幕分为内置字幕和外置字幕两种。内置字幕内嵌在视频文件内部,不可隐藏和替换。外置字幕就是视频和字幕分离,看的时候根据需要加载字幕。现有同时支持网络流媒体内置和外置字幕的装置,通常将内置与外置字幕的管理、显示分开,通过两套处理方式分别显示内置、外置字幕。内置、外置字幕分别建立各自的控制、解析、显示:
第一步:添加字幕并解析数据:
1.1内置、外置字幕分别添加到各自的字幕队列容器中;
1.2内置、外置字幕分别用各自的parser进行解析。
第二步:选择一路需要显示的字幕:
2.1选择“内置”或者“外置”字幕;
2.2在“内置”或“外置”中选择其中一路字幕。
但是,通常需要用户在选择字幕时先选择“内置”或者“外置”,再在二级目录下选择某一路字幕,比较繁琐;另外,两套字幕处理机制在开发和维护上的工作量也较高,如图1所示。
因此,本领域的技术人员致力于采用同一套字幕控制、解析、显示机制,使得用户在选择字幕时可以不区分内置、外置,并且可以降低开发、维护的工作量。
发明内容
有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是如何使得用户在选择字幕时可以不区分内置、外置的情况下,快速高效的控制、解析和显示内置字幕或者外置字幕。
为实现上述目的,本发明提供了一种网络流媒体字幕的显示方法,包括如下步骤:
(1)添加字幕并解析数据,字幕包括内置字幕和/或外置字幕,
(2)通过Index或URL选择一路字幕,
(3)开始字幕Sync子线程,子线程循环检查当前播放时间CurrentTrack中是否有字幕需要显示,有则显示,无则清除。
具体的,步骤(1)具体的包括以下步骤:
步骤(1.1)添加字幕并获取数据:对于内置字幕提供接口给解复用器推送数据,对于添加的外置字幕URL自主下载,
步骤(1.2)根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
步骤(1.3)将新增的字幕track添加到字幕tracks的vector容器中。
具体的,内置字幕提供AddSubtitleByData接口给解复用器推送数据,获取数据后创建一路新的SubtitleTrack对象。
具体的,内置字幕数据包括不分片的数据和分片的数据,数据不分片只需要解复用器一次推送,数据分片需要按照分片多次推送。
具体的,内置字幕提供AddSubtitleByData接口给解复用器推送数据的步骤如下:
a.1在内置字幕id与字幕容器中Index的mapping表中查找,是否已经存在此id的track,
a.2如果未找到:
a.2.1新建一路SubtitleTrack对象,
a.2.2对此track进行初始化,即创建字幕解析子线程解析此track的数据,
a.2.3将新增的SubtitleTrack添加到字幕tracks的vector容器中,
a.2.4将内置字幕id与字幕容器Index的mapping关系添加到mapping表中,a.3如果找到:
a.3.1获取mapping表中内置字幕id对应的Index,
a.3.2将字幕数据传送给Index对应的track进行解析。
具体的,步骤a.2.2的具体过程如下:
步骤a.2.2.1根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本,
步骤a.2.2.2解析完成后子线程阻塞等待。
具体的,步骤a.2.2的具体过程如下:
a.3.2.1再次启动字幕解析子线程,解析结果添加到该track中,
a.3.2.2解析完成后子线程阻塞等待。
具体的,解复用器推送数据,数据参数为字幕数据data,字幕类型,字幕id。
具体的,外置字幕提供AddSubtitleByUrl接口给上层player添加URL,创建一路新的SubtitleTrack对象,下载URL获取数据。
具体的,外置字幕提供AddSubtitleByUrl接口给上层player添加URL的步骤如下:
b.1根据URL的扩展名判定字幕类型,
b.2新建一路SubtitleTrack对象,
b.3对此track进行初始化,即创建字幕解析子线程下载并解析此track的数据,b.4将新增的SubtitleTrack添加到字幕tracks的vector容器中。
具体的,步骤b.3的具体步骤如下:
b.3.1使用CURL库下载字幕文件URL,获取数据,
b.3.2根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本。
具体的,步骤(2)具体包括:
步骤(2.1)通过字幕Index(0,1,2,…)选择容器中一路外置或者内置字幕track,
步骤(2.2)通过URL选择容器中一路外置字幕track。
具体的,步骤(2.1)具体包括:
(2.1.1)将容器中对应Index的SubtitleTrack设为当前CurrentTrack,
(2.2.2)创建字幕Sync子线程,如果没有Start则阻塞等待。
具体的,步骤(2.2)具体包括:
(2.2.1)遍历容器中所有tracks,如果某一路track的URL与选择的URL相同,则将该SubtitleTrack设为当前CurrentTrack,
(2.2.2)创建字幕Sync子线程,如果没有Start则阻塞等待。
具体的,步骤(3)开始字幕Sync子线程,子线程循环检查当前播放时间CurrentTrack中是否有字幕需要显示:
(3.1)处于一条字幕的StartTime和EndTime之间时显示字幕,
(3.2)没有匹配的字幕时清除已显示内容。
本发明还提供一种网络流媒体内置和外置多路字幕的显示系统,其特征在于,包括字幕信息获取模块、字幕选择控制模块和字幕显示模块,字幕信息获取模块与字幕选择控制模块连接,字幕显示模块与字幕选择控制模块连接。字幕信息模块位于字幕选择控制模块的左边,字幕显示模块位于字幕选择控制模块的右边。
具体的,字幕信息获取模块包括字幕信息单元和解复用器,字幕信息单元包括内置字幕和/或外置字幕,当有内置字幕存在时,解复用器与字幕信息单元连接。
当选择播放外置字幕时,字幕信息获取单元获取与目标文件相对应的字幕文件。
进一步的,解复用器用AddSubtitleByData接口推送内置字幕数据。
进一步的,字幕选择控制模块包括选择单元、解析单元和下载单元,解析单元被设置为将字幕数据解析为一条条带时间戳和格式的文本,选择单元被设置为通过Index或URL选择一路需要显示的字幕,下载单元被设置为下载外置字幕。
进一步的,选择单元在选择字幕时提供两种方式:1、通过字幕Index(0,1,2,…)选择容器中一路外置或者内置字幕track;2、通过URL选择容器中一路外置字幕track。
进一步的,字幕显示模块显示字幕是根据字幕Sync子线程循环检查当前播放时间是否有字幕需要显示:处于一条字幕的StartTime和EndTime之间时显示字幕;没有匹配的字幕时清除已显示内容。
本发明还提供一种终端,包括存储器、处理器和存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行计算机程序时实现上述的网络流媒体字幕显示方法。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述的网络流媒体字幕显示方法。
技术效果
与现有技术相比,为了达到内置、外置字幕集中统一管理,本发明将内置、外置字幕采用同一套控制、解析、显示机制,使得用户在选择字幕时可以不区分内置、外置,仅凭编号就可以选择,并且可以降低开发、维护的工作量。另外,本发明采用的字幕控制模块具有以下特点:
1.在字幕数据的获取上,对于内置字幕提供接口给解复用器推送数据,对于添加的外置字幕URL自主下载;
2.根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
3.将内置、外置字幕tracks集中保存在同一个vector容器中,每个track除了存储一条条带时间戳和格式的文本之外,有类型、语言、编码方式等属性信息;
4.支持通过字幕的index选择容器中相应的外置、内置字幕track,同时支持通过URL选择外置字幕track。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是现有技术的字幕选择控制流程图;
图2是本发明的一个较佳实施例的多路字幕显示的总体结构流程图;
图3是本发明的一个较佳实施例的字幕显示流程图;
图4是本发明的一个较佳实施例的字幕Sync子线程的流程图;
图5是本发明的一个较佳实施例的解复用器推送内置字幕数据的流程图;
图6是本发明的一个较佳实施例的下载URL获取外置字幕数据的流程图;
图7是本发明的一个较佳实施例的通过Index选择一路字幕的流程图;
图8是本发明的一个较佳实施例的通过URL选择一路外置字幕的流程图;
图9是本发明的一个较佳实施例的网络流媒体内置和外置多路字幕的显示系统的结构图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。英文“Subtitle”即中文“字幕”的意思。
本文中出现的所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
在本发明中,除非另有明确的规定和限定,术语“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
Index(0,1,2,…)是供用户选择的编号。在“步骤(1.3)将新增的SubtitleTrack添加到字幕tracks的vector容器中”,软件每向vector添加一个成员,就会把它放在一个依次累加的index上,比如添加一个track A到vector,它的index就是0,再添加一个track B到vector,它的index就是1,依次类推。所以,“步骤(2.1)通过字幕Index(0,1,2,…)选择容器中一路外置或者内置字幕track”,就是用户在选择字幕时可以不区分内置、外置,通过编号选择,比如选择index1,就会选中track B。
内置字幕id:使用AddSubtitleByData接口推送时,需要解复用器指明本次数据的字幕id,相同id的segment推送给同一路track。
如图2~3所示,本发明提供了网络流媒体内置和外置多路字幕的显示方法,包括如下步骤:
(1)添加字幕并解析数据:
(1.1)添加字幕并获取数据:对于内置字幕提供接口给解复用器推送数据,对于添加的外置字幕URL自主下载;
具体的,内置字幕:提供AddSubtitleByData接口给解复用器推送数据,获取数据后创建一路新的SubtitleTrack对象;外置字幕:提供AddSubtitleByUrl接口给上层player添加URL,创建一路新的SubtitleTrack对象,下载URL获取数据;
(1.2)根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
(1.3)将新增的字幕track添加到字幕tracks的vector容器中。
(2)选择字幕提供以下两种方式:
(2.1)通过字幕Index(0,1,2,…)选择容器中一路外置或者内置字幕track:
(2.1.1)将容器中对应Index的SubtitleTrack设为当前CurrentTrack;
(2.1.2)创建字幕Sync子线程,如果没有Start则阻塞等待;
(2.2)通过URL选择容器中一路外置字幕track:
(2.2.1)遍历容器中所有tracks,如果某一路track的URL与选择的URL相同,则将该SubtitleTrack设为当前CurrentTrack;
(2.2.2)创建字幕Sync子线程,如果没有Start则阻塞等待。
(3)开始字幕Sync子线程:Start后,子线程循环检查当前播放时间CurrentTrack中是否有字幕需要显示,流程如图4所示:
(3.1)处于一条字幕的StartTime和EndTime之间时显示字幕;
(3.2)没有匹配的字幕时清除已显示内容。
在步骤(1)中,网络流媒体的内置字幕数据,主要有两种:
a)数据不分片(segment),只需要解复用器一次推送;
b)数据分片(segment,例如网络直播流),每次推送一个segment的数据。
因此推送时需要解复用器指明本次数据的字幕id,相同id的segment推送给同一路track。
字幕选择控制模块提供AddSubtitleByData接口给解复用器推送数据,参数为字幕数据data,字幕类型,字幕id:
a内置字幕,流程如图5所示
a.1在内置字幕id与字幕容器中Index的mapping表中查找,是否已经存在此id的track;
a.2如果未找到:
a.2.1新建一路SubtitleTrack对象;
a.2.2对此track进行初始化,即创建字幕解析子线程解析此track的数据:
a.2.2.1根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
a.2.2.2解析完成后子线程阻塞等待;
a.2.3将新增的SubtitleTrack添加到字幕tracks的vector容器中;
a.2.4将内置字幕id与字幕容器Index的mapping关系添加到mapping表中;a.3如果找到:
a.3.1获取mapping表中内置字幕id对应的Index;
a.3.2将字幕数据传送给Index对应的track进行解析:
a.3.2.1再次启动字幕解析子线程,解析结果添加到该track中;
a.3.2.2解析完成后子线程阻塞等待。
b外置字幕流程如图6所示
提供AddSubtitleByUrl接口给上层player添加URL,参数为URL:
b.1根据URL的扩展名判定字幕类型;
b.2新建一路SubtitleTrack对象;
b.3对此track进行初始化,即创建字幕解析子线程下载并解析此track的数据:
b.3.1使用CURL库下载字幕文件URL,获取数据;
b.3.2根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
b.4将新增的SubtitleTrack添加到字幕tracks的vector容器中。
在步骤(2)中,步骤(2.1)通过字幕Index(0,1,2,…)选择容器中一路外置或者内置字幕track:流程如图7所示
将容器中对应Index的SubtitleTrack设为当前CurrentTrack;
创建字幕Sync子线程。
步骤(2.2)通过URL选择容器中一路外置字幕track:流程如图8所示
遍历容器中所有tracks,如果某一路track的URL与选择的URL相同,则将该SubtitleTrack设为当前CurrentTrack;
创建字幕Sync子线程。
具体实施例
存在3路内置字幕(id=0分片,id=1分片,id=2不分片),2路外置字幕:
S1:添加字幕并解析数据:
1解复用器调用AddSubtitleByData接口推送id=0内置字幕的第1个segment数据,参数为字幕数据data,字幕类型,字幕id=0:
1.1在内置字幕id与字幕容器中Index的mapping表中查找,未找到id=0的track;
1.2未找到:
1.2.1新建一路SubtitleTrack对象;
1.2.2对此track进行初始化,即创建字幕解析子线程解析此track的数据:
1.2.2.1根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
1.2.2.2解析完成后子线程阻塞等待;
1.2.3将新增的SubtitleTrack添加到字幕tracks的vector容器中(Index=0);
1.2.4将内置字幕id=0与字幕容器Index=0的mapping关系添加到mapping表中;
2上层player调用AddSubtitleByUrl接口添加第1路外置字幕URL,参数为URL1:
1.3根据URL1的扩展名判定字幕类型;
1.4新建一路SubtitleTrack对象;
1.5对此track进行初始化,即创建字幕解析子线程下载并解析此track的数据:
1.5.1使用CURL库下载字幕文件URL1,获取数据;
1.5.2根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
1.6将新增的SubtitleTrack添加到字幕tracks的vector容器中(Index=1)。
3上层player调用AddSubtitleByUrl接口添加第2路外置字幕URL,参数为URL2:
a)根据URL2的扩展名判定字幕类型;
b)新建一路SubtitleTrack对象;
c)对此track进行初始化,即创建字幕解析子线程下载并解析此track的数据:
i.使用CURL库下载字幕文件URL2,获取数据;
ii.根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
d)将新增的SubtitleTrack添加到字幕tracks的vector容器中(Index=2)。
4解复用器调用AddSubtitleByData接口推送id=1内置字幕的第1个segment数据,参数为字幕数据data,字幕类型,字幕id=1:
e)在内置字幕id与字幕容器中Index的mapping表中查找,未找到id=1的track;
f)未找到:
i.新建一路SubtitleTrack对象;
ii.对此track进行初始化,即创建字幕解析子线程解析此track的数据:
1.根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
2.解析完成后子线程阻塞等待;
iii.将新增的SubtitleTrack添加到字幕tracks的vector容器中(Index=3);
iv.将内置字幕id=1与字幕容器Index=3的mapping关系添加到mapping表中;5解复用器调用AddSubtitleByData接口推送id=2内置字幕的全部数据,参数为字幕数据data,字幕类型,字幕id=2:
a)在内置字幕id与字幕容器中Index的mapping表中查找,未找到id=2的track;
b)未找到:
i.新建一路SubtitleTrack对象;
ii.对此track进行初始化,即创建字幕解析子线程解析此track的数据:
1.根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本;
2.解析完成后子线程阻塞等待;
iii.将新增的SubtitleTrack添加到字幕tracks的vector容器中(Index=4);
iv.将内置字幕id=2与字幕容器Index=4的mapping关系添加到mapping表中;6解复用器调用AddSubtitleByData接口推送id=0内置字幕的第2个segment数据,
参数为字幕数据data,字幕类型,字幕id=0:
a)在内置字幕id与字幕容器中Index的mapping表中查找,找到id=0的track;
b)找到:
i.获取mapping表中内置字幕id(id=0)对应的Index(Index=0);
ii.将字幕数据传送给Index对应的track进行解析:
1.再次启动字幕解析子线程,解析结果添加到该track中;
2.解析完成后子线程阻塞等待;
7解复用器调用AddSubtitleByData接口推送id=1内置字幕的第2个segment数据,
参数为字幕数据data,字幕类型,字幕id=1:
a)在内置字幕id与字幕容器中Index的mapping表中查找,找到id=1的track;
b)找到:
i.获取mapping表中内置字幕id(id=1)对应的Index(Index=3);
ii.将字幕数据传送给Index对应的track进行解析:
1.再次启动字幕解析子线程,解析结果添加到该track中;
2.解析完成后子线程阻塞等待;
8对于分片的内置字幕(id=0,id=1),以上6与7一般会重复进行,直到所有segment都推送完成;
S2:选择一路需要显示的字幕,有以下两种方式:
1通过字幕Index(本例中为0,1,2,3,4)选择容器中一路外置或者内置字幕track:
1.1将容器中对应Index的SubtitleTrack设为当前CurrentTrack;
1.2创建字幕Sync子线程;
2通过URL(本例中为URL1或者URL2)选择容器中一路外置字幕track:
2.1遍历容器中所有tracks,如果某一路track的URL与选择的URL相同,则将该SubtitleTrack设为当前CurrentTrack;
2.2创建字幕Sync子线程;
S3:开始字幕Sync子线程:Start后,子线程循环检查当前播放时间CurrentTrack中是否有字幕需要显示:
1处于一条字幕的StartTime和EndTime之间时显示字幕;
2没有匹配的字幕时清除已显示内容。
本发明还提供了一种网络流媒体内置和外置多路字幕的显示系统,包括字幕信息获取模块、字幕选择控制模块和字幕显示模块。字幕信息获取模块与字幕选择控制模块连接,字幕显示模块与字幕选择控制模块连接。在图9中,字幕信息模块位于字幕选择控制模块的左边,字幕显示模块位于字幕选择控制模块的右边。字幕信息获取模块包括字幕信息单元、下载单元和解复用器。字幕信息单元用于播放目标文件时,获取与该目标文件对应的字幕文件;字幕文件的个数至少两个,字幕文件分为内置字幕和外置字幕。下载单元用于下载外置字母URL。解复用器用AddSubtitleByData接口推送内置字幕数据。字幕选择控制模块包括选择单元和解析单元。选择单元在选择字幕时提供两种方式:1、通过字幕Index(0,1,2,…)选择容器中一路外置或者内置字幕track;2、通过URL选择容器中一路外置字幕track。解析单元根据字幕类型创建对应的parser,将字幕数据解析为一条条带时间戳和格式的文本字幕。字幕显示模块能够实现上述多路字幕显示方法,使得用户在体验过程中无需选择内置字幕或者外置字幕,提高了用户体验,便于市场推广。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下,前者是更佳的实施方式。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (16)
1.一种网络流媒体字幕的显示方法,其特征在于,包括如下步骤:
(1)添加字幕并解析数据,所述字幕包括内置字幕和外置字幕,具体的包括以下步骤:
步骤(1.1)添加字幕并获取数据:对于内置字幕提供接口给解复用器推送数据,对于添加的外置字幕URL自主下载,
步骤(1.2)根据字幕类型创建对应的解析器,将字幕数据解析为一条条带时间戳和格式的文本;
步骤(1.3)将新增的字幕轨道添加到字幕轨道的容器中;
(2)通过字幕索引选择容器中一路外置或者内置字幕轨道,通过URL选择容器中一路外置字幕轨道;
(3)启动字幕同步子线程,子线程循环检查当前播放时间在当前轨道中是否有字幕需要显示,有则显示,无则清除。
2.如权利要求1所述的显示方法,其特征在于,所述内置字幕提供添加字幕数据的接口给解复用器推送数据,获取数据后创建一路新的字幕轨道对象。
3.如权利要求2所述的显示方法,其特征在于,所述内置字幕数据包括不分片的数据和分片的数据,数据不分片只需要解复用器一次推送,数据分片需要按照分片多次推送。
4.如权利要求3所述的显示方法,其特征在于,所述内置字幕提供添加字幕数据的接口给解复用器推送数据的步骤如下:
a.1在内置字幕id与字幕容器中索引的映射表中查找,是否已经存在此id的轨道,
a.2如果未找到:
a.2.1新建一路字幕轨道对象,
a.2.2对此轨道进行初始化,即创建字幕解析子线程解析此轨道的数据,
a.2.3将新增的字幕轨道添加到字幕轨道的容器中,
a.2.4将内置字幕id与字幕容器索引的映射关系添加到映射表中,
a.3如果找到:
a.3.1获取映射表中内置字幕id对应的索引,
a.3.2将字幕数据传送给索引对应的轨道进行解析。
5.如权利要求4所述的显示方法,其特征在于,步骤a.2.2的具体过程如下:
步骤a.2.2.1根据字幕类型创建对应的解析器,将字幕数据解析为一条条带时间戳和格式的文本,
步骤a.2.2.2解析完成后子线程阻塞等待。
6.如权利要求4所述的显示方法,其特征在于,步骤a.3.2的具体过程如下:
a.3.2.1再次启动字幕解析子线程,解析结果添加到该轨道中,
a.3.2.2解析完成后子线程阻塞等待。
7.如权利要求4所述的显示方法,其特征在于,所述解复用器推送数据,所述数据参数为字幕数据,字幕类型,字幕id。
8.如权利要求1所述的显示方法,其特征在于,所述外置字幕提供添加字幕URL的接口给上层播放器添加URL,创建一路新的字幕轨道对象,下载URL获取数据。
9.如权利要求8所述的显示方法,其特征在于,所述外置字幕提供添加字幕URL的接口给上层播放器添加URL的步骤如下:
b.1根据URL的扩展名判定字幕类型,
b.2新建一路字幕轨道对象,
b.3对此轨道进行初始化,即创建字幕解析子线程下载并解析此轨道的数据,
b.4将新增的字幕轨道添加到字幕轨道的容器中。
10.如权利要求9所述的显示方法,其特征在于,步骤b.3的具体步骤如下:
b.3.1使用CURL库下载字幕文件URL,获取数据,
b.3.2根据字幕类型创建对应的解析器,将字幕数据解析为一条条带时间戳和格式的文本。
11.如权利要求1所述的显示方法,其特征在于,步骤(2)具体包括:
步骤(2.1)通过字幕索引(0,1,2,…)选择容器中一路外置或者内置字幕轨道,
步骤(2.2)通过URL选择容器中一路外置字幕轨道。
12.如权利要求11所述的显示方法,其特征在于,步骤(2.1)具体包括:
(2.1.1)将容器中对应索引的字幕轨道设为当前轨道,
(2.2.2)创建字幕同步子线程,如果没有启动则阻塞等待。
13.如权利要求11所述的显示方法,其特征在于,步骤(2.2)具体包括:
(2.2.1)遍历容器中所有轨道,如果某一路轨道的URL与选择的URL相同,则将该字幕轨道设为当前轨道,
(2.2.2)创建字幕同步子线程,如果没有启动则阻塞等待。
14.如权利要求1所述的显示方法,其特征在于,步骤(3)启动字幕同步子线程,子线程循环检查当前播放时间在当前轨道中是否有字幕需要显示:
(3.1)处于一条字幕的起始时间和结束时间之间时显示字幕,
(3.2)没有匹配的字幕时清除已显示内容。
15.一种终端,包括存储器、处理器和存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-14的任一项所述的网络流媒体字幕显示方法。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-14的任一项所述的网络流媒体字幕显示方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010803963.0A CN112055262B (zh) | 2020-08-11 | 2020-08-11 | 一种网络流媒体字幕的显示方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010803963.0A CN112055262B (zh) | 2020-08-11 | 2020-08-11 | 一种网络流媒体字幕的显示方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112055262A CN112055262A (zh) | 2020-12-08 |
CN112055262B true CN112055262B (zh) | 2022-10-21 |
Family
ID=73602145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010803963.0A Active CN112055262B (zh) | 2020-08-11 | 2020-08-11 | 一种网络流媒体字幕的显示方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112055262B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114302215B (zh) * | 2021-12-29 | 2023-09-29 | 北京奕斯伟计算技术股份有限公司 | 视频数据流解码系统、方法、电子设备和介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7519274B2 (en) * | 2003-12-08 | 2009-04-14 | Divx, Inc. | File format for multiple track digital data |
CN105163170A (zh) * | 2015-08-27 | 2015-12-16 | 北京暴风科技股份有限公司 | 一种解析并显示视频字幕的方法及系统 |
CN106792114B (zh) * | 2016-12-06 | 2019-12-03 | 深圳Tcl数字技术有限公司 | 字幕的切换方法及装置 |
CN106804011B (zh) * | 2017-02-10 | 2021-03-30 | 深圳创维数字技术有限公司 | 一种播放视频时加载字幕文件的方法及系统 |
CN111147896A (zh) * | 2018-11-05 | 2020-05-12 | 中兴通讯股份有限公司 | 一种字幕数据处理方法、装置、设备和计算机存储介质 |
-
2020
- 2020-08-11 CN CN202010803963.0A patent/CN112055262B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112055262A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210217442A1 (en) | In-band data recognition and synchronization system | |
EP2549771B1 (en) | Method and apparatus for viewing customized multimedia segments | |
US10984835B2 (en) | Apparatus, system and method for associating one or more filter files with a particular multimedia presentation | |
US9244913B2 (en) | Multi-language closed captioning | |
US8307403B2 (en) | Triggerless interactive television | |
CN105898517A (zh) | 字幕显示控制方法及装置 | |
US20070118850A1 (en) | Television signal reception method and module | |
US20130093673A1 (en) | Information processing apparatus, information processing method, storage medium, and program | |
CN106792114A (zh) | 字幕的切换方法及装置 | |
CN112055262B (zh) | 一种网络流媒体字幕的显示方法及系统 | |
CN114640874A (zh) | 字幕同步方法、装置、机顶盒及计算机可读存储介质 | |
CN101828388B (zh) | 运动图像记录方法及应用该方法的广播接收机 | |
CN102081948A (zh) | 视频字幕同步显示系统及其显示方法 | |
KR20050084307A (ko) | 저장매체에 대한 대화형 텔레비전 기록 및 재생을 위한폰트 라이브러리 | |
US9113041B2 (en) | Digital broadcast reception apparatus and method of providing additional content | |
CN115442662A (zh) | 基于hls流的字幕显示方法及装置 | |
CN103533288A (zh) | 图文电视处理方法和装置 | |
KR20050015070A (ko) | 내용 기반 검색을 위한 방송 프로그램 송수신 장치 및 방법 | |
WO2008099324A2 (en) | Method and systems for providing electronic programme guide data and of selecting a program from an electronic programme guide |
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 |