字幕补时时长的确定方法、装置、设备及可读存储介质与流程
未命名
10-20
阅读:57
评论:0
1.本技术实施例涉及多媒体通信技术领域,尤其是涉及一种字幕补时时长的确定方法、装置、设备及可读存储介质。
背景技术:
2.相关技术中,音视频直播流媒体由于网络波动等情况会导致数据帧丢失,数据帧的丢失会导致基于该直播流媒体进行人工智能识别出来的字幕的时间轴和该直播频流媒体的时间轴不能对齐,进而导致直播流媒体的画面内容与字幕内容不同步。
技术实现要素:
3.本技术实施例提供一种字幕补时时长的确定方法、装置、设备及可读存储介质,以解决直播流媒体的画面内容与字幕内容不同步的问题。
4.第一方面,本技术的实施例提供了一种字幕补时时长的确定方法,包括:
5.实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;
6.在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,所述第一帧长集合包括n个第一帧长,所述第二帧长集合包括m个第二帧长,m和n均为正整数,所述帧长权重值与所述流媒体数据帧的帧长出现次数相关,所述帧长出现次数包括获取到的多个流媒体数据帧中每个所述流媒体数据帧的帧长的出现次数;
7.根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。
8.可选地,所述预设条件包括以下至少一项:
9.存储的时间间隔值对应的总时长大于或等于预设时长阈值;
10.存储的时间间隔值的数量大于或等于预设数量阈值。
11.可选地,在所述根据所述流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合之前,所述方法还包括:
12.根据每个所述流媒体数据帧的帧长出现次数与帧长总出现次数的比值,获取每个所述流媒体数据帧的帧长权重值,所述帧长总出现次数是根据获取到的多个流媒体数据帧的各个帧长的出现次数之和得到的。
13.可选地,所述根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,包括:
14.在所述流媒体数据帧的帧长权重值处于第一预设权重范围的情况下,确定所述流媒体数据帧的帧长为第一帧长集合中的第一帧长;
15.在所述流媒体数据帧的帧长权重值处于第二预设权重范围的情况下,确定所述流媒体数据帧的帧长为第二帧长集合中的第二帧长,所述第二预设权重范围内的数值小于所
述第一预设权重范围内的数值。
16.可选地,本技术实施例的方法,还包括:
17.在至少一个所述流媒体数据帧的帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的情况下,发出告警信息;
18.其中,所述第三预设权重范围的数值大于或等于所述第二预设权重范围内的数值,且小于或等于所述第一预设权重范围内的数值。
19.可选地,所述告警信息包括帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的至少一个流媒体数据帧的帧长权重值的和。
20.可选地,所述根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定目标流媒体数据帧对应的字幕补时时长,包括:
21.获取所述第二帧长集合中的每个第二帧长与目标第一帧长之间的帧长时间差值,所述目标第一帧长包括所述第一帧长集合中出现频次最高的第一帧长;
22.根据获取到的至少一个帧长时间差,确定目标流媒体数据帧对应的字幕补时时长。
23.第二方面,本技术实施例还提供了一种字幕补时时长的确定装置,包括:
24.处理模块,用于实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;
25.第一确定模块,用于在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,所述第一帧长集合包括n个第一帧长,所述第二帧长集合包括m个第二帧长,m和n均为正整数所述帧长权重值与所述流媒体数据帧的帧长出现次数相关,所述帧长出现次数包括获取到的多个流媒体数据帧中每个所述流媒体数据帧的帧长的出现次数;
26.第二确定模块,用于根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。
27.第三方面,本技术实施例还提供了一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的字幕补时时长的确定方法的步骤。
28.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的字幕补时时长的确定方法的步骤。
29.本技术的实施例,实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合;根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定目标流媒体数据帧对应的字幕补时时长,通过该字幕补充时长能够对字幕的显示时间进行修正,进而能够实现流媒体的画面内容与字幕内容同步的目的,且无需提前获取流媒体数据帧的帧长,能够适用于不同的业务场景。
附图说明
30.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
31.图1表示ai字幕技术的应用流程图;
32.图2表示帧长示意图;
33.图3表示本技术实施例提供的字幕补时时长的确定方法的流程示意图;
34.图4表示本技术实施例中预设权重范围的关系示意图;
35.图5表示本技术实施例提供的字幕补时时长的确定方法的交互示意图;
36.图6表示本技术实施例提供的字幕补时时长的确定装置的模块示意图;
37.图7表示本技术实施例提供的电子设备的实施结构示意图。
具体实施方式
38.为使本技术要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本技术的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本技术的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
39.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
40.在本技术的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。另外,本文中术语“系统”和“网络”在本文中常可互换使用。
41.本技术实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术实施例中术语“多个”是指两个或两个以上,其它量词与之类似。
42.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
43.相关技术中,在网络多媒体载体(如网页、手机视频app等)中,观看直播视频时,实际上看到的是一个个连续的数据片段,在经过载体解析后,变成画面、声音,展示在用户面前。
44.在上述直播视频中,每一个数据片段,就是一个数据帧。
45.数据帧,可以分为视频帧、音频帧、字幕帧(流)。
46.视频帧、音频帧,两者的数据结构类似,都包含如下信息:
47.1)布尔型keyframe:是否是关键帧标识;
48.2)整型pictype:图像帧的类型(仅适用于图像帧);
49.3)整型imagewidth、imageheight、imagedepth、imagechannels:分别表示图像宽、高、深度、通道数;
50.4)buffer[]image:持有多通道图像的像素数据;
[0051]
5)整型samplerate、audiochannels:分别描述采样率和音频通道数;
[0052]
6)buffer[]samples:持有多通道音频的数据;
[0053]
7)bytebuffer data:持有与帧相关的数据流;
[0054]
8)长整型timestamp:当前帧被创建的时间戳,单位毫秒(该时间戳是相对于整个直播流的时间);
[0055]
9)object opaque:源数据,pointer、avframe、iplimage、mat等;
[0056]
根据上述描述可知,数据帧是一个能全面表达音频、视频数据信息的数据结构组成的。
[0057]
在数据帧的结构中,每一帧都有一个timestamp的数据。timestamp指的是在一个直播流中,当前帧所处的时间位置。一个直播流,起始帧的timestamp为0。timestamp的值跟现实世界的物理时间无关,只是相对于当前流的相对时间点,单位是毫秒。
[0058]
相关技术中,应用了人工智能(artificial intelligence,ai)字幕技术。在观看体育赛事的直播时,以往都是直接听解说,看直播画面。而现在多了一种方式,可以打开字幕,看到和直播中的音频完全同步的文字直播字幕。
[0059]
如图1所示,ai字幕技术在相关技术中应用的流程简图为:
[0060]
1)用户在视频app上选择一个直播节目,点击观看;
[0061]
2)视频服务端收到观看节目请求,即向流媒体服务器发起拉流请求;
[0062]
3)流媒体服务器返回数据流给视频服务端;
[0063]
4)视频服务端向字幕服务端发起请求;
[0064]
5)字幕服务端收到请求,向流媒体服务器获取多媒体数据流的请求;
[0065]
6)流媒体服务器返回多媒体数据流到字幕服务端;
[0066]
7)字幕服务端接到多媒体数据流数据,会对数据进行分析,将数据送入字幕丢帧补时装置中,进行丢帧补时检测。丢帧补时装置会根据当前帧和上一帧的时间差值,在丢帧补时中动态修正当前的帧率,计算出丢帧总时长。
[0067]
8)将拉取的音频流数据送入ai音频转写引擎;
[0068]
9)ai音频转写引擎将音频数据解析,通过算法解析出其对应的音频文本。
[0069]
10)ai音频转写引擎返回转写出的字幕数据到字幕服务器;
[0070]
11)字幕服务器从丢帧补时装置,获取经过修正的直播流的时间戳,结合当前返回的字幕时间戳,计算出当前字幕的真实的字幕时间戳;
[0071]
12)字幕服务端返回字幕和精确的时间戳数据给视频服务端;
[0072]
13)视频服务端将字幕和字幕时间戳返回给视频app;
[0073]
14)视频app将字幕和视频数据在app端,根据时间戳,进行同步播放,视频用户就会得到画面、声音、字幕同步播放的体验。
[0074]
如图2所示,假设一个直播流的起始音频帧为frame_1,结束音频帧为frame_n。frame_1的帧时长=t_1=ed_1-bg_1,并有bg_2=ed_1+1u,即当前帧的结束时间加上1个时间单位(毫秒),记为下一帧的起始时间。
[0075]
理论上来说,当直播过程中,如果多媒体服务器与字幕服务端之间的网络通信情况良好,不存在丢包现象,那么字幕服务端接收到的音频数据包,应该是连续的,即frame_1、frame_2、
…
、frame_(n-1)、frame_n。
[0076]
但是实际情况中,网络异常抖动的情况时有发生,这就导致可能我们字幕服务端收到的数据包是这样的:
[0077]
frame 1、frame 2、frame 4、frame 5、frame 7
…
[0078]
在上述描述中,我们发现并没有frame_3和frame_6,这就说明frame_3和frame_6在流媒体服务器和字幕服务端在网络通信的过程中丢包了。
[0079]
丢包会带来什么影响呢?结合图2可以看出,丢帧后,字幕服务端接受到的音频数据总时间长度就损失了t_3和t_6的时长,这就会导致:
[0080]
frame_3之后的字幕数据,转写出来的字幕的时间戳都会提前t_3的时长;
[0081]
frame_6之后的字幕数据,转写出来的字幕的时间戳都会提前t_3+t_6的时长;
[0082]
以此类推,如果在一个直播节目直播的过程中,服务器通信的状况不好,那么会导致字幕提前,提前的总时长就是丢帧的总时长。
[0083]
通常情况下,假设一个直播流的帧时长为20毫秒,在一个直播节目中,如果丢帧50次,那么就是1000毫秒,也就是1秒的提前量。在一个直播节目中,如果字幕相比视频提前1秒出现,那这个直播节目的体验感是非常差的。
[0084]
基于此,本技术实施例提供了一种字幕补时时长的确定方法,来进行补时处理,以减少由于丢帧导致的画面、声音与字幕不同步的问题。
[0085]
计算丢帧补时的方案可以采用以下计算方式来计算:
[0086]
丢帧的帧数*帧时长=丢帧总时长;
[0087]
然而上述计算方案是基于所有的帧长都是相同时长的前提来计算的,基于该计算方法,只要提前获知当前直播流的帧时长即可,而在此基础上,判定字幕服务端所接受到的两个连续的帧,是不是中间还有丢失的帧,只要计算两个帧的timestamp即可,如果timestamp之差,超过一个帧时长,即是存在丢帧,将丢失的帧时长补上,即可将此时间差带入ai字幕时间轴矫正模块,就可以得到正确的字幕时间戳。
[0088]
然而上述计算方案存在以下缺点:
[0089]
1)依赖于提前获知字幕流的帧长,不方便业务的变通,不能适应不同的业务场景,不可能所有的业务在对接完字幕服务端后,都会告知字幕服务端当前推流的帧时长为多少;
[0090]
2)默认的帧长不准确。一个直播流,如果预期是每帧20毫秒左右。实际上,直播流的帧率可能是20毫秒,可能是22毫秒。这个帧长是在一个范围,但是不一定是唯一固定的。每一路直播流的帧长不是固定不变的,合法的帧长可能发生变化,参数或者传值的方式可能会导致判定不准确;
[0091]
3)业务侧可能会将帧时长参数传错;
[0092]
4)直播节目的转播场景下,转播的流媒体业务侧,不知道帧长。
[0093]
基于此,如图3所示,本技术实施例提供了一种字幕补时时长的确定方法,应用于丢帧补时装置(或描述为字幕补时时长的确定装置),包括:
[0094]
步骤301:实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值。
[0095]
可选地,该丢帧补时装置从字幕服务端获取流媒体数据帧,然后计算当前获取到的流媒体数据帧(frame
current
)与上一次获取到的流媒体数据帧(frame
before
)之间的时间间隔值(frame_period),并将frame_period送入帧时长差缓存池(frame_preiod_pool)。
[0096]
本技术实施例中,可根据当前获取到的流媒体数据帧的时间戳(frame
current
.timestamp)与上一次获取到的流媒体数据帧的时间戳(frame
before
.timestamp)之间的差值来得到上述时间间隔值。
[0097]
步骤302:在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,所述第一帧长集合包括n个第一帧长,所述第二帧长集合包括m个第二帧长,m和n均为正整数,所述帧长权重值与所述流媒体数据帧的帧长出现次数相关,所述帧长出现次数包括获取到的多个流媒体数据帧中每个所述流媒体数据帧的帧长的出现次数。
[0098]
可选地,所述第一帧长的帧长权重值与第二帧长的帧长权重值对应不同的预设权重范围。
[0099]
可选地,上述第一帧长集合也可描述为合法帧长集合,上述第二帧长集合也可描述为非法帧长集合,上述第一帧长可描述为合法帧长,上述第二帧长可描述为非法帧长。
[0100]
需要说明的是,上述n个第一帧长的帧长值可以相同也可以不同,上述m个第二帧长的帧长值可以相同也可以不同。
[0101]
假设获取到的流媒体数据帧的帧长记为集合fl=[fl0,fl1,
…
,fln],其中,fli存在四个属性参数:fli.value(帧长值)、fli.count(帧长出现次数)、fli.weight(帧长权重值)以及fli.state(帧长状态),该帧长状态用于指示该帧长为第一帧长、第二帧长或告警帧长。
[0102]
步骤303:根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。
[0103]
本技术的实施例的方法,实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合;根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定目标流媒体数据帧对应的字幕补时时长,通过该字幕补充时长能够对字幕的显示时间进行修正,进而能够实现流媒体的画面内容与字幕内容同步的目的,且无需提前获取流媒体数据帧的帧长,能够适用于不同的业务场景。
[0104]
可选地,所述预设条件包括以下至少一项:
[0105]
第一项(时间维度):存储的时间间隔值对应的总时长大于或等于预设时长阈值;
[0106]
第二项(数量维度):存储的时间间隔值的数量大于或等于预设数量阈值。
[0107]
对于上述第一项:如果帧时长差缓存池中,累积的时间间隔值对应的总时长达到一定的时间(预设时长阈值),则触发进行字幕补时处理。该预设时长阈值为丢帧补时装置
初始设定的固定值,单位为毫秒。
[0108]
对于上述第二项:如果帧时长差缓存池中,缓存的时间间隔值的数量达到一定的数量(预设数量阈值),则触发进行字幕补时处理。该预设数量阈值也是丢帧补时装置初始设定的固定值,单位为个。
[0109]
本技术实施例中,并非是丢帧补时装置收到流媒体数据帧就确定字幕补时时长,而是在存储的时间间隔值满足上述至少一项条件的情况下,才进行确定字幕补时时长的处理过程,且通过设置上述两个维度能够灵活地对进行批量处理的时间间隔值的数量进行调整。
[0110]
可选地,在所述根据所述流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合之前,所述方法还包括:
[0111]
根据每个所述流媒体数据帧的帧长出现次数与帧长总出现次数的比值,获取每个所述流媒体数据帧的帧长权重值,所述帧长总出现次数是根据获取到的多个流媒体数据帧的各个帧长的出现次数之和得到的。
[0112]
具体的,一个帧长fli的帧长权重值fli.weight满足以下公式:
[0113][0114]
其中,fli.count表示流媒体数据帧fli的帧长出现次数,n+1为获取到的多个流媒体数据帧的总数量。
[0115]
这里,基于每个所述流媒体数据帧的帧长出现次数获取每个流媒体数据帧的帧长权重值,以便于后续基于该帧长权重值确定该帧长是合法帧长还是非法帧长,在存在非法帧长时基于非法帧长确定字幕补时时长。通过该方式能够更加准确地进行丢帧判断。
[0116]
可选地,所述根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,包括:
[0117]
在所述流媒体数据帧的帧长权重值处于第一预设权重范围的情况下,确定所述流媒体数据帧的帧长为第一帧长集合中的第一帧长;
[0118]
在所述流媒体数据帧的帧长权重值处于第二预设权重范围的情况下,确定所述流媒体数据帧的帧长为第二帧长集合中的第二帧长,所述第二预设权重范围内的数值小于所述第一预设权重范围内的数值。
[0119]
本技术实施例中,如图4所示,预先设置第一预设权重范围(正常域或合法域)、第二预设权重范围(非法域)和第三预设权重范围(告警域)三个范围。例如,设置非法帧长的帧长权重对应的第二预设权重范围(illegal_weight)为0《illegal_weight≤0.01,合法帧长的帧长权重对应的第一预设权重范围(legal_weight)为legal_weight》0.2,第三预设权重范围(warnning_weight)为0.01《warnning_weight≤0.2。
[0120]
将处于帧长权重值处于第二预设权重范围内的帧长记为集合(即第二帧长集合)illegal_fl_set=[fl
i1
,fl
i2
,..,fl
im
],该集合中包括m个帧长,当一个帧长的帧长权重值处于该第二预设权重范围内,认为该帧长为非法帧长,存在丢帧情况,需要进行补时。
[0121]
将处于帧长权重值处于第一预设权重范围内的帧长记为数组(即第一帧长集合)frame_length_array[fl
l0
,fl
l1
,
…
,fl
lp
],该数组中包括p个帧长,其中,fl
x
(0≤x≤p)为一个数据结构,包含帧长值v(fl
x
)、帧长的出现次数count(fl
x
)。
[0122]
可选地,本技术实施例的方法,还包括:
[0123]
在至少一个所述流媒体数据帧的帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的情况下,发出告警信息;
[0124]
其中,所述第三预设权重范围的数值大于或等于所述第二预设权重范围内的数值,且小于或等于所述第一预设权重范围内的数值。
[0125]
可选地,可将帧长权重值处于第三预设权重范围的帧长描述为告警帧长。
[0126]
本技术实施例中,在存储的时间间隔值满足预设条件的情况下,对满足预设条件的时间间隔值对应的一批流媒体数据帧执行一次字幕补时时长的确定过程,每次字幕补时时长的确定过程包括:根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合;根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。在每执行一次字幕补时时长的确定过程后,对存储的时间间隔值进行清零处理。
[0127]
在多次字幕补时时长的确定过程的执行过程中,在至少一个所述流媒体数据帧的帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的情况下,发出告警信息,即当流媒体数据帧的帧长由非法帧长变为告警帧长的情况下,进行一次告警信息的上报。
[0128]
通过进行告警信息的上报,能够及时通知运营人员查看直播状态,发现直播异常,关注直播节目的质量。
[0129]
可选地,所述告警信息包括帧长权重值处于所述第三预设权重范围内的至少一个流媒体数据帧的帧长权重值的和。
[0130]
该告警信息中至少一个流媒体数据帧的帧长权重值的和illegal_weight_total满足以下公式:
[0131][0132]
其中,illegal_fl_set[i].weight表示帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的q个帧长中的第i个帧长。
[0133]
这里,通过将帧长状态由非法帧长变为告警帧长的各个帧长权重值的和发送给运营人员,使得运营人员能够基于该告警信息确定直播质量。
[0134]
可选地,所述根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定目标流媒体数据帧对应的字幕补时时长,包括:
[0135]
获取第二帧长集合中的每个第二帧长与目标第一帧长之间的帧长时间差值,所述目标第一帧长包括所述第一帧长集合中出现频次最高的第一帧长;
[0136]
根据获取到的至少一个帧长时间差,确定目标流媒体数据帧对应的字幕补时时长。
[0137]
可选地,本技术实施例中,将上述目标第一帧长作为通用帧长。
[0138]
本技术实施例中,在存储的时间间隔值满足预设条件的情况下,将获取到的数据帧的帧长的帧长权重值与上述第一预设权重范围和第二预设权重范围进行匹配,如果一个帧长的帧长权重值处于第一预设权重范围,则认为该帧长是合法帧长,且该帧长的出现次数加1,如果一个帧长的帧长权重值处于第二预设权重范围,则认为该帧长为非法帧长,且
该帧长的出现次数加1。
[0139]
若某个帧长被确定为非法帧长,则需要计算补时时长,该非法帧长j与目标第一帧长的帧长时间差值t_gapj满足以下公式:
[0140]
t_gapj=flj.value
–
fl
max_count[frame_length_array]
.value;
[0141]
其中,flj.value表示非法帧长j的帧长值;
[0142]
fl
max_count[frame_length_array]
.value表示目标第一帧长的帧长值。
[0143]
最后,将基于各个非法帧长计算得到的帧长时间差值相加,得到字幕补时时长。具体的,字幕补时时长fix_timestamp满足以下公式:
[0144][0145]
其中,字幕补时时长的初始值设置为0。
[0146]
可选地,本技术实施例的方法,还包括:
[0147]
将所述字幕补时时长发送给字幕服务器。
[0148]
本技术实施例中,将字幕补时时长发送给字幕服务器,字幕服务器根据该字幕补时时长以及ai音频转写引擎返回的字幕时间戳(subtitle.timestamp),得到字幕真实时间戳。
[0149]
具体的,该字幕真实时间戳=subtitle.timestamp+fix_timestamp。
[0150]
下面结合图5对字幕补时的完整流程进行说明。
[0151]
该流程包括:
[0152]
(1)字幕服务端(字幕服务器)向流媒体服务器请求直播流的流媒体数据。
[0153]
(2)流媒体服务器实时返回流媒体数据帧。
[0154]
此处获取到流媒体的数据,单位为帧(frame),即每次获取到的数据是一帧。获取到的帧在直播流中是顺序的,不会出现乱序的情况。
[0155]
(3)字幕服务端将帧中的音频数据(buffer[]samples)送入到ai音频转写引擎。
[0156]
(4)将流媒体数据帧(frame)送入到丢帧补时装置。
[0157]
(5)丢帧补时装置计算出字幕补时时长。
[0158]
具体的,该丢帧补时装置按照上面所描述的方式计算出字幕补时时长。
[0159]
(6)ai音频转写引擎经过智能识别,分析出字幕文本数据以及文本时间戳(或字幕时间戳)。
[0160]
(7)ai音频转写引擎返回字幕文本数据以及文本时间戳。
[0161]
ai引擎由于仅仅是基于frame的音频数据(buffer[]samples)进行的音频分析,引擎不清楚数据的丢帧状态,因此引擎给出的字幕时间轴,是去除了丢帧时长的时间轴。
[0162]
(8)字幕服务端向丢帧补时装置发送获取最新的字幕补时时长的请求。
[0163]
(9)丢帧补时装置返回字幕补时时长。
[0164]
(10)字幕服务端根据字幕补时时长和文本时间戳,得到字幕真实时间戳。
[0165]
(11)字幕服务端向视频服务端返回字幕数据。
[0166]
该字幕数据包括字幕文本数据以及字幕真实时间戳。
[0167]
本技术实施例的方案,可有效提升直播字幕时间戳准确性、提升直播视频app中的画面字幕同步体验。而且无须提前获知直播流帧率,应用场景广泛简单,减少运营人员成
本。另外,根据直播流数据能够动态调整判定权重,可最大程度的提升判定的准确性。本技术实施例的装置可以单独部署可以作为独立服务组件,能够为不同场景下、具有不同帧时长的直播流提供丢帧补时服务。
[0168]
如图6所示,本技术实施例还提供了一种字幕补时时长的确定装置,包括:
[0169]
处理模块601,用于实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;
[0170]
第一确定模块602,用于在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,所述第一帧长集合包括n个第一帧长,所述第二帧长集合包括m个第二帧长,m和n均为正整数,所述帧长权重值与所述流媒体数据帧的帧长出现次数相关,所述帧长出现次数包括获取到的多个流媒体数据帧中每个所述流媒体数据帧的帧长的出现次数;
[0171]
第二确定模块603,用于根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。
[0172]
可选地,所述预设条件包括以下至少一项:
[0173]
存储的时间间隔值对应的总时长大于或等于预设时长阈值;
[0174]
存储的时间间隔值的数量大于或等于预设数量阈值。
[0175]
可选地,本技术实施例的装置,还包括:
[0176]
第一获取模块,用于在第一确定模块根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合之前,根据每个所述流媒体数据帧的帧长出现次数与帧长总出现次数的比值,获取每个所述流媒体数据帧的帧长权重值,所述帧长总出现次数是根据获取到的多个流媒体数据帧的各个帧长的出现次数之和得到的。
[0177]
可选地,所述第一确定模块包括:
[0178]
第一确定子模块,用于在所述流媒体数据帧的帧长权重值处于第一预设权重范围的情况下,确定所述流媒体数据帧的帧长为第一帧长集合中的第一帧长;
[0179]
第二确定子模块,用于在所述流媒体数据帧的帧长权重值处于第二预设权重范围的情况下,确定所述流媒体数据帧的帧长为第二帧长集合中的第二帧长,所述第二预设权重范围内的数值小于所述第一预设权重范围内的数值。
[0180]
可选地,本技术实施例的装置,还包括:
[0181]
告警模块,用于在至少一个所述流媒体数据帧的帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的情况下,发出告警信息;
[0182]
其中,所述第三预设权重范围的数值大于或等于所述第二预设权重范围内的数值,且小于或等于所述第一预设权重范围内的数值。
[0183]
可选地,所述告警信息包括帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的至少一个流媒体数据帧的帧长权重值的和。
[0184]
可选地,所述第二确定模块包括:
[0185]
第一获取子模块,用于获取第二帧长集合中的每个第二帧长与目标第一帧长之间的帧长时间差值,所述目标第一帧长包括所述第一帧长集合中出现频次最高的第一帧长;
[0186]
第三确定子模块,用于根据获取到的至少一个帧长时间差,确定目标流媒体数据帧对应的字幕补时时长。
[0187]
可选地,本技术实施例的装置,还包括:
[0188]
发送模块,用于将所述字幕补时时长发送给字幕服务器。
[0189]
该字幕补时时长的确定装置可以独立部署,也可以作为一个组件,如部署在字幕服务器中。
[0190]
需要说明的是,该装置是与上述字幕补时时长的确定对应的装置,上述方法实施例中所有实现方式均适用于该装置的实施例中,也能达到相同的技术效果。
[0191]
如图7所示,本技术实施例还提供了一种电子设备,包括:收发机704、处理器701、存储器703及存储在所述存储器703上并可在所述处理器701上运行的计算机程序,所述处理器701执行所述计算机程序时实现上述的图像输出方法的步骤。
[0192]
具体地,在本技术的一实施例中,处理器701用于实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;
[0193]
在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,所述第一帧长集合包括n个第一帧长,所述第二帧长集合包括m个第二帧长,m和n均为正整数,所述帧长权重值与所述流媒体数据帧的帧长出现次数相关,所述帧长出现次数包括获取到的多个流媒体数据帧中每个所述流媒体数据帧的帧长的出现次数;
[0194]
根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。
[0195]
可选地,所述预设条件包括以下至少一项:
[0196]
存储的时间间隔值对应的总时长大于或等于预设时长阈值;
[0197]
存储的时间间隔值的数量大于或等于预设数量阈值。
[0198]
可选地,所述处理器701还用于:
[0199]
根据每个所述流媒体数据帧的帧长出现次数与帧长总出现次数的比值,获取每个所述流媒体数据帧的帧长权重值,所述帧长总出现次数是根据获取到的多个流媒体数据帧的各个帧长的出现次数之和得到的。
[0200]
可选地,所述处理器701还用于:
[0201]
在所述流媒体数据帧的帧长权重值处于第一预设权重范围的情况下,确定所述流媒体数据帧的帧长为第一帧长集合中的第一帧长;
[0202]
在所述流媒体数据帧的帧长权重值处于第二预设权重范围的情况下,确定所述流媒体数据帧的帧长为第二帧长集合中的第二帧长,所述第二预设权重范围内的数值小于所述第一预设权重范围内的数值。
[0203]
可选地,所述处理器701还用于:
[0204]
在至少一个所述流媒体数据帧的帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的情况下,发出告警信息;
[0205]
其中,所述第三预设权重范围的数值大于或等于所述第二预设权重范围内的数值,且小于或等于所述第一预设权重范围内的数值。
[0206]
可选地,所述告警信息包括帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的至少一个流媒体数据帧的帧长权重值的和。
[0207]
可选地,所述处理器701还用于:
[0208]
获取第二帧长集合中的每个第二帧长与目标第一帧长之间的帧长时间差值,所述目标第一帧长包括所述第一帧长集合中出现频次最高的第一帧长;
[0209]
根据获取到的至少一个帧长时间差,确定目标流媒体数据帧对应的字幕补时时长。
[0210]
可选地,所述处理器701还用于:
[0211]
将所述字幕补时时长发送给字幕服务器。
[0212]
需要说明的是,在图7中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器701代表的一个或多个处理器和存储器703代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口702提供接口。收发机704可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。针对不同的终端,用户接口705还可以是能够外接内接需要设备的接口,连接的设备包括但不限于小键盘、显示器、扬声器、麦克风、操纵杆等。处理器701负责管理总线架构和通常的处理,存储器703可以存储处理器701在执行操作时所使用的数据。
[0213]
本领域技术人员可以理解,实现上述实施例的全部或者部分步骤可以通过硬件来完成,也可以通过计算机程序来指示相关的硬件来完成,所述计算机程序包括执行上述方法的部分或者全部步骤的指令;且该计算机程序可以存储于一可读存储介质中,存储介质可以是任何形式的存储介质。
[0214]
另外,本技术具体实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述字幕补时时长的确定方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0215]
在本技术所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0216]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0217]
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述收发方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0218]
以上所述的是本技术的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本技术所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本技术的保护范围内。
技术特征:
1.一种字幕补时时长的确定方法,其特征在于,包括:实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;在存储的时间间隔值满足预设条件的情况下,根据所述流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,所述第一帧长集合包括n个第一帧长,所述第二帧长集合包括m个第二帧长,m和n均为正整数,所述帧长权重值与所述流媒体数据帧的帧长出现次数相关,所述帧长出现次数包括获取到的多个流媒体数据帧中每个所述流媒体数据帧的帧长的出现次数;根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。2.根据权利要求1所述的方法,其特征在于,所述预设条件包括以下至少一项:存储的时间间隔值对应的总时长大于或等于预设时长阈值;存储的时间间隔值的数量大于或等于预设数量阈值。3.根据权利要求1所述的方法,其特征在于,在所述根据所述流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合之前,所述方法还包括:根据每个所述流媒体数据帧的帧长出现次数与帧长总出现次数的比值,获取每个所述流媒体数据帧的帧长权重值,所述帧长总出现次数是根据获取到的多个流媒体数据帧的各个帧长的出现次数之和得到的。4.根据权利要求3所述的方法,其特征在于,所述根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,包括:在所述流媒体数据帧的帧长权重值处于第一预设权重范围的情况下,确定所述流媒体数据帧的帧长为第一帧长集合中的第一帧长;在所述流媒体数据帧的帧长权重值处于第二预设权重范围的情况下,确定所述流媒体数据帧的帧长为第二帧长集合中的第二帧长,所述第二预设权重范围内的数值小于所述第一预设权重范围内的数值。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在至少一个所述流媒体数据帧的帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的情况下,发出告警信息;其中,所述第三预设权重范围的数值大于或等于所述第二预设权重范围内的数值,且小于或等于所述第一预设权重范围内的数值。6.根据权利要求5所述的方法,其特征在于,所述告警信息包括帧长权重值所处的预设权重范围由第二预设权重范围变为第三预设权重范围的至少一个流媒体数据帧的帧长权重值的和。7.根据权利要求1所述的方法,其特征在于,所述根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定目标流媒体数据帧对应的字幕补时时长,包括:获取所述第二帧长集合中的每个第二帧长与目标第一帧长之间的帧长时间差值,所述目标第一帧长包括所述第一帧长集合中出现频次最高的第一帧长;根据获取到的至少一个帧长时间差,确定目标流媒体数据帧对应的字幕补时时长。
8.一种字幕补时时长的确定装置,其特征在于,包括:处理模块,用于实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;第一确定模块,用于在存储的时间间隔值满足预设条件的情况下,根据所述流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,所述第一帧长集合包括n个第一帧长,所述第二帧长集合包括m个第二帧长,m和n均为正整数,所述帧长权重值与所述流媒体数据帧的帧长出现次数相关,所述帧长出现次数包括获取到的多个流媒体数据帧中每个所述流媒体数据帧的帧长的出现次数;第二确定模块,用于根据所述第一帧长集合中的第一帧长和所述第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。9.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的字幕补时时长的确定方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的字幕补时时长的确定方法的步骤。
技术总结
本申请提供一种字幕补时时长的确定方法、装置、设备及可读存储介质,解决直播流媒体的画面内容与字幕内容不同步的问题。本申请的方法包括:实时获取流媒体数据帧,并存储当前获取的流媒体数据帧与上一次获取的流媒体数据帧之间的时间间隔值;在存储的时间间隔值满足预设条件的情况下,根据流媒体数据帧的帧长权重值与预设权重范围的关系,确定第一帧长集合和第二帧长集合,第一帧长的帧长权重值与第二帧长的帧长权重值对应不同的预设权重范围,流媒体数据帧的帧长权重值与流媒体数据帧的帧长出现次数相关;根据第一帧长集合中的第一帧长和第二帧长集合中的第二帧长的帧长时间差值,确定字幕补时时长。确定字幕补时时长。确定字幕补时时长。
技术研发人员:邵传贤 宋国栋 陆彦良 马兵 周谧
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2023.07.11
技术公布日:2023/10/8
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/