一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式直播插帧系统及方法与流程

2022-07-30 19:13:44 来源:中国专利 TAG:


1.本发明涉及视频处理技术领域,尤其涉及一种分布式直播插帧系统及方法。


背景技术:

2.目前的插帧技术主要依赖于ai引擎对相邻帧进行处理,以创造出位于相邻帧之间的插帧,进而通过提高视频播放帧数的方式提高视频播放流畅度。当前用于直播的插帧技术中往往只是针对比较平滑场景和运动缓慢的做插帧,而对于剧烈运动的场景如:体育比赛,往往很难有明显的改善。直播场景下的常见需求为将25帧/s的视频提升为50帧/s,而目前的ai引擎对算力要求较高,常见的ai引擎在单机工作模式下效率仅为5帧/s,难以满足直播场景下对插帧数量的需求,无法对运动直播场景提供支持。
3.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是相关技术。


技术实现要素:

4.本发明的主要目的在于提供一种分布式直播插帧系统及方法,旨在解决的常见的直播插帧方式插帧效率低,无法满足直播场景下对插帧数量的需求技术问题。
5.为实现上述目的,本发明提供了一种分布式直播插帧系统,所述分布式直播插帧系统包括:分别部署于不同主机上的解码器、编码器以及多个ai引擎;
6.所述解码器,用于对获取到的视频流进行解码,得到音频数据、视频帧和视频帧元数据,将所述视频帧存入目标数据库,并将所述音频数据和所述视频帧元数据存入消息队列;
7.各个所述ai引擎,用于从所述消息队列中获取所述解码器解码得到的视频帧元数据,并从所述目标数据库中拉取所述视频帧元数据对应的视频帧,根据拉取得到的视频帧生成中间帧,并生成所述中间帧对应的插帧元数据,将所述中间帧存入所述目标数据库,并将所述插帧元数据存入所述消息队列;
8.所述编码器,用于从所述消息队列中获取所述解码器解码得到的音频数据以及所述ai引擎生成的插帧元数据,并从所述目标数据库中拉取所述插帧元数据对应的视频帧和中间帧,将所述视频帧、所述中间帧以及所述音频数据合并编码后输出目标视频流。
9.可选地,所述编码器,还用于在本地缓冲得到所述插帧元数据对应的视频帧和中间帧时,对所述目标数据库中的所述中间帧进行删除,将所述中间帧对应的第一帧号记录于预设整形数组中,在所述预设整形数组中以所述第一帧号为基础向前查找所述第一帧号对应的前一中间帧帧号,若查找到所述预设整形数组中记录有所述第一帧号对应的前一中间帧帧号,则对所述目标数据库中的所述视频帧进行删除。
10.可选地,所述编码器,还用于在所述预设整形数组中以所述第一帧号为基础向后查找所述第一帧号对应的后一中间帧帧号,若查找到所述预设整形数组中记录有所述第一帧号对应的后一中间帧帧号,则对所述目标数据库中所述中间帧对应的后一视频帧进行删
除。
11.可选地,所述编码器,还用于在输出所述目标视频流后,对所述目标数据库中帧号小于所述第一帧号的视频帧和中间帧进行删除。
12.可选地,所述解码器,还用于为解码得到的视频帧进行编号,生成所述视频帧对应的第二帧号,根据所述第二帧号生成所述视频帧对应的视频帧元数据,将包含所述第二帧号的视频帧存入所述目标数据库,并将所述音频数据和所述视频帧元数据存入消息队列;
13.各个所述ai引擎,还用于确定拉取得到的视频帧对应的第三帧号,根据所述第三帧号生成所述中间帧对应的第四帧号,根据所述第三帧号和所述第四帧号生成所述中间帧对应的插帧元数据,将包含所述第四帧号的中间帧存入所述目标数据库,并将所述插帧元数据存入所述消息队列;
14.所述编码器,还用于从获取得到的插帧元数据中提取第五帧号和第六帧号,从所述目标数据库中拉取所述第五帧号和所述第六帧号分别对应的视频帧和中间帧。
15.可选地,所述解码器,还用于为解码得到的视频帧进行编号,生成所述视频帧对应的第一奇数帧号,并根据所述第一奇数帧号生成所述视频帧对应的视频帧元数据;
16.各个所述ai引擎,还用于确定拉取得到的视频帧对应的第二奇数帧号,根据所述第二奇数帧号相邻的偶数生成所述中间帧对应的第一偶数帧号,根据所述第二奇数帧号和所述第一偶数帧号生成所述中间帧对应的插帧元数据。
17.可选地,所述解码器,还用于为解码得到的视频帧进行编号,生成所述视频帧对应的第二偶数帧号,并根据所述第二偶数帧号生成所述视频帧对应的视频帧元数据;
18.各个所述ai引擎,还用于确定拉取得到的视频帧对应的第三偶数帧号,根据所述第三偶数帧号相邻的奇数生成所述中间帧对应的第三奇数帧号,根据所述第三偶数帧号和所述第三奇数帧号生成所述中间帧对应的插帧元数据。
19.可选地,所述编码器,还用于获取视频绝对时间和音频绝对时间,判断所述视频绝对时间是否大于所述音频绝对时间,在所述视频绝对时间大于所述音频绝对时间时,从所述消息队列中获取所述解码器解码得到的音频数据,并根据所述音频数据对应的显示时间戳对所述音频绝对时间进行更新。
20.可选地,所述编码器,还用于在所述视频绝对时间小于所述音频绝对时间时,从所述消息队列中获取所述ai引擎生成的插帧元数据,根据所述插帧元数据从所述目标数据库中拉取对应的视频帧和中间帧,根据所述视频帧或所述中间帧对应的显示时间戳对所述视频绝对时间进行更新。
21.此外,为实现上述目的,本发明还提出一种分布式直播插帧方法,所述方法应用于如上所述的分布式直播插帧系统,所述分布式直播插帧系统包括:分别部署于不同主机上的解码器、编码器以及多个ai引擎,所述方法包括:
22.所述解码器对获取到的视频流进行解码,得到音频数据、视频帧和视频帧元数据,将所述视频帧存入目标数据库,并将所述音频数据和所述视频帧元数据存入消息队列;
23.各个所述ai引擎从所述消息队列中获取所述解码器解码得到的视频帧元数据,并从所述目标数据库中拉取所述视频帧元数据对应的视频帧,根据拉取得到的视频帧生成中间帧,并生成所述中间帧对应的插帧元数据,将所述中间帧存入所述目标数据库,并将所述插帧元数据存入所述消息队列;
24.所述编码器从所述消息队列中获取所述解码器解码得到的音频数据以及所述ai引擎生成的插帧元数据,并从所述目标数据库中拉取所述插帧元数据对应的视频帧和中间帧,将所述视频帧、所述中间帧以及所述音频数据合并编码后输出目标视频流。
25.本发明中的分布式直播插帧系统包括:分别部署于不同主机上的解码器、编码器以及多个ai引擎;解码器对获取到的视频流进行解码,得到音频数据、视频帧和视频帧元数据,将视频帧存入目标数据库,并将音频数据和视频帧元数据存入消息队列;各个ai引擎于从消息队列中获取解码器解码得到的视频帧元数据,并从目标数据库中拉取视频帧元数据对应的视频帧,根据拉取得到的视频帧生成中间帧,并生成中间帧对应的插帧元数据,将中间帧存入目标数据库,并将插帧元数据存入消息队列;编码器从消息队列中获取解码器解码得到的音频数据以及ai引擎生成的插帧元数据,并从目标数据库中拉取插帧元数据对应的视频帧和中间帧,将视频帧、中间帧以及音频数据合并编码后输出目标视频流。通过上述方式,利用分布式部署的多个ai引擎执行高质量视频的插帧任务,能够在短时间内生成多帧插帧数据,满足直播场景下对插帧数量的需求,提高了直播插帧效率,提升了直播视频流畅度。
附图说明
26.图1为本发明分布式直播插帧系统第一实施例的结构框图;
27.图2为本发明分布式直播插帧系统一实施例的视频帧清理示意图;
28.图3为本发明分布式直播插帧方法第一实施例的流程示意图。
29.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
30.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
31.本发明实施例提供了一种分布式直播插帧系统,参照图1,图1为本发明分布式直播插帧系统第一实施例的结构框图。
32.本实施例中,所述分布式直播插帧系统包括:分别部署于不同主机上的解码器10、编码器30以及多个ai引擎20;
33.所述解码器10,用于对获取到的视频流进行解码,得到音频数据、视频帧和视频帧元数据,将所述视频帧存入目标数据库,并将所述音频数据和所述视频帧元数据存入消息队列。
34.优选地,目标数据库为key-value数据库,以键值对存储视频帧数据,解码器10为解码得到的视频帧进行编号,生成各视频帧对应的帧号,根据一一对应的帧号和视频帧生成key-value数据,存入key-value数据库。
35.应当理解的是,相比于消息总线,本实施例中采用key-value数据库进行视频帧传输的优势在于:视频帧较大(1080p的视频每帧视频帧大小为3兆),利用传统的消息总线进行传输,会造成消息总线性能下降;并且,消息总线存在拉取消息后对消息删除的特性,使用消息总线进行传输,ai引擎20拉取视频帧后,还需再次上传,占用了多余的流量,而采用key-value数据库进行视频帧传输,ai引擎20拉取视频帧后,只需将新生成的中间帧存入数据库,无需再次上传拉取的视频帧,传输性能更好。
36.相应地,解码器10根据各视频帧对应的帧号和显示时间戳(presentation time stamp,pts)生成视频帧元数据,显示时间戳用于告知播放器显示该视频帧的时间,本实施例中将视频帧和元数据拆分,通过不同方式进行传输,其中元数据用于通知ai引擎20哪些视频帧已准备完成。可选地,解码器10为每一帧视频帧生成对应的视频帧元数据,即解码器10生成的每一个视频帧元数据中仅包含一帧视频帧的帧号和显示时间戳,例如:{frameno1:1,pts1:1234567}。优选地,解码器10以每个相邻两帧视频帧对应的帧号和显示时间戳生成视频帧元数据,例如:解码器10解码得到a视频帧、b视频帧、c视频帧
……
,以a视频帧和b视频帧对应的帧号和显示时间戳生成一个视频帧元数据,以b视频帧和c视频帧对应的帧号和显示时间戳生成一个视频帧元数据,通过这种方式,为ai引擎20指示编码任务,使得ai引擎20在获取到视频帧元数据时,根据视频帧元数据拉取两帧相邻的视频帧,从而执行相应的插帧任务:生成两帧相邻的视频帧对应的中间帧。
37.在另一种实现方式中,解码器10根据插帧任务对应的插帧频率进行视频帧元数据的生成:以解码得到的第一帧视频帧为起点,根据插帧频率确定插帧任务对应的相邻两帧参考视频帧。解码器10根据相邻两帧参考视频帧对应的帧号和显示时间戳生成一个视频帧元数据,针对无需作为插帧任务参考的视频帧,解码器10为每一帧视频帧生成对应的视频帧元数据。例如,插帧任务对应的插帧频率为每4帧生成一个中间帧,确定第一个插帧任务对应的相邻两帧参考视频帧为第四帧视频帧和第五帧视频帧,为前三帧视频帧分别生成对应的视频帧元数据,根据第四帧视频帧和第五帧视频帧对应的帧号和显示时间戳生成一个视频帧元数据。
38.各个所述ai引擎20,用于从所述消息队列中获取所述解码器10解码得到的视频帧元数据,并从所述目标数据库中拉取所述视频帧元数据对应的视频帧,根据拉取得到的视频帧生成中间帧,并生成所述中间帧对应的插帧元数据,将所述中间帧存入所述目标数据库,并将所述插帧元数据存入所述消息队列。
39.需要说明的是,以消息队列中存储的视频帧元数据为解码器10以每个相邻两帧视频帧对应的帧号和显示时间戳生成的为例进行说明:ai引擎20从目标数据库中一次拉取两帧视频帧,多个ai引擎20在插帧任务完成时,各自按照队列顺序从消息队列中获取视频帧元数据,根据视频帧元数据的相邻视频帧的帧号从目标数据库中拉取相邻的x视频帧和y视频帧,根据相邻两帧视频帧生成中间帧,并生成中间帧对应的帧号,为了避免编码器漏掉第一帧视频帧,根据中间帧的前一视频帧和中间帧分别对应的帧号和显示时间戳生成插帧元数据,即根据x视频帧和中间帧分别对应的帧号和显示时间戳生成插帧元数据,例如,ai引擎20从消息队列中获取的元数据为{frameno1:1,frameno2:3,pts1:1234567,pts2:1234569},其中,帧号1和帧号3对应相邻两帧视频帧,ai引擎20存入消息队列的元数据为{frameno1:1,frameno2:2,pts1:1234567,pts2:1234568},其中,中间帧对应的帧号为2。
40.应当理解的是,本实施例的多个ai引擎20根据自身设置的插帧生成算法根据相邻两帧视频帧生成中间帧,例如,基于光流法对相邻两帧视频帧进行分析,确定两帧数据中相同位移点之间的中间位置,从而生成中间帧。多个ai引擎20在完成插帧任务后,生成中间帧对应的目标视频帧元数据存入消息队列,使得编码器30获取已插帧完成的视频帧。
41.所述编码器30,用于从所述消息队列中获取所述解码器10解码得到的音频数据以及所述ai引擎20生成的插帧元数据,并从所述目标数据库中拉取所述插帧元数据对应的视
频帧和中间帧,将所述视频帧、所述中间帧以及所述音频数据合并编码后输出目标视频流。
42.需要说明的是,以消息队列中存储的视频帧元数据为解码器10以每个相邻两帧视频帧对应的帧号和显示时间戳生成的为例进行说明:多个ai引擎20从消息队列中拉取解码器10生成的元数据,此时消息队列自动对该元数据进行删除,ai引擎20生成中间帧后,根据前一视频帧和中间帧对应的帧号生成插帧元数据,存入消息队列,编码器30从消息队列中获取的插帧元数据为插帧处理后由ai引擎20生成的视频帧元数据,其中包括视频帧和中间帧分别对应的帧号。从插帧元数据中提取帧号,基于提取得到的帧号从目标数据库中拉取对应的视频帧和中间帧,根据获取得到的视频帧、中间帧以及音频数据合并编码后输出目标视频流。
43.在具体实现中,所述编码器30从目标数据库中拉取视频帧和中间帧于本地缓冲时,按照第一清理策略对目标数据库中的数据进行清理,在输出目标视频流后,按照第二清理策略再次对目标数据库中的数据进行清理。第一清理策略为对目标数据库中的当前拉取的中间帧进行清理,判断该中间帧的前一中间帧是否已被清理,若是,则对目标数据库中的当前拉取的视频帧进行清理,第二清理策略为对目标数据库中帧号小于当前拉取的中间帧的帧号的数据进行清理。
44.具体地,所述解码器10,还用于为解码得到的视频帧进行编号,生成所述视频帧对应的第二帧号,根据所述第二帧号生成所述视频帧对应的视频帧元数据,将包含所述第二帧号的视频帧存入所述目标数据库,并将所述音频数据和所述视频帧元数据存入消息队列;
45.各个所述ai引擎20,还用于确定拉取得到的视频帧对应的第三帧号,根据所述第三帧号生成所述中间帧对应的第四帧号,根据所述第三帧号和所述第四帧号生成所述中间帧对应的插帧元数据,将包含所述第四帧号的中间帧存入所述目标数据库,并将所述插帧元数据存入所述消息队列;;
46.所述编码器30,还用于从获取得到的插帧元数据中提取第五帧号和第六帧号,从所述目标数据库中拉取所述第五帧号和所述第六帧号分别对应的视频帧和中间帧。
47.在具体实现中,优选地,解码器10根据相邻两帧视频帧对应的帧号生成视频帧元数据,便于ai引擎20获取执行插帧任务的参考视频帧,即直接拉取两帧视频帧用于生成中间帧,ai引擎20根据获取的视频帧和处理得到的中间帧对应的帧号生成插帧元数据,便于编码器30直接拉取两帧视频帧用于合并编码。其中第一-第五帧号用于相互区分,分别表征不同视频帧或中间帧的帧号。
48.本实施例中的分布式直播插帧系统包括:分别部署于不同主机上的解码器10、编码器30以及多个ai引擎20;解码器10对获取到的视频流进行解码,得到音频数据、视频帧和视频帧元数据,将视频帧存入目标数据库,并将音频数据和视频帧元数据存入消息队列;各个ai引擎20于从消息队列中获取解码器10解码得到的视频帧元数据,并从目标数据库中拉取视频帧元数据对应的视频帧,根据拉取得到的视频帧生成中间帧,并生成中间帧对应的插帧元数据,将中间帧存入目标数据库,并将插帧元数据存入消息队列;编码器30从消息队列中获取解码器10解码得到的音频数据以及ai引擎20生成的插帧元数据,并从目标数据库中拉取插帧元数据对应的视频帧和中间帧,将视频帧、中间帧以及音频数据合并编码后输出目标视频流。通过上述方式,利用分布式部署的多个ai引擎20执行高质量视频的插帧任
务,能够在短时间内生成多帧插帧数据,满足直播场景下对插帧数量的需求,提高了直播插帧效率,提升了直播视频流畅度。
49.参照图1,本发明分布式直播插帧系统第二实施例中,所述编码器30,还用于在本地缓冲得到所述插帧元数据对应的视频帧和中间帧时,对所述目标数据库中的所述中间帧进行删除,将所述中间帧对应的第一帧号记录于预设整形数组中,在所述预设整形数组中以所述第一帧号为基础向前查找所述第一帧号对应的前一中间帧帧号,若查找到所述预设整形数组中记录有所述第一帧号对应的前一中间帧帧号,则对所述目标数据库中的所述视频帧进行删除。
50.可以理解的是,编码器30从消息队列中获取元数据,根据元数据从目标数据库拉取视频帧,缓冲于本地,在缓冲达到一定量或缓冲时间达到一定时间后,对音频数据、视频帧和中间帧进行合并编码,生成输出目标视频流。编码器30以帧对的形式从目标数据库拉取视频帧和中间帧,在本地缓冲得到帧对时,直接对目标数据库中该帧对对应的中间帧进行删除。
51.需要说明的是,在解码器10为解码得到的视频帧编上奇数帧号、ai引擎20为生成的中间帧编上偶数编号时,第一帧号为偶数;在解码器10为解码得到的视频帧编上偶数帧号、ai引擎20为生成的中间帧编上奇数编号时,第一帧号为奇数。预设整形数组为提前设置的用于记录被删除的帧,例如,定义一个512元素的类型为整形的数组记录被删除的帧,名字为frameslot[512],在帧z被记录删除,则等价于frameslot[x%512]==x,(为了节省资源并不完全等价于传统上理解的帧x被删除)。由于超出这个范围的帧往往是超时导致的,直接清理即可。
[0052]
应当理解的是,预设整形数组中记录有被删除的帧,由于本实施例中实现的是分布式插帧方法,中间帧的生成过程不一定是按顺序进行的,本实施例中的视频帧作为中间帧和前一中间帧的插帧生成参考数据,在预设整形数组中同时记录有中间帧的第一帧号和前一中间帧的前一中间帧帧号时,对目标数据库中的视频帧进行删除,并继续向前查找,对已清理的相邻两中间帧之间的视频帧进行查找清理。
[0053]
以下结合实例对本实施例的方法进行说明,参照图2,图2为本发明分布式直播插帧系统一实施例的视频帧清理示意图,本实例中视频帧对应的帧号为奇数帧号,中间帧对应的帧号为偶数帧号,其中,矩形表征按顺序排列的视频帧,矩形下方箭头用于表示对应帧被标记删除,当前已本地缓冲完成的帧对为(7,8),根据当前帧对的起始帧号7,可直接删除目标数据库中本帧对对应的偶数帧8,并记录该帧号8被删除frameslot[8%512]==8。以起始帧号或中间帧对应的帧号向前查找,当上一个偶数帧6被记录删除时,删除目标数据库中的帧7并记录,并且当帧4被记录删除时,如果帧5未被记录删除,则删除目标数据库中的帧5并记录。
[0054]
所述编码器30,还用于在所述预设整形数组中以所述第一帧号为基础向后查找所述第一帧号对应的后一中间帧帧号,若查找到所述预设整形数组中记录有所述第一帧号对应的后一中间帧帧号,则对所述目标数据库中所述中间帧对应的后一视频帧进行删除。
[0055]
应当理解的是,中间帧的后一视频帧作为该中间帧和后一中间帧的插帧生成参考数据,在预设整形数组中同时记录有中间帧的第一帧号和后一中间帧的后一中间帧帧号时,对目标数据库中该中间帧的后一视频帧进行删除。参照图2,以起始帧号或中间帧对应
的帧号向后查找,当下一个偶数帧10被记录删除时,删除目标数据库中的帧9并记录,并且当帧12被记录删除时,如果帧11未被记录删除,则删除目标数据库中的帧11并记录。
[0056]
在具体实现中,清理帧是并行执行的,但是有极低概率会出现并行访问异常,导致帧漏清理,为了做异常保护,本实施例采用上述前后查找中间帧的方式进行目标数据库清理。
[0057]
所述编码器30,还用于在输出所述目标视频流后,对所述目标数据库中帧号小于所述第一帧号的视频帧和中间帧进行删除。
[0058]
需要说明的是,本实施例中设置有超时帧的清理流程,在当前帧编码进目标视频流进行输出后,将目标数据库中帧号小于当前帧的帧全部清除。
[0059]
本实施例中的编码器30在本地缓冲得到插帧元数据对应的视频帧和中间帧时,对目标数据库中的中间帧进行删除,将中间帧对应的第一帧号记录于预设整形数组中,在预设整形数组中以第一帧号为基础向前查找第一帧号对应的前一中间帧帧号,若查找到预设整形数组中记录有第一帧号对应的前一中间帧帧号,则对目标数据库中的视频帧进行删除。通过上述方式,删除已编码输出的视频帧和中间帧,节省内存资源并提高内存资源利用效率,避免了分布式直播插帧过程中出现并行访问异常对插帧效率造成的影响,进一步提高了直播插帧效率,提升了直播视频流畅度。
[0060]
参照图1,本发明分布式直播插帧系统第三实施例中,所述解码器10,还用于为解码得到的视频帧进行编号,生成所述视频帧对应的第一奇数帧号,并根据所述第一奇数帧号生成所述视频帧对应的视频帧元数据;
[0061]
各个所述ai引擎20,还用于确定拉取得到的视频帧对应的第二奇数帧号,根据所述第二奇数帧号相邻的偶数生成所述中间帧对应的第一偶数帧号,根据所述第二奇数帧号和所述第一偶数帧号生成所述中间帧对应的插帧元数据。
[0062]
应当理解的是,出于处理需求,本实施例中的解码器10为每一帧编上奇数帧号,例如:1,3,5
……
,解码器10根据相邻两帧视频帧对应的帧号生成视频帧元数据,例如:根据相邻两帧视频帧的帧号1和帧号3生成{frameno1:1,frameno2:3,pts1:1234567,pts2:1234569}。
[0063]
需要说明的是,本实施例中的ai引擎20在根据相邻两帧视频帧生成中间帧后,将相邻两帧视频帧分别对应的两奇数帧号的中间偶数帧号作为中间帧的帧号,根据相邻两帧视频帧中的前一视频帧的奇数帧号和中间帧的偶数帧号生成插帧元数据。例如,ai引擎20从消息队列中获取到的视频帧元数据为{frameno1:1,frameno2:3,pts1:1234567,pts2:1234569},将2作为生成的中间帧的偶数帧号,将{frameno1:1,frameno2:2,pts1:1234567,pts2:1234568}存入消息队列。本实施例中通过奇数和偶数对原视频流中的视频帧与ai引擎20生成的中间帧进行区分,便于编码器30对数据进行区分和编码排序,进一步提升数据处理效率,提升了直播视频流畅度。
[0064]
参照图1,本发明分布式直播插帧系统第四实施例中,所述解码器10,还用于为解码得到的视频帧进行编号,生成所述视频帧对应的第二偶数帧号,并根据所述第二偶数帧号生成所述视频帧对应的视频帧元数据;
[0065]
各个所述ai引擎20,还用于确定拉取得到的视频帧对应的第三偶数帧号,根据所述第三偶数帧号相邻的奇数生成所述中间帧对应的第三奇数帧号,根据所述第三偶数帧号
和所述第三奇数帧号生成所述中间帧对应的插帧元数据。
[0066]
应当理解的是,本实施例中的解码器10为每一帧编上偶数帧号,例如:0,2,4
……
,解码器10根据相邻两帧视频帧对应的帧号生成视频帧元数据,例如:根据相邻两帧视频帧的帧号2和帧号4生成{frameno1:2,frameno2:4,pts1:1234568,pts2:1234570}。
[0067]
需要说明的是,本实施例中的ai引擎20在根据相邻两帧视频帧生成中间帧后,将相邻两帧视频帧分别对应的两偶数帧号的中间奇数帧号作为中间帧的帧号,根据相邻两帧视频帧中的前一视频帧的偶数帧号和中间帧的奇数帧号生成插帧元数据。例如,ai引擎20从消息队列中获取到的视频帧元数据为{frameno1:2,frameno2:4,pts1:1234568,pts2:1234570},将3作为生成的中间帧的奇数帧号,将{frameno1:2,frameno2:3,pts1:1234568,pts2:1234569}存入消息队列。本实施例中通过偶数和奇数对原视频流中的视频帧与ai引擎20生成的中间帧进行区分,便于编码器30对数据进行区分和编码排序,进一步提升数据处理效率,提升了直播视频流畅度。
[0068]
参照图1,本发明分布式直播插帧系统第五实施例中,所述编码器30,还用于获取视频绝对时间和音频绝对时间,判断所述视频绝对时间是否大于所述音频绝对时间,在所述视频绝对时间大于所述音频绝对时间时,从所述消息队列中获取所述解码器10解码得到的音频数据,并根据所述音频数据对应的显示时间戳对所述音频绝对时间进行更新。
[0069]
应当理解的是,本实施例中提前定义两个计时器:vtime和atime,其中vtime用于记录当前视频的视频绝对时间,atime用于记录当前视频的音频绝对时间,起始阶段vtime=0,atime=0。在vtime》atime时,从消息队列中按照队列顺序获取解码器10解码得到的音频数据,并根据音频数据对应的显示时间戳计算对应的时间,赋值给atime,从而对atime进行更新,返回执行所述判断所述视频绝对时间是否大于所述音频绝对时间的步骤。
[0070]
在具体实现中,根据以下公式计算音频数据对应的时间:
[0071]
atime=packet.pts*timebase;
[0072]
其中,packet.pts为音频数据对应的显示时间戳,timebase为提前设置的时间基准。
[0073]
所述编码器30,还用于在所述视频绝对时间小于所述音频绝对时间时,从所述消息队列中获取所述ai引擎20生成的插帧元数据,根据所述插帧元数据从所述目标数据库中拉取对应的视频帧和中间帧,根据所述视频帧或所述中间帧对应的显示时间戳对所述视频绝对时间进行更新。
[0074]
需要说明的是,在atime》vtime时,从消息队列中按照队列顺序获取ai引擎20生成的插帧元数据,并从目标数据库中拉取对应的视频帧和中间帧,选取视频帧和中间帧的显示时间戳中数值更大的作为视频绝对时间更新依据,通过以下公式计算视频数据对应的时间:
[0075]
vtime=frame.pts*timebase;
[0076]
其中,frame.pts为视频帧或中间帧对应的显示时间戳,timebase为提前设置的时间基准。
[0077]
根据计算得到的视频数据对应的时间对vtime进行更新,并返回执行所述判断所述视频绝对时间是否大于所述音频绝对时间的步骤。通过这种方式,实现分布式直播插帧过程中音频数据和视频数据的调度,提高了编码器30的编码效率。
[0078]
参考图3,图3为本发明分布式直播插帧方法第一实施例的流程示意图。
[0079]
本实施例分布式直播插帧方法所述方法应用于如上所述的分布式直播插帧系统,所述分布式直播插帧系统包括:分别部署于不同主机上的解码器、编码器以及多个ai引擎,所述方法包括:
[0080]
步骤s10:所述解码器对获取到的视频流进行解码,得到音频数据、视频帧和视频帧元数据,将所述视频帧存入目标数据库,并将所述音频数据和所述视频帧元数据存入消息队列。
[0081]
步骤s20:各个所述ai引擎从所述消息队列中获取所述解码器解码得到的视频帧元数据,并从所述目标数据库中拉取所述视频帧元数据对应的视频帧,根据拉取得到的视频帧生成中间帧,并生成所述中间帧对应的插帧元数据,将所述中间帧存入所述目标数据库,并将所述插帧元数据存入所述消息队列。
[0082]
步骤s30:所述编码器从所述消息队列中获取所述解码器解码得到的音频数据以及所述ai引擎生成的插帧元数据,并从所述目标数据库中拉取所述插帧元数据对应的视频帧和中间帧,将所述视频帧、所述中间帧以及所述音频数据合并编码后输出目标视频流。
[0083]
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
[0084]
本实施例中的分布式直播插帧系统包括:分别部署于不同主机上的解码器、编码器以及多个ai引擎;解码器对获取到的视频流进行解码,得到音频数据、视频帧和视频帧元数据,将视频帧存入目标数据库,并将音频数据和视频帧元数据存入消息队列;各个ai引擎于从消息队列中获取解码器解码得到的视频帧元数据,并从目标数据库中拉取视频帧元数据对应的视频帧,根据拉取得到的视频帧生成中间帧,并生成中间帧对应的插帧元数据,将中间帧存入目标数据库,并将插帧元数据存入消息队列;编码器从消息队列中获取解码器解码得到的音频数据以及ai引擎生成的插帧元数据,并从目标数据库中拉取插帧元数据对应的视频帧和中间帧,将视频帧、中间帧以及音频数据合并编码后输出目标视频流。通过上述方式,利用分布式部署的多个ai引擎执行高质量视频的插帧任务,能够在短时间内生成多帧插帧数据,满足直播场景下对插帧数量的需求,提高了直播插帧效率,提升了直播视频流畅度。
[0085]
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
[0086]
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的分布式直播插帧系统,此处不再赘述。
[0087]
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0088]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0089]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方
法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(read only memory,rom)/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0090]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献