CN113573134A - 弹幕数据的处理方法及装置、存储介质、电子设备 - Google Patents
弹幕数据的处理方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN113573134A CN113573134A CN202110769498.8A CN202110769498A CN113573134A CN 113573134 A CN113573134 A CN 113573134A CN 202110769498 A CN202110769498 A CN 202110769498A CN 113573134 A CN113573134 A CN 113573134A
- Authority
- CN
- China
- Prior art keywords
- bullet screen
- data
- screen data
- track
- operated
- 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.)
- Pending
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/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/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/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
- H04N21/4312—Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
-
- 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
Abstract
本公开关于一种弹幕数据的处理方法及装置、存储介质、电子设备。其中,该方法包括:从预设的缓存空间获取待运行的弹幕数据;根据阵列数据结构,计算弹幕轨道的运行状态,其中,阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;当弹幕轨道的运行状态为空闲状态时,将阵列数据结构中待运行的弹幕数据分配至空闲状态的弹幕轨道,并更新阵列数据结构;将弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。本公开解决了现有技术中针对弹幕数据的处理性能较低,导致JS进程和原生应用之间的通信消耗较大的技术问题。
Description
技术领域
本公开涉及数据处理领域,具体而言,涉及一种弹幕数据的处理方法及装置、存储介质、电子设备。
背景技术
在React Native(Facebook开源的跨平台移动应用开发框架)小程序中,直播是非常常见的业务,在直播业务中同时接收大量弹幕的场景时常发生。但由于React Native应用的业务逻辑运行于JS线程上,而React Native的视图是基于原生组件进行渲染,因此在类似弹幕这种应用场景中JS需要频繁和原生进行通信,去计算和获取当前每一条弹幕在屏幕上的位置,以计算下一条弹幕的插入时间。
由于在大量弹幕的场景下每一条弹幕的每一帧移动都需要JS线程和原生进行通信,会造成严重的JS线程的性能消耗,导致JS帧率下降,弹幕在飘动的过程中可以看到明显的卡顿,不但极大的影响用户体验,还会导致JS线程没有空闲去处理其他业务逻辑。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本公开实施例提供了一种弹幕数据的处理方法及装置、存储介质、电子设备,以至少解决现有技术中针对弹幕数据的处理性能较低,导致JS进程和原生应用之间的通信消耗较大的技术问题。
根据本公开实施例的一个方面,提供了一种弹幕数据的处理方法,包括:从预设的缓存空间获取待运行的弹幕数据;根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
可选的,从预设的缓存空间获取待运行的弹幕数据,包括:读取弹幕消息;将上述弹幕消息作为初始弹幕数据存储至上述预设的缓存空间;从上述预设的缓存空间获取上述初始弹幕数据中的上述待运行的弹幕数据。
可选的,上述预设的缓存空间包括:第一缓存空间和第二缓存空间,上述第一缓存空间中缓存的弹幕数据的优先级高于上述第二缓存空间中缓存的弹幕数据的优先级,将上述弹幕消息作为初始弹幕数据存储至上述预设的缓存空间包括:确定上述初始弹幕数据的优先级;基于上述初始弹幕数据的优先级从上述第一缓存空间和上述第二缓存空间中选取目标缓存空间;将上述初始弹幕数据存储至上述目标缓存空间。
可选的,从上述预设的缓存空间获取上述初始弹幕数据中上述待运行的弹幕数据包括:判断上述第一缓存空间中是否存在上述待运行的弹幕数据;当上述第一缓存空间中存在上述待运行的弹幕数据时,从上述第一缓存空间获取上述待运行的弹幕数据;当上述第一缓存空间中不存在上述待运行的弹幕数据时,从上述第二缓存空间获取上述待运行的弹幕数据。
可选的,上述每个弹幕轨道中当前运行的弹幕数据的运行信息,包括:每个弹幕轨道中最后加入的弹幕数据的第一时刻、每个弹幕轨道中最后加入的弹幕数据的弹幕长度、每个弹幕轨道中的弹幕滑动速度。
可选的,上述阵列数据结构包括:行和列,上述阵列数据结构还用于采用上述行和上述列分别记录第一类数据和第二类数据,其中,上述第一类数据用于表征上述同一弹幕轨道中当前运行的弹幕数据的运行信息以及待运行的弹幕数据;上述第二类数据用于表征上述多个弹幕轨道在同一维度下的信息,上述维度包括:与上述第一时刻对应的时刻维度、与上述弹幕长度对应的长度维度、与上述弹幕滑动速度对应的速度维度、与上述待运行的弹幕数据对应的弹幕维度。
可选的,根据阵列数据结构,计算弹幕轨道的运行状态包括:计算第二时刻与上述第一时刻的差值,得到第一中间结果,其中,上述第二时刻为当前时刻;计算上述第一中间结果与上述弹幕滑动速度,得到第二中间结果;比较上述第二中间结果与上述弹幕长度;当上述第二中间结果大于上述弹幕长度时,确定上述弹幕轨道的运行状态为空闲状态。
可选的,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,包括:为上述待运行的弹幕数据封装漂浮参数信息,得到目标弹幕数据,其中,上述漂浮参数信息包括:漂浮起点位置、漂浮终点位置、漂浮时长;将上述目标弹幕数据推送至上述空闲状态的弹幕轨道。
可选的,将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理,包括:将上述弹幕轨道中当前运行的上述目标弹幕数据发送至上述原生应用,其中,上述原生应用用于采用动画驱动和原生代码对上述目标弹幕数据执行弹幕浮动的动画处理,得到弹幕浮动动画。
可选的,更新上述阵列数据结构,包括:获取将上述待运行的弹幕数据分配至上述空闲状态的弹幕轨道的第三时刻,以及上述待运行的弹幕数据的弹幕长度;采用上述第三时刻更新上述阵列数据结构中与上述空闲状态的弹幕轨道对应的上述第一时刻;以及采用上述待运行的弹幕数据的弹幕长度,更新上述阵列数据结构中与上述空闲状态的弹幕轨道对应的上述弹幕长度。
可选的,上述方法还包括:当上述弹幕轨道的运行状态为非空闲状态时,判断上述预设的缓存空间是否达到最大缓存值,则删除上述待运行的弹幕数据,若上述预设的缓存空间未达到上述最大缓存值,则将上述待运行的弹幕数据重新存储至上述预设的缓存空间的末端位置。
根据本公开实施例的另一方面,还提供了一种弹幕数据的处理装置,包括:获取模块,用于从预设的缓存空间获取待运行的弹幕数据;计算模块,用于根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;第一处理模块,用于当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;第二处理模块,用于将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
根据本公开实施例的另一方面,还提供了一种非易失性存储介质,上述非易失性存储介质包括存储的程序,其中,在上述程序运行时控制上述非易失性存储介质所在设备执行任意一项上述的弹幕数据的处理方法。
根据本公开实施例的另一方面,还提供了一种处理器,上述处理器用于运行存储在存储器中的程序,其中,上述程序运行时执行任意一项上述的弹幕数据的处理方法。
根据本公开实施例的另一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为运行上述计算机程序以执行任意一项上述的弹幕数据的处理方法。
在本公开实施例中,通过从预设的缓存空间获取待运行的弹幕数据;根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
通过获取预设的缓存空间中待运行的弹幕数据,根据阵列数据结构,计算弹幕轨道的运行状态,并在上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理,达到了无需实时跟踪每一条弹幕数据的运行轨迹,提升对弹幕数据的处理性能的目的,从而实现了降低JS进程和原生应用之间的通信消耗的技术效果,进而解决了现有技术中针对弹幕数据的处理性能较低,导致JS进程和原生应用之间的通信消耗较大的技术问题。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本公开的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是根据本公开实施例的一种弹幕数据处理方法的流程图;
图2是根据本公开实施例的一种可选的弹幕数据处理方法的流程图;
图3是根据本公开实施例的一种可选的矩阵结构的示意图;
图4是根据本公开实施例的一种可选的弹幕消化细节的流程图;
图5是根据本公开实施例的一种弹幕数据处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
该方法实施例的技术方案可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,该移动终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,简称为MID)、PAD等终端设备。移动终端可以包括一个或多个处理器(处理器可以包括但不限于中央处理器(CPU)、图形处理器(GPU)、数字信号处理(DSP)芯片、微处理器(MCU)、可编程逻辑器件(FPGA)、神经网络处理器(NPU)、张量处理器(TPU)、人工智能(AI)类型处理器等的处理装置)和用于存储数据的存储器。可选地,上述移动终端还可以包括用于通信功能的传输设备、输入输出设备以及显示设备。本领域普通技术人员可以理解,上述结构描述仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比上述结构描述更多或者更少的组件,或者具有与上述结构描述不同的配置。
存储器可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本公开实施例中的弹幕数据处理方法对应的计算机程序,处理器通过运行存储在存储器内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的弹幕数据处理方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。该方法实施例的技术方案可以应用于各种通信系统,例如:全球移动通讯(Global System of Mobile communication,简称为GSM)系统、码分多址(Code Division Multiple Access,简称为CDMA)系统、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)系统、通用分组无线业务(General Packet Radio Service,简称为GPRS)、长期演进(Long Term Evolution,简称为LTE)系统、LTE频分双工(Frequency Division Duplex,简称为FDD)系统、LTE时分双工(Time Division Duplex,简称为TDD)、通用移动通信系统(Universal MobileTelecommunication System,简称为UMTS)、全球互联微波接入(WorldwideInteroperability for Microwave Access,简称为WiMAX)通信系统或5G系统等。可选地,多个移动终端之间可以进行设备到设备(Device to Device,简称为D2D)通信。可选地,5G系统或5G网络又被称为新无线(New Radio,简称为NR)系统或NR网络。
显示设备可以例如触摸屏式的液晶显示器(LCD)和触摸显示器(也被称为“触摸屏”或“触摸显示屏”)。该液晶显示器可使得用户能够与移动终端的用户界面进行交互。在一些实施例中,上述移动终端具有图形用户界面(GUI),用户可以通过触摸触敏表面上的手指接触和/或手势来与GUI进行人机交互,此处的人机交互功能可选的包括如下交互:创建网页、绘图、文字处理、制作电子文档、游戏、视频会议、即时通信、收发电子邮件、通话界面、播放数字视频、播放数字音乐和/或网络浏览等、用于执行上述人机交互功能的可执行指令被配置/存储在一个或多个处理器可执行的计算机程序产品或可读非易失性存储介质中。
根据本公开实施例,提供了一种弹幕数据处理的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本公开实施例的一种弹幕数据处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,从预设的缓存空间获取待运行的弹幕数据;
步骤S104,根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;
步骤S106,当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;
步骤S108,将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
在本公开实施例中,通过从预设的缓存空间获取待运行的弹幕数据;根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
通过获取预设的缓存空间中待运行的弹幕数据,根据阵列数据结构,计算弹幕轨道的运行状态,并在上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理,达到了无需实时跟踪每一条弹幕数据的运行轨迹,提升对弹幕数据的处理性能的目的,从而实现了降低JS进程和原生应用之间的通信消耗的技术效果,进而解决了现有技术中针对弹幕数据的处理性能较低,导致JS进程和原生应用之间的通信消耗较大的技术问题。
可选的,上述初始弹幕数据可以为直播中的弹幕数据、视频中的弹幕数据、游戏中的弹幕数据等,本公开实施例提供的弹幕数据处理方法可以但不限于适用于游戏直播业务中弹幕数据处理场景中。
可选的,上述预设的缓存空间可以为缓存列表,本公开实施例所提供的弹幕数据处理方法中,可以使用预设的缓存空间存储上述初始弹幕数据,例如,以栈或队列的形式存储初始弹幕数据。其中,该初始弹幕数据可以但不限于包含:弹幕内容、弹幕数据所在的弹幕轨道、漂浮起点位置、漂浮终点位置、漂浮时长。
可选的,上述阵列数据结构可以但不限于为矩阵结构,当Websocket接收到弹幕消息后将弹幕消息推入缓存列表,并同时触发消化循环,在消化循环开始后,从缓存列表中取出最新的一条弹幕数据作为待运行的弹幕数据,并根据矩阵结构计算弹幕轨道的运行状态,并在上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
可选的,上述原生应用是指移动端React native原生应用,React Native是Facebook开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架React在原生移动应用平台的衍生产物,着力于提高多平台开发的开发效率。本公开实施例中通过将数据计算好一次性发给移动端React native原生应用,可以避免JS和原生应用之间频繁通信而引起的性能瓶颈;其中,原生驱动是指React native原生应用的动画驱动,是直接由原生应用渲染动画,而无需和JS进行交互;原生代码是指React native的原生代码。
在一种可选的实施例中,获取上述初始弹幕数据包括:
步骤S202,读取弹幕消息;
步骤S204,将上述弹幕消息作为初始弹幕数据存储至上述预设的缓存空间;
步骤S206,从上述预设的缓存空间获取上述初始弹幕数据中的上述待运行的弹幕数据。
可选的,在本公开实施例中,可以采用套接字连接websocket读取弹幕消息,并从上述弹幕消息中获取上述初始弹幕数据。例如,通过开启一个websocket长连接,一旦有弹幕消息过来就会触发websocket的onmessage事件并且传入弹幕消息,在onmessage事件中读取该弹幕消息。
在本公开实施例中,可选的,在采用上述websocket读取弹幕消息的过程中,可以设置定时器,每100ms从缓存列表中读取一条待运行的弹幕数据,推入矩阵中进行消化。
在一种可选的实施例中,上述预设的缓存空间包括:第一缓存空间和第二缓存空间,上述第一缓存空间中缓存的弹幕数据的优先级高于上述第二缓存空间中缓存的弹幕数据的优先级,将上述初始弹幕数据存储至上述预设的缓存空间包括:
步骤S302,确定上述初始弹幕数据的优先级;
步骤S304,基于上述初始弹幕数据的优先级从上述第一缓存空间和上述第二缓存空间中选取目标缓存空间;
步骤S306,将上述初始弹幕数据存储至上述目标缓存空间。
在一种可选的实施例中,如图2所示,将预设的缓存空间按照高低优先级进行区分,得到第一缓存区间priority list和第二缓存区间cache list,例如,可以采用第二缓存空间cache list保存普通优先级的弹幕数据,采用第一缓存空间priority list保存高优先级的弹幕数据(例如,系统发送的弹幕消息、用户自己发送的弹幕信息等)。
可选的,上述第二缓存空间cache list可以采用栈的消化方式,第一缓存空间priority list则可以使用队列的消化方式,在监听到websocket读取的弹幕消息后,判断弹幕消息的优先级,并根据该优先级从上述第一缓存空间和上述第二缓存空间中选取目标缓存空间,将该弹幕消息作为初始弹幕数据存储至目标缓存空间,并触发弹幕数据的消化循环。
在一种可选的实施例中,从上述预设的缓存空间获取上述待运行的弹幕数据包括:
步骤S402,判断上述第一缓存空间中是否存在待运行的弹幕数据;
步骤S404,当上述第一缓存空间中存在上述待运行的弹幕数据时,从上述第一缓存空间获取上述待运行的弹幕数据;当上述第一缓存空间中不存在上述待运行的弹幕数据时,从上述第二缓存空间获取上述待运行的弹幕数据。
可选的,上述待运行的弹幕数据包括弹幕内容、弹幕属性。在上述可选的实施例中,如图2所示,在开始消化之前判断第一缓存空间priority list中是否有待运行的弹幕数据,如果有则从第一缓存空间priority list中取出上述待运行的弹幕数据进行消化,直到清空第一缓存空间priority list中的所有的弹幕数据被消化之后,再开始消化第二缓存空间cache list中的弹幕数据,每消化一条第二缓存空间cache list中的弹幕数据都要先清空第一缓存空间priority list中的弹幕数据,以此保证高优先级的消息被优先展示,并在当前的弹幕数据被消化完后重新回到触发弹幕消化步骤开始一轮新的消化处理,直至第一缓存空间priority list和第二缓存空间cache list中的弹幕数据均清空为止。
作为一种可选的实施例,上述每个弹幕轨道中当前运行的弹幕数据的运行信息,包括:每个弹幕轨道中最后加入的弹幕数据的第一时刻、每个弹幕轨道中最后加入的弹幕数据的弹幕长度、每个弹幕轨道中的弹幕滑动速度。
可选的,上述阵列数据结构包括:行和列,上述阵列数据结构还用于采用上述行和上述列分别记录第一类数据和第二类数据,其中,上述第一类数据用于表征上述同一弹幕轨道中当前运行的弹幕数据的运行信息以及待运行的弹幕数据;上述第二类数据用于表征上述多个弹幕轨道在同一维度下的信息,上述维度包括:与上述第一时刻对应的时刻维度、与上述弹幕长度对应的长度维度、与上述弹幕滑动速度对应的速度维度、与上述待运行的弹幕数据对应的弹幕维度。
作为另一种可选的实施例,上述阵列数据结构可以为如图3所示的矩阵结构,如图3所示,该矩阵结构包括:行和列,如图3所示,多个弹幕轨道包括弹幕轨道1、弹幕轨道2、……弹幕轨道n,上述多个弹幕轨道中每个弹幕轨道中当前运行的弹幕数据的运行信息,包括:每个弹幕轨道中最后加入的弹幕数据的第一时刻、每个弹幕轨道中最后加入的弹幕数据的弹幕长度、每个弹幕轨道中的弹幕滑动速度;上述阵列数据结构还用于采用上述行和上述列分别记录上述第一类数据和第二类数据,上述第一类数据用于表征上述同一弹幕轨道中当前运行的弹幕数据的运行信息以及待运行的弹幕数据;上述第二类数据用于表征上述多个弹幕轨道在同一维度下的信息,上述维度包括:与上述第一时刻对应的时刻维度、与上述弹幕长度对应的长度维度、与上述弹幕滑动速度对应的速度维度、与上述待运行的弹幕数据对应的弹幕维度。如图3所示,弹幕轨道1中最后加入的弹幕数据的第一时刻lastTime为1616490202581、弹幕轨道1中最后加入的弹幕数据的弹幕长度lastLength为21px、弹幕轨道1中的弹幕滑动速度为100px/s;弹幕轨道2中最后加入的弹幕数据的第一时刻lastTime为1616490202599、弹幕轨道2中最后加入的弹幕数据的弹幕长度lastLength为53px、弹幕轨道2中的弹幕滑动速度为100px/s;弹幕轨道n中最后加入的弹幕数据的第一时刻lastTime为1616490202621、弹幕轨道n中最后加入的弹幕数据的弹幕长度lastLength为33px、弹幕轨道n中的弹幕滑动速度为100px/s,需要说明的是,多个弹幕轨道中每个弹幕轨道的弹幕滑动速度,均可以根据用户对弹幕滑动速度的需求进行设置,并不具体限定。
可选的,如图3所示,矩阵结构中的每行代表弹幕中的每一个弹幕轨道,可以但不限于在视图上遍历矩阵结构进行弹幕轨道的渲染;矩阵的每一行可以用于对应记录缓存列表中的一个弹幕队列数据,用于维护当前弹幕轨道中的漂浮弹幕的信息,例如,弹幕内容、漂浮起始位置、漂浮时长等信息;将矩阵结构中记录的上述弹幕数据的信息一次性发给原生应用,由原生应用执行对弹幕浮动动画的处理。
在一种可选的实施例中,根据阵列数据结构,计算弹幕轨道的运行状态,包括:
步骤S602,计算第二时刻与上述第一时刻的差值,得到第一中间结果,其中,上述第二时刻为当前时刻;
步骤S604,计算上述第一中间结果与上述弹幕滑动速度,得到第二中间结果;
步骤S606,比较上述第二中间结果与上述弹幕长度;
步骤S608,当上述第二中间结果大于上述弹幕长度时,确定上述弹幕轨道的运行状态为空闲状态。
可选的,上述第二时刻为当前时刻,即currentTime;根据矩阵结构中记录的最后一条弹幕加入的时间lastTime、最后一条弹幕的长度lastLength、前轨道中弹幕数据的弹幕滑动速度speed数据计算当前弹幕轨道是否空闲,若:(currentTime-lastTime)*speed>lastLength,则表示当前弹幕轨道中最后一条弹幕数据已完全漂浮出开始点,则确定上述弹幕轨道的运行状态为空闲状态,可插入下一条待运行的弹幕数据。
在一种可选的实施例中,将上述待运行的弹幕数据推送至上述空闲状态的弹幕轨道包括:
步骤S702,为上述待运行的弹幕数据封装漂浮参数信息,得到目标弹幕数据,其中,上述漂浮参数信息包括:漂浮起点位置、漂浮终点位置、漂浮时长;
步骤S704,将上述目标弹幕数据推送至上述空闲状态的弹幕轨道。
在一种可选的实施例中,如图4所示,当websocket接收到弹幕消息(socket消息)后将弹幕消息推入缓存列表,缓存列表可以但不限于以栈或队列的形式保存初始弹幕数据,并且,在websocket接收到弹幕数消息同时触发消化循环,在消化循环开始后,从缓存列表中获取最新的一条待运行的弹幕数据,并遍历弹幕轨道列表,查看是否存在空闲的弹幕轨道;根据当前时刻currentTime、矩阵结构中记录的第一时刻lastTime、弹幕长度lastLength、弹幕滑动速度speed计算当前弹幕轨道是否处于空闲状态,若(当前时刻currentTime-lastTime)*speed>lastLength,则表示当前弹幕轨道最后一条弹幕数据已完全漂浮出开始点,即该弹幕轨道处于空闲状态,可以插入待运行的弹幕数据至该空闲状态的弹幕轨道;在判断当前弹幕轨道为空闲状态后,为上述待运行的弹幕数据封装漂浮参数信息,例如,漂浮起点位置、漂浮终点位置、漂浮时长;得到目标弹幕数据,并将上述目标弹幕数据推送至上述空闲状态的弹幕轨道。
在一种可选的实施例中,将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理,包括:
步骤S802,将上述弹幕轨道中当前运行的上述目标弹幕数据发送至上述原生应用,其中,上述原生应用用于采用动画驱动和原生代码对上述目标弹幕数据执行弹幕浮动的动画处理,得到弹幕浮动动画。
在上述可选的实施例中,将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理,可选的,原生应用在接受到目标弹幕数据之后,可以但不限于采用动画驱动和原生代码对上述目标弹幕数据执行弹幕浮动的动画处理,得到弹幕浮动动画。
作为另一种可选的实施例,更新上述阵列数据结构,包括:
步骤S902,获取将上述待运行的弹幕数据分配至上述空闲状态的弹幕轨道的第三时刻,以及上述待运行的弹幕数据的弹幕长度;
步骤S904,采用上述第三时刻更新上述阵列数据结构中与上述空闲状态的弹幕轨道对应的上述第一时刻;以及采用上述待运行的弹幕数据的弹幕长度,更新上述阵列数据结构中与上述空闲状态的弹幕轨道对应的上述弹幕长度。
如图3所示,弹幕轨道1中最后加入的弹幕数据的第一时刻lastTime为1616490202581、弹幕轨道1中最后加入的弹幕数据的弹幕长度lastLength为21px、弹幕轨道1中的弹幕滑动速度为100px/s;如果上述弹幕轨道1为上述空闲状态的弹幕轨道,则在将待运行的弹幕数据分配至该弹幕轨道1时,获取将该待运行的弹幕数据分配至弹幕轨道1的第三时刻1616490202585,以及待运行的弹幕数据的弹幕长度20px,则可以采用第三时刻1616490202585更新第一时刻1616490202581,并采用待运行的弹幕数据的弹幕长度20px更新当前弹幕轨道1中的弹幕长度21px。
作为一种可选的实施例,上述方法还包括:步骤S1002,当上述弹幕轨道的运行状态为非空闲状态时,判断上述预设的缓存空间是否达到最大缓存值,则删除上述待运行的弹幕数据,若上述预设的缓存空间未达到上述最大缓存值,则将上述待运行的弹幕数据重新存储至上述预设的缓存空间的末端位置。
在上述实施例中,如果所有的弹幕轨道为非空闲状态,则重新将该待运行的弹幕数据压入缓存列表,其中,针对预设的缓存空间中的第一缓存空间,即高优先级的缓存列表:该第一缓存空间中保存的弹幕数据存在即时展示的需求,因此将最后接收的弹幕数据置于高优先级列表顶部,并触发消化轮询,在轮询的时候发现所有的弹幕轨道均处于非空闲状态时,则会每隔100ms再尝试一次,直到该待运行的弹幕数据被消化完为止;针对预设的缓存空间中的第二缓存空间,即普通缓存列表,由于第二缓存空间中保存的弹幕数据没有即时展示的需求,则可以最后接收的弹幕数据置于缓存列表的顶部,并触发消化轮询,在轮询时所有的弹幕轨道均处于非空闲状态时,则判断普通缓存列表是否达到最大值,如果达到则抛弃该条待运行的弹幕数据,如果未达到最大值则将该待运行的弹幕数据压至普通缓存列表的最底部,计时器每100ms会从缓存列表中读取一条数据,等待下一次读取。
在本公开实施例中,还提供一种弹幕数据处理方法的代码示例,主要包括但不限于如下核心部分:初始化矩阵数据结构,根据当前弹幕区域计算矩阵行数,并初始化每一行中的列数据;触发消化循环,每消化一条cache list中的数据之前先清空priority list中的所有数据;消化弹幕,遍历查找空闲轨道,对待运行的弹幕数据进行封装,加入漂浮动画数据,推入弹幕轨道,由原生应用执行漂浮动画处理,并更新当前弹幕轨道的参数。
根据本公开实施例,还提供了一种用于实施上述弹幕数据处理方法的装置实施例,图5是根据本公开实施例的一种弹幕数据处理装置的结构示意图,如图5所示,上述弹幕数据处理装置,包括:获取模块80、计算模块82、第一处理模块84和第二处理模块86,其中:
获取模块80,用于从预设的缓存空间获取待运行的弹幕数据;计算模块82,用于根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;第一处理模块84,用于当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;第二处理模块86,用于将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。
此处需要说明的是,上述获取模块80、计算模块82、第一处理模块84和第二处理模块86对应于方法实施例中的步骤S102至步骤S108,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述方法实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。
需要说明的是,本实施例的可选或优选实施方式可以参见方法实施例中的相关描述,此处不再赘述。
上述的弹幕数据处理装置还可以包括处理器和存储器,上述获取模块80、计算模块82、第一处理模块84和第二处理模块86等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元,上述内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本公开实施例,还提供了一种非易失性存储介质实施例。可选地,在本实施例中,上述非易失性存储介质包括存储的程序,其中,在上述程序运行时控制上述非易失性存储介质所在设备执行上述任意一种弹幕数据处理方法。
可选地,在本实施例中,上述非易失性存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中,上述非易失性存储介质包括存储的程序。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:从预设的缓存空间获取待运行的弹幕数据;根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:读取弹幕消息;将上述弹幕消息作为初始弹幕数据存储至上述预设的缓存空间;从上述预设的缓存空间获取上述初始弹幕数据中的上述待运行的弹幕数据。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:确定上述初始弹幕数据的优先级;基于上述初始弹幕数据的优先级从上述第一缓存空间和上述第二缓存空间中选取目标缓存空间;将上述初始弹幕数据存储至上述目标缓存空间。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:判断上述第一缓存空间中是否存在上述待运行的弹幕数据;当上述第一缓存空间中存在上述待运行的弹幕数据时,从上述第一缓存空间获取上述待运行的弹幕数据;当上述第一缓存空间中不存在上述待运行的弹幕数据时,从上述第二缓存空间获取上述待运行的弹幕数据。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:计算第二时刻与上述第一时刻的差值,得到第一中间结果,其中,上述第二时刻为当前时刻;计算上述第一中间结果与上述弹幕滑动速度,得到第二中间结果;比较上述第二中间结果与上述弹幕长度;当上述第二中间结果大于上述弹幕长度时,确定上述弹幕轨道的运行状态为空闲状态。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:为上述待运行的弹幕数据封装漂浮参数信息,得到目标弹幕数据,其中,上述漂浮参数信息包括:漂浮起点位置、漂浮终点位置、漂浮时长;将上述目标弹幕数据推送至上述空闲状态的弹幕轨道。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:将上述弹幕轨道中当前运行的上述目标弹幕数据发送至上述原生应用,其中,上述原生应用用于采用动画驱动和原生代码对上述目标弹幕数据执行弹幕浮动的动画处理,得到弹幕浮动动画。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:获取将上述待运行的弹幕数据分配至上述空闲状态的弹幕轨道的第三时刻,以及上述待运行的弹幕数据的弹幕长度;采用上述第三时刻更新上述阵列数据结构中与上述空闲状态的弹幕轨道对应的上述第一时刻;以及采用上述待运行的弹幕数据的弹幕长度,更新上述阵列数据结构中与上述空闲状态的弹幕轨道对应的上述弹幕长度。
可选地,在程序运行时控制非易失性存储介质所在设备执行以下功能:当上述弹幕轨道的运行状态为非空闲状态时,判断上述预设的缓存空间是否达到最大缓存值,则删除上述待运行的弹幕数据,若上述预设的缓存空间未达到上述最大缓存值,则将上述待运行的弹幕数据重新存储至上述预设的缓存空间的末端位置。
根据本公开实施例,还提供了一种处理器实施例。可选地,在本实施例中,上述处理器用于运行程序,其中,上述程序运行时执行上述任意一种弹幕数据处理方法。
本公开实施例提供了一种电子设备的实施例,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为运行上述计算机程序以执行任意一项上述的弹幕数据处理方法。
本公开实施例还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,上述计算机程序产品适于执行初始化有如下方法步骤的程序:从预设的缓存空间获取待运行的弹幕数据;根据阵列数据结构,计算弹幕轨道的运行状态,其中,上述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;上述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;当上述弹幕轨道的运行状态为空闲状态时,将上述阵列数据结构中待运行的弹幕数据分配至上述空闲状态的弹幕轨道,并更新上述阵列数据结构;将上述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
在本公开的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取非易失性存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个非易失性存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的非易失性存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本公开的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本公开原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本公开的保护范围。
Claims (14)
1.一种弹幕数据的处理方法,其特征在于,包括:
从预设的缓存空间获取待运行的弹幕数据;
根据阵列数据结构,计算弹幕轨道的运行状态,其中,所述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;所述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;
当所述弹幕轨道的运行状态为空闲状态时,将所述阵列数据结构中待运行的弹幕数据分配至所述空闲状态的弹幕轨道,并更新所述阵列数据结构;
将所述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
2.根据权利要求1所述的方法,其特征在于,从预设的缓存空间获取待运行的弹幕数据,包括:
读取弹幕消息;
将所述弹幕消息作为初始弹幕数据存储至所述预设的缓存空间;
从所述预设的缓存空间获取所述初始弹幕数据中的所述待运行的弹幕数据。
3.根据权利要求2所述的方法,其特征在于,所述预设的缓存空间包括:第一缓存空间和第二缓存空间,所述第一缓存空间中缓存的弹幕数据的优先级高于所述第二缓存空间中缓存的弹幕数据的优先级,将所述弹幕消息作为初始弹幕数据存储至所述预设的缓存空间包括:
确定所述初始弹幕数据的优先级;
基于所述初始弹幕数据的优先级从所述第一缓存空间和所述第二缓存空间中选取目标缓存空间;
将所述初始弹幕数据存储至所述目标缓存空间。
4.根据权利要求3所述的方法,其特征在于,从所述预设的缓存空间获取所述初始弹幕数据中所述待运行的弹幕数据包括:
判断所述第一缓存空间中是否存在所述待运行的弹幕数据;
当所述第一缓存空间中存在所述待运行的弹幕数据时,从所述第一缓存空间获取所述待运行的弹幕数据;
当所述第一缓存空间中不存在所述待运行的弹幕数据时,从所述第二缓存空间获取所述待运行的弹幕数据。
5.根据权利要求1所述的方法,其特征在于,所述每个弹幕轨道中当前运行的弹幕数据的运行信息,包括:每个弹幕轨道中最后加入的弹幕数据的第一时刻、每个弹幕轨道中最后加入的弹幕数据的弹幕长度、每个弹幕轨道中的弹幕滑动速度。
6.根据权利要求5所述的方法,其特征在于,所述阵列数据结构包括:行和列,所述阵列数据结构还用于采用所述行和所述列分别记录第一类数据和第二类数据,其中,所述第一类数据用于表征同一弹幕轨道中当前运行的弹幕数据的运行信息以及待运行的弹幕数据;所述第二类数据用于表征多个弹幕轨道在同一维度下的信息,所述维度包括:与所述第一时刻对应的时刻维度、与所述弹幕长度对应的长度维度、与所述弹幕滑动速度对应的速度维度、与所述待运行的弹幕数据对应的弹幕维度。
7.根据权利要求5所述的方法,其特征在于,根据阵列数据结构,计算弹幕轨道的运行状态包括:
计算第二时刻与所述第一时刻的差值,得到第一中间结果,其中,所述第二时刻为当前时刻;
计算所述第一中间结果与所述弹幕滑动速度,得到第二中间结果;
比较所述第二中间结果与所述弹幕长度;
当所述第二中间结果大于所述弹幕长度时,确定所述弹幕轨道的运行状态为空闲状态。
8.根据权利要求5所述的方法,其特征在于,将所述阵列数据结构中待运行的弹幕数据分配至所述空闲状态的弹幕轨道,包括:
为所述待运行的弹幕数据封装漂浮参数信息,得到目标弹幕数据,其中,所述漂浮参数信息包括:漂浮起点位置、漂浮终点位置、漂浮时长;
将所述目标弹幕数据推送至所述空闲状态的弹幕轨道。
9.根据权利要求8所述的方法,其特征在于,将所述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理,包括:
将所述弹幕轨道中当前运行的所述目标弹幕数据发送至所述原生应用,其中,所述原生应用用于采用动画驱动和原生代码对所述目标弹幕数据执行弹幕浮动的动画处理,得到弹幕浮动动画。
10.根据权利要求5所述的方法,其特征在于,更新所述阵列数据结构,包括:
获取将所述待运行的弹幕数据分配至所述空闲状态的弹幕轨道的第三时刻,以及所述待运行的弹幕数据的弹幕长度;
采用所述第三时刻更新所述阵列数据结构中与所述空闲状态的弹幕轨道对应的所述第一时刻;以及采用所述待运行的弹幕数据的弹幕长度,更新所述阵列数据结构中与所述空闲状态的弹幕轨道对应的所述弹幕长度。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述弹幕轨道的运行状态为非空闲状态时,判断所述预设的缓存空间是否达到最大缓存值,则删除所述待运行的弹幕数据,若所述预设的缓存空间未达到所述最大缓存值,则将所述待运行的弹幕数据重新存储至所述预设的缓存空间的末端位置。
12.一种弹幕数据的处理装置,其特征在于,包括:
获取模块,用于从预设的缓存空间获取待运行的弹幕数据;
计算模块,用于根据阵列数据结构,计算弹幕轨道的运行状态,其中,所述阵列数据结构用于记录每个弹幕轨道中当前运行的弹幕数据的运行信息,以及待运行的弹幕数据;所述弹幕轨道用于在用户界面中按照指定的运行轨迹推送弹幕数据;
第一处理模块,用于当所述弹幕轨道的运行状态为空闲状态时,将所述阵列数据结构中待运行的弹幕数据分配至所述空闲状态的弹幕轨道,并更新所述阵列数据结构;
第二处理模块,用于将所述弹幕轨道中当前运行的弹幕数据发送至原生应用执行弹幕浮动的动画处理。
13.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,在所述程序运行时控制所述非易失性存储介质所在设备执行权利要求1至11中任意一项所述的弹幕数据的处理方法。
14.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至11中任意一项所述的弹幕数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110769498.8A CN113573134A (zh) | 2021-07-07 | 2021-07-07 | 弹幕数据的处理方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110769498.8A CN113573134A (zh) | 2021-07-07 | 2021-07-07 | 弹幕数据的处理方法及装置、存储介质、电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113573134A true CN113573134A (zh) | 2021-10-29 |
Family
ID=78164021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110769498.8A Pending CN113573134A (zh) | 2021-07-07 | 2021-07-07 | 弹幕数据的处理方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113573134A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114302212A (zh) * | 2021-12-30 | 2022-04-08 | 北京爱奇艺科技有限公司 | 一种视频弹幕排版方法、装置、设备及存储介质 |
CN115278337A (zh) * | 2022-07-25 | 2022-11-01 | 曙光信息产业(北京)有限公司 | 一种弹幕渲染方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105723724A (zh) * | 2013-11-19 | 2016-06-29 | 索尼互动娱乐公司 | 信息处理设备 |
CN106162298A (zh) * | 2015-03-27 | 2016-11-23 | 天脉聚源(北京)科技有限公司 | 一种实现弹幕的方法和系统 |
CN106454434A (zh) * | 2016-11-15 | 2017-02-22 | 广州华多网络科技有限公司 | 一种弹幕播放方法及装置 |
CN107360459A (zh) * | 2017-07-07 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 一种弹幕的处理方法、装置和存储介质 |
CN107371056A (zh) * | 2017-07-18 | 2017-11-21 | 北京蜜莱坞网络科技有限公司 | 一种加载弹幕的方法和装置 |
CN108696766A (zh) * | 2018-05-15 | 2018-10-23 | 北京字节跳动网络技术有限公司 | 弹幕显示方法、装置和计算机可读存储介质 |
CN108696767A (zh) * | 2018-05-15 | 2018-10-23 | 北京字节跳动网络技术有限公司 | 弹幕播放方法、装置、计算机可读存储介质和终端 |
CN109600655A (zh) * | 2018-11-30 | 2019-04-09 | 北京微播视界科技有限公司 | 应用客户端中弹幕显示的方法、应用客户端及电子设备 |
CN110545458A (zh) * | 2019-09-24 | 2019-12-06 | 网易(杭州)网络有限公司 | 弹幕显示方法、装置、设备及计算机可读存储介质 |
CN111031399A (zh) * | 2019-11-25 | 2020-04-17 | 上海哔哩哔哩科技有限公司 | 弹幕处理方法和系统 |
CN112312186A (zh) * | 2019-07-29 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 消息显示方法、装置、终端及存储介质 |
-
2021
- 2021-07-07 CN CN202110769498.8A patent/CN113573134A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105723724A (zh) * | 2013-11-19 | 2016-06-29 | 索尼互动娱乐公司 | 信息处理设备 |
CN106162298A (zh) * | 2015-03-27 | 2016-11-23 | 天脉聚源(北京)科技有限公司 | 一种实现弹幕的方法和系统 |
CN106454434A (zh) * | 2016-11-15 | 2017-02-22 | 广州华多网络科技有限公司 | 一种弹幕播放方法及装置 |
CN107360459A (zh) * | 2017-07-07 | 2017-11-17 | 腾讯科技(深圳)有限公司 | 一种弹幕的处理方法、装置和存储介质 |
CN107371056A (zh) * | 2017-07-18 | 2017-11-21 | 北京蜜莱坞网络科技有限公司 | 一种加载弹幕的方法和装置 |
CN108696766A (zh) * | 2018-05-15 | 2018-10-23 | 北京字节跳动网络技术有限公司 | 弹幕显示方法、装置和计算机可读存储介质 |
CN108696767A (zh) * | 2018-05-15 | 2018-10-23 | 北京字节跳动网络技术有限公司 | 弹幕播放方法、装置、计算机可读存储介质和终端 |
CN109600655A (zh) * | 2018-11-30 | 2019-04-09 | 北京微播视界科技有限公司 | 应用客户端中弹幕显示的方法、应用客户端及电子设备 |
CN112312186A (zh) * | 2019-07-29 | 2021-02-02 | 腾讯科技(深圳)有限公司 | 消息显示方法、装置、终端及存储介质 |
CN110545458A (zh) * | 2019-09-24 | 2019-12-06 | 网易(杭州)网络有限公司 | 弹幕显示方法、装置、设备及计算机可读存储介质 |
CN111031399A (zh) * | 2019-11-25 | 2020-04-17 | 上海哔哩哔哩科技有限公司 | 弹幕处理方法和系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114302212A (zh) * | 2021-12-30 | 2022-04-08 | 北京爱奇艺科技有限公司 | 一种视频弹幕排版方法、装置、设备及存储介质 |
CN114302212B (zh) * | 2021-12-30 | 2024-03-15 | 北京爱奇艺科技有限公司 | 一种视频弹幕排版方法、装置、设备及存储介质 |
CN115278337A (zh) * | 2022-07-25 | 2022-11-01 | 曙光信息产业(北京)有限公司 | 一种弹幕渲染方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108491275B (zh) | 程序优化方法、装置、终端及存储介质 | |
CN105763602A (zh) | 一种数据请求处理的方法、服务器及系统 | |
CN113573134A (zh) | 弹幕数据的处理方法及装置、存储介质、电子设备 | |
CN110764906B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN105760199B (zh) | 一种应用资源加载方法及其设备 | |
CN104601683A (zh) | 一种文件下载管理方法以及移动终端和通信系统 | |
CN109981715B (zh) | 一种会话管理的方法及装置 | |
CN110222288B (zh) | 页面展示方法、装置及存储介质 | |
CN103095840A (zh) | 一种用于移动终端的广告加载方法 | |
CN113318447B (zh) | 游戏场景的处理方法、装置、存储介质及电子设备 | |
CN104104995A (zh) | 图片显示方法和装置 | |
CN105740061B (zh) | 一种gpu资源重建的方法、用户设备及系统 | |
CN112169314A (zh) | 游戏中选取目标对象的方法及装置 | |
CN105138344A (zh) | 根据图片热度随机生成屏保的方法及系统 | |
CN113952740A (zh) | 游戏中的虚拟道具分享方法、装置、存储介质及电子设备 | |
CN103677893A (zh) | 开机的映像文件的大小缩减方法及运算装置 | |
CN110045924B (zh) | 分级存储方法、装置、电子设备及计算机可读存储介质 | |
CN107479960B (zh) | 一种单元视图的显示方法和装置 | |
CN113326302A (zh) | 数据查询方法及装置、存储介质 | |
CN111773679B (zh) | 游戏中图标的处理方法及装置 | |
CN114827255A (zh) | 数据处理方法、装置、可读存储介质和电子装置 | |
CN104951253A (zh) | 一种内存容量处理的方法及移动终端 | |
CN105491400B (zh) | 一种视频流下载方法及其设备 | |
CN114598912A (zh) | 一种多媒体文件显示方法、装置、存储介质及电子设备 | |
CN108874586B (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 |