CN111026558B - 基于微信小程序的弹幕处理方法和系统 - Google Patents
基于微信小程序的弹幕处理方法和系统 Download PDFInfo
- Publication number
- CN111026558B CN111026558B CN201911168313.7A CN201911168313A CN111026558B CN 111026558 B CN111026558 B CN 111026558B CN 201911168313 A CN201911168313 A CN 201911168313A CN 111026558 B CN111026558 B CN 111026558B
- Authority
- CN
- China
- Prior art keywords
- bullet screen
- data
- indication information
- state
- launched
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/07—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
- H04L51/10—Multimedia information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/216—Handling conversation history, e.g. grouping of messages in sessions or threads
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/234—Monitoring or handling of messages for tracking messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/226—Delivery according to priorities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本申请实施例公开了一种基于微信小程序的弹幕处理方法,包括:获取视频播放页面,用于输出视频流;获取与视频流关联的多个弹幕数据;执行第i次弹幕处理操作:将操作指示信息调整为第一指示信息;对多个弹幕数据执行遍历,以查找多个弹幕数据中是否包括处于待发射状态的弹幕数据;及如果多个弹幕数据中包括处于待发射状态的弹幕数据,则:针对处于待发射状态的弹幕数据进行处理操作;判断针对处于待发射状态的弹幕数据的处理操作是否已经完成;如果针对处于待发射状态的弹幕数据的处理操作已经完成,则将操作指示信息调整为第二指示信息。本申请实施例通过操作指示信息来运行或阻塞弹幕处理操作的后续操作,避免异步通信导致出现bug。
Description
技术领域
本申请实施例涉及计算机领域,尤其涉及一种基于微信小程序的弹幕处理方法、系统、计算机设备及计算机可读存储介质。
背景技术
弹幕,指的是在呈现视频时同时呈现评论性文字、表情、图案等。目前,弹幕成了为很多观众观看视频、直播的重要元素,其不仅能够使用户表达观看节目感受,而且还能使用户观看其他用户对节目的评论内容,实现用户观看视频时的互动性。
在微信小程序的开发过程中,其与常规的页面开发使用的计算机语言都是JavaScript,两者有很多相似性,但由于运行内核不同又存在些许区别。例如,微信小程序的渲染层与逻辑层是分开的且互不影响的。本发明人发现,由于这种渲染层与逻辑层之间的异步特性,导致在弹幕播放过程中经常出现不可预期的bug,导致播放故障,影响弹幕播放体验。
申请内容
有鉴于此,本申请实施例的目的是提供一种基于微信小程序的弹幕处理方法、系统、计算机设备及计算机可读存储介质,用于解决微信小程序中逻辑层和视图层的异步特性导致在弹幕播放过程中容易处于不可预期的bug的技术问题。
本申请实施例的一个方面提供了一种基于微信小程序的弹幕处理方法,包括:获取视频播放页面,用于输出视频流;获取与所述视频流关联的多个弹幕数据;执行第i次弹幕处理操作:将操作指示信息调整为第一指示信息,所述第一指示信息用于表示阻止执行所述第i次弹幕处理操作的后续操作;对所述多个弹幕数据执行遍历,以查找所述多个弹幕数据中是否包括处于待发射状态的弹幕数据;及如果所述多个弹幕数据中包括所述处于待发射状态的弹幕数据,则:针对所述处于待发射状态的弹幕数据进行处理操作;判断针对所述处于待发射状态的弹幕数据的处理操作是否已经完成;如果针对所述处于待发射状态的弹幕数据的处理操作已经完成,则将所述操作指示信息调整为第二指示信息,所述第二指示信息用于表示允许执行所述第i次弹幕处理操作的后续操作。
可选的,针对所述处于待发射状态的弹幕数据进行处理操作,包括:将所述处于待发射状态的弹幕数据添加到待发射弹幕队列中,并通知所述视图层进行数据更新操作,根据所述处于待发射状态的弹幕数据执行第一次渲染操作;获取所述第一次渲染操作得到的弹幕元素的弹幕宽度;根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道;及如果所述多个弹幕轨道中包括处于空闲状态下的弹幕轨道,则通知所述视图层进行数据更新操作以执行第二次渲染操作;其中,所述第二次渲染操作得到的弹幕元素用于弹幕播放。
可选的,根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道,包括:判断第k个弹幕轨道中是否为空,其中,k为正整数,k的初始值为1;如果第k个弹幕轨道中为空,则判断所述第k个弹幕轨道处于空闲状态下;如果第k个弹幕轨道中不为空,则根据所述弹幕元素的弹幕宽度计算所述弹幕元素的弹幕速度;根据所述弹幕元素的弹幕速度和弹幕发射时间,判断所述弹幕元素的弹幕内容是否会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞;如果所述弹幕元素的弹幕内容不会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞,则判断所述第k个弹幕轨道处于空闲状态下;及如果所述弹幕元素的弹幕内容会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞,则判断所述第k个弹幕轨道处于拥挤状态下。
可选的,所述第i次弹幕处理操作的后续操作包括:第i+1次弹幕处理操作,或,基于用户事件的事件处理操作。
可选的,还包括:如果接收到所述用户事件,则检测所述操作指示信息;如果检测到所述操作指示信息为所述第二指示信息,则对所述用户事件进行事件处理操作。
可选的,还包括:如果检测到所述操作指示信息为所述第一指示信息,则以预定时间间隔检测所述操作指示信息,直至检测到所述操作指示信息被调整为所述第二指示信息。
可选的,还包括:如果所述多个弹幕数据中没有所述处于待发射状态的弹幕数据,则将所述操作指示信息调整为第二指示信息。
本申请实施例的一个方面又提供了一种基于微信小程序的弹幕处理系统,所述基于微信小程序的弹幕处理系统包括:第一获取模块,用于获取视频播放页面,用于输出视频流。第二获取模块,用于获取与所述视频流关联的多个弹幕数据。弹幕处理模块,用于执行第i次弹幕处理操作:将操作指示信息调整为第一指示信息,所述第一指示信息用于表示阻止执行所述第i次弹幕处理操作的后续操作;对所述多个弹幕数据执行遍历,以查找所述多个弹幕数据中是否包括处于待发射状态的弹幕数据;及如果所述多个弹幕数据中包括所述处于待发射状态的弹幕数据,则:针对所述处于待发射状态的弹幕数据进行处理操作;判断针对所述处于待发射状态的弹幕数据的处理操作是否已经完成;如果针对所述处于待发射状态的弹幕数据的处理操作已经完成,则将所述操作指示信息调整为第二指示信息,所述第二指示信息用于表示允许执行所述第i次弹幕处理操作的后续操作。
本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现上述基于微信小程序的弹幕处理方法的步骤。
本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行上述基于微信小程序的弹幕处理方法的步骤。
本申请实施例提供的基于微信小程序的弹幕处理方法、系统、设备及计算机可读存储介质,提供了模拟单线程的阻塞机制,通过操作指示信息来运行或阻塞弹幕操作的后续操作,确保每执行完一次弹幕处理操作再执行下一次弹幕处理操作,使得上一次弹幕处理操作不会受到下一次弹幕操作的影响,从而导致不可预期的bug出现。
附图说明
图1示意性示出了根据本申请实施例的基于微信小程序的弹幕处理方法的应用环境图;
图2示意性示出了根据本申请实施例一的基于微信小程序的弹幕处理方法的流程图;
图3示意性示出了图2中步骤S208的子步骤;
图4示意性示出了图3中步骤S304的新增步骤;
图5示意性示出了图2中的新增步骤;
图6示意性示出了图2中的另一新增步骤;
图7示意性示出了根据本申请实施例一的基于微信小程序的弹幕处理方法的另一流程图;
图8示意性示出了根据本申请实施例二的通信系统的框图;及
图9示意性示出了根据本申请实施例三的适于实现基于微信小程序的弹幕处理方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请实施例进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请实施例,并不用于限定本申请实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
本发明人发现:微信小程序,其与普通网页(HTML)开发使用的计算机语言都是JavaScript,两者有很多相似性,但由于运行内核不同又存在些许区别。例如:
1.普通网页开发中,渲染线程和JavaScript线程的执行是互斥的,当渲染线程工作时JavaScript线程会被阻塞。而,微信小程序的渲染层与逻辑层是分开的且互不影响的。
2.普通网页开发中,可以使用浏览器提供的DOM API和BOM API,进行DOM的选择和操作。而在微信小程序中由于逻辑层与渲染层是分开的,没有完整浏览器对象,所以无法使用DOM API与BOM API。
3.由于微信小程序的逻辑层与渲染层(视图层)之间的通信的过程是异步的,因此微信小程序对弹幕元素的获取与操作是异步的,而浏览器中则是同步的。
虽然微信小程序提供了获取弹幕元素的API,但是由于微信小程序的渲染层与逻辑层是异步通信的原因,获取弹幕元素的操作在微信小程序中变成了一个异步的过程,这样直接导致了对弹幕元素的宽度、位置等数据的获取变得复杂。当下一帧对弹幕的一系列复杂计算开始时,上一帧计算还停留在了获取弹幕元素信息的步骤,这样就导致大量不可预期的bug出现。为解决上述问题,本实施例提供了一些示例性的解决方案,具体如下。
图1示意性示出了根据本申请实施例的基于微信小程序的弹幕处理方法的环境应用示意图。
提供商网络2可以通过网络9连接多个计算机设备10。在一些实施例中,内容服务3由提供商网络2提供。在其他实施例中,内容服务3可以由与提供商网络2连接的独立内容商提供。
内容服务3可以包括诸如互联网协议视频流服务之类的内容流服务。内容流服务可以被配置为经由各种传输技术来分发内容。内容服务3可以被配置为提供诸如视频,音频,文本数据,其组合等的内容。内容可以包括内容流(例如,视频流,音频流,信息流),内容文件(例如,视频文件,音频文件,文本文件)和/或其他数据。
提供商网络2可以实现弹幕服务,该弹幕服务被配置为允许用户评论和/或共享与内容相关联的评论。弹幕内容可以与内容一起呈现在同一屏幕上。例如,弹幕内容可以在内容上方的覆盖图中显示。弹幕内容在显示时可能会带有动画效果。例如,弹幕内容可以被显示为在内容上滚动(例如,从右到左,从左到右,从上到下,从下到上),这种动画效果可以基于CSS3(cascading style sheets,层叠样式表)的transition属性实现的。
提供商网络2可以位于诸如单个场所之类的数据中心,或者分布在不同的地理位置(例如,在多个场所)中。提供商网络2可以经由一个或多个网络9提供服务。网络9包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或类似。网络9可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,其组合等。网络9可以包括无线链路,诸如蜂窝链路,卫星链路,Wi-Fi链路等。
提供商网络2可以包括消息服务5。消息服务5可以被配置为接收多个消息。所述多个消息可以包括与内容相关联的多个弹幕内容以及与所述多个弹幕内容有关的信息。
消息服务5可以被配置为管理用于各种内容项的消息。用户可以浏览内容并访问不同的内容项以查看针对特定内容的评论,例如其他用户针对该特定内容发布的评论。来自与特定内容项目相关联的用户的评论可以被输出到观看该特定内容项目的其他用户。例如,访问内容项目(例如,视频剪辑)的所有用户可以查看与该内容项目相关联的评论。输入的弹幕内容可以实时或接近实时地输出。
消息服务5可以被配置为处理多个消息。消息服务5可以基于与相应弹幕内容相关联的信息(例如,时间戳,递增的标识符)来实现对多个消息的队列或以其他方式优先处理。消息服务5可以被配置为使用负载平衡来处理多个消息。例如,消息服务5可以被配置为使用多个处理节点中的一个或多个来处理多个消息,对消息进行优先级排序,对消息进行负载平衡等。消息服务5可以至少临时地存储多个消息。消息服务5可以将多个消息存储在诸如数据库的数据存储中。
消息服务5可以被配置为通过执行分组过程来处理消息。分组过程可以包括基于特征对多个消息进行分组。如果两个消息具有相同的特征或在特征的阈值范围内,则可以将这两个消息分为一组。与特定内容项(例如,流,文件,节目,电影,歌曲,游戏会话)相关联的消息可以与同一组相关联。例如,消息可以包括内容标识符或与内容标识符相关联。内容标识符可以唯一地标识内容项。如果在消息中找到了内容标识符,或者与消息相关联(例如,单独发送),则消息服务5可以将消息与内容项相关联的组相关联。
消息服务5可以执行自然语言处理,主题识别,模式识别,人工智能等,以自动确定消息的特征和/或对消息进行分组。作为示例,频繁出现的短语或模式可以被识别为主题。作为另一个示例,可以维护与内容相关联的主题的数据库。主题可以包括流派(例如,动作,戏剧,喜剧),个性(例如,演员,女演员,导演),语言等。可以基于客户端设备和/或发送消息的用户的特征对消息进行分组。可以存储人口统计学,兴趣,历史和/或类似物以供多个用户确定消息的潜在分组。
消息服务5可以进一步被配置为通过生成输出数据来处理消息。输出数据可以包括用于实现基于相应上下文输出评论的指令。输出数据可以包括用于基于上下文指示应用覆盖评论的应用数据。输出数据可以包括用于生成(例如,编码)与评论相对应的内容的指令。
输出数据可以用于生成(例如,编码)输出弹幕内容,例如输出内容流。输出的评论内容可以与诸如内容服务3所提供的内容之类的原始内容项进行组合(例如,多路复用)。所得的组合可以包括单个包装(例如,容器,运输容器,运输流)中的内容。包可包括原始内容项以及输出的弹幕内容(例如,显示在原始内容项的顶部)。
消息服务5可以进一步被配置为通过执行筛选过程来处理消息。筛选过程可以包括拒绝或标记与筛选标准匹配的消息。筛选标准可以指定术语和/或短语,例如亵渎,仇恨言论,不雅语言等。筛选标准可以指定字符,例如符号,字体等。筛选标准可以指定语言,计算机可读代码模式等。
提供商网络2可以进一步包括处理服务6。处理服务6可以被配置为提供对各种服务的处理,例如提供商网络2的服务。处理服务6可以包括多个网络节点8。多个网络节点8可以处理与消息服务5相关联的任务。多个网络节点8可以被实现为一个或多个计算设备,一个或多个处理器,一个或多个虚拟计算实例,它们的组合,和/或类似的东西。
多个网络节点8可以由一个或多个计算设备实现。一个或多个计算设备可以包括虚拟化的计算实例。虚拟化的计算实例可以包括虚拟机,例如计算机系统,操作系统,服务器等的仿真。计算设备可以基于虚拟映像和/或定义用于仿真的特定软件(例如,操作系统,专用应用程序,服务器)的其他数据,由计算设备加载虚拟机。随着对不同类型的处理服务的需求改变,可以在一个或多个计算设备上加载和/或终止不同的虚拟机。可以实现管理程序来管理同一计算设备上不同虚拟机的使用。
在一些实施例中,多个网络节点8可以处理由多个计算机设备提交的事件。这些事件可以与讨论实时新闻,视频,社交热点,针对某些用户帐户的报告等相关联。在其他实施例中,多个网络节点8可以处理针对审阅网络社区中的事件的多个用户账户的性能评估。在一些实现中,这些服务可以被实现为专用计算设备,专用处理器,专用虚拟机实例和/或类似物。在其他实现中,各种不同的节点可以实现与这些服务相关联的任何功能。
多个计算机设备10可以被配置为访问提供商网络2的内容和服务。多个计算机设备10可以包括任何类型的电子设备,诸如移动设备、平板设备、膝上型计算机、工作站、虚拟现实设备,游戏设备、机顶盒、数字流媒体设备、车辆终端、智能电视、机顶盒、电子书阅读器等。
多个计算机设备10可以与一个或多个用户相关联。单个用户可以使用多个计算机设备10中的一个或多个来访问提供商网络2。多个计算机设备10可以旅行到各种位置并使用不同的网络来访问提供商网络2。
计算机设备10可以包括应用12。应用12将内容输出(例如,显示、渲染、呈现)给用户。所述应用12可以是视频客户端(如bilibili客户端)、浏览器客户端或基于微信的微信小程序等。内容可以包括视频,音频,弹幕内容和/或类似物。所述弹幕内容可以是文字、表情、图案等,可以有不同的颜色、大小、动画、滚动方向等。
作为示例,应用程序12可以将针对某些用户的报告发送到处理服务,并且应用程序12还可以将关于报告的评论发送到处理服务6。从多个计算机设备10发送的事件或评论包括提交事件的原因,与事件相关联的内容属性,用户帐户信息等。
实施例一
图2示意性示出了根据本申请实施例一的基于微信小程序的弹幕处理方法的流程图。可以理解,本方法实施例可以被执行在计算机设备10中,且本方法实施例的流程图不用于对执行步骤的顺序进行限定。
如图2所示,该基于微信小程序的弹幕处理方法可以包括步骤S200~S212,其中:
步骤S200,获取视频播放页面,用于输出视频流。
所述视频播放页面是基于微信小程序框架之上的页面。
所述视频播放页面包逻辑层和视图层,其中逻辑层包括弹幕加载器、弹幕计算器和弹幕时间线。其中,所述弹幕加载器负责弹幕数据的请求和编译解析等操作,所述弹幕计算器负责弹幕数据的遍历查找等操作,所述弹幕时间线用于负责更新时间线。
步骤S202,获取与所述视频流关联的多个弹幕数据。
在示例性的实施例中,所述多个弹幕数据可以是原始弹幕数据。
在另外一些实施例中,所述多个弹幕数据也可以是克隆多个原始弹幕数据得到的弹幕数据。具体的:计算机设备10通过弹幕加载器向提供商网络2发起弹幕获取请求并接收提供商网络2返回的多个原始弹幕数据;之后,克隆所述多个原始弹幕数据。其中,所述多个原始弹幕数据不用弹幕播放,所述多个弹幕数据用于弹幕播放。
多个原始弹幕数据和多个弹幕数据是信息一致的,且以数组格式保存。
举例而言,每个弹幕数据可以包括如下信息:
{
stime,//发射在视频中的时间单位秒
mode,//弹幕的类型
size,//弹幕文字的大小
color,//弹幕文字的颜色
date,//弹幕创建的日期
class,//弹幕的类名
uid,//创建弹幕的用户id
dmid,//弹幕id
text,//弹幕的文字内容
duration,//弹幕的持续时间
border,//弹幕是否有边框
borderColor,//弹幕边框的颜色
style,//弹幕的行间样式
}
由于所述视频播放页面是基于微信小程序框架之上的页面,其包括逻辑层和视图层,所述逻辑层和视图层之间是异步通信的,该种异步通信的方式,在处理所述多个弹幕时容易出现bug。为解决该问题,本实施例模拟单线程的阻塞机制,具体实现步骤如下:
步骤S204,执行第i次弹幕处理操作:将操作指示信息调整为第一指示信息,所述第一指示信息用于表示阻止执行所述第i次弹幕处理操作的后续操作;对所述多个弹幕数据执行遍历,以查找所述多个弹幕数据中是否包括处于待发射状态的弹幕数据。
其中,i为正整数,i的初始值为1。
对所述多个弹幕数据的遍历操作,还可以包括:查找所述多个弹幕数据中是否包括处于过期状态的弹幕数据,用于触发弹幕回收机制。示例性的,各个处于待发射状态的弹幕数据的发射时间小于或等于所述视频流的当前播放时间;各个处于过期状态的弹幕数据的发射时间和运动时间之和小于所述当前播放时间。为适应于微信小程序框架,还包括:获取所述视频流的当前播放时间:通过弹幕时间线以模拟requestAnimationFrame的模式更新时间线,以将更新后的时间线确定为所述视频流的当前播放时间。
执行第i次弹幕处理操作,具体的:(1)将操作指示信息调整为第一指示信息,第一指示信息表示第i次弹幕处理操作正在进行中,以此告知计算机设备10不要执行第i次弹幕处理操作之外的后续操作。(2)启动弹幕计算器和弹幕时间线,弹幕时间线会在弹幕开始播放后以模拟requestAnimationFrame的模式每16.7毫秒模拟视频时间去更新时间线,以此确定弹幕时间线和当前播放时间同步。比较当前播放时间和每条弹幕数据中的stime(发射时间)。如果某条弹幕数据的发射时间小于或等于当前播放时间时,则认为这条弹幕数据到达了发射时间,则将条弹幕数据向后添加到待发射弹幕队列中。如果某条弹幕数据中的stime(发射时间)和duration(运动时间)之和小于当前播放时间,则说明这条弹幕数据已经“过期“了。在其他实施例中,也可以添加一秒的间隔时间,即如果某条弹幕数据中的“stime(发射时间)+duration(运动时间)+1秒”小于当前播放时间,则说明这条弹幕的运动时间结束已经超过了1秒钟,则认为这条弹幕数据已经“过期“了。
步骤S206,判断所述多个弹幕数据中是否包括所述处于待发射状态的弹幕数据。如果是,进入步骤S208,否则进入步骤S212。
步骤S208,针对所述处于待发射状态的弹幕数据进行处理操作。
如图3所示,针对所述处于待发射状态的弹幕数据的处理操作,可以包括如下步骤:步骤S300,将所述处于待发射状态的弹幕数据添加到待发射弹幕队列中,并通知所述视图层进行数据更新操作,根据所述处于待发射状态的弹幕数据执行第一次渲染操作。所述第一次渲染操作:在可视区之外,插入真实的弹幕元素,用户无法看到并且没有添加运动效果。这么做是为了方便后面获取弹幕元素的真实的弹幕宽度来计算弹幕的运动初始位置和运动终点位置,以及用于作为判断多个弹幕轨道是否有处于空闲状态的弹幕轨道的依据之一。步骤S302,获取所述第一次渲染操作得到的弹幕元素的弹幕宽度。步骤S304,根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道。步骤S306,如果所述多个弹幕轨道中包括处于空闲状态下的弹幕轨道,则通知所述视图层进行数据更新操作以执行第二次渲染操作。其中,所述第二次渲染操作得到的弹幕元素用于弹幕播放。所述第二次渲染操作:将弹幕元素的弹幕速度、弹幕宽度、弹幕内容、运动效果等进行数据绑定,通知视图层根据绑定数据进一步渲染出相应的弹幕元素。如果所述多个弹幕轨道中没有处于空闲状态下的弹幕轨道,意味着目前弹幕过多,则从待发射弹幕队列丢弃该处于待发射状态的弹幕数据。
由于逻辑层和视图层(用于执行渲染操作)之间是异步通信的,如第一次渲染操作的步骤、获取弹幕元素信息的步骤和第二次渲染操作的步骤,均是异步操作。在处理这些异步操作的过程中,如果插入其他的操作,容易导致会出现不可预期的bug。即,在这些异步操作操作的过程中,维持操作指示信息为第一指示信息,以阻塞其他无关操作,从而面临在这些异步操作过程中因其他无关操作导致出现bug。
可以理解,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道,可以由多种判断方式。例如,如图4所示,可以通过如下步骤判断各个弹幕轨道是否处于空闲状态:步骤S400,判断第k个弹幕轨道中是否为空。如果是,进入步骤S402,否则进入步骤S404。步骤S402,判断所述第k个弹幕轨道处于空闲状态下。步骤S404,根据所述弹幕元素的弹幕宽度计算所述弹幕运算的弹幕速度。步骤S406,根据所述弹幕元素的弹幕速度和弹幕发射时间,判断所述弹幕元素的弹幕内容是否会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞。如果是,进入步骤S402,否则进入步骤S408。步骤S408,判断所述第k个弹幕轨道处于拥挤状态下。
步骤S210,判断针对所述处于待发射状态的弹幕数据的处理操作是否已经完成。如果是,进入步骤S212,否则,执行循环判断操作。
步骤S212,将所述操作指示信息调整为第二指示信息。
所述第二指示信息用于表示允许执行所述第i次弹幕处理操作的后续操作。
①如果所述多个弹幕数据中没有所述处于待发射状态的弹幕数据,则说明发现没有新的弹幕元素创建需求,所述第i次弹幕处理操作中没有需要处理的后续步骤(如,第一次渲染操作的步骤、获取弹幕元素信息的步骤和第二次渲染操作的步骤),意味着此时所述第i次弹幕处理操作已经完成,因此,将所述操作指示信息调整为第二指示信息,以此告知计算机设备10可以执行所述第i次弹幕处理操作的后续操作。此时,会依据更新的时间线(如模拟requestAnimationFrame机制在16.7毫秒过后)开始执行第i+1次弹幕处理操作。这样做的目的是节省计算的时间,并减少不必要的性能浪费。
②如果所述视图层的数据更新操作已经完成,处于待发射状态的弹幕数据已经被处理完毕,即所述第i次弹幕处理操作已经完成,因此,将所述操作指示信息调整为第二指示信息,以此告知计算机设备10可以执行所述第i次弹幕处理操作的后续操作。
可以理解:
由于微信小程序的渲染层与逻辑层是异步通信的原因,针对所述处于待发射状态的弹幕数据的处理操作中包括多个异步步骤,如获取元素信息的操作,这样直接导致了对元素信息的宽度、位置等数据的获取变得复杂。有可能当这次弹幕处理操作的弹幕数据还在某个处理环节(元素信息的获取环节)中时,已经开启了下一次弹幕处理操作的遍历操作,容易导致不可预期的bug出现。本实施例中,模拟单线程的阻塞机制,通过操作指示信息来运行或阻塞弹幕操作的后续操作,确保每执行完一次弹幕处理操作再执行下一次弹幕处理操作,使得上一次弹幕处理操作不会受到下一次弹幕操作的影响,从而导致不可预期的bug出现。
在示例性的实施例中,所述第i次弹幕处理操作的后续操作包括:第i+1次弹幕处理操作,或,基于用户事件的事件处理操作。所述用户事件可以是暂停、停止、重置等事件。
在示例性的实施例中,如图5所示,所述基于微信小程序的弹幕处理方法还可以包括步骤S500~S502,其中:步骤S500,如果接收到所述用户事件,则检测所述操作指示信息;步骤S502,如果检测到所述操作指示信息为所述第二指示信息,则对所述用户事件进行事件处理操作。
在示例性的实施例中,如图6所示,所述基于微信小程序的弹幕处理方法还可以包括步骤S600~S604,其中:步骤S600,如果接收到所述用户事件,则检测所述操作指示信息;步骤S602,如果检测到所述操作指示信息为所述第二指示信息,则对所述用户事件进行事件处理操作。步骤S604,如果检测到所述操作指示信息为所述第一指示信息,则以预定时间间隔检测所述操作指示信息,直至检测到所述操作指示信息被调整为所述第二指示信息。
经过测试,完成一次完整的弹幕处理操作,所需要的时间大约为50毫秒左右,也就是说在这50毫秒的时间内不允许处理其它的任务(如上面所述的下一次弹幕处理操作或事件处理操作),否则会导致数据不同步而引发的不可控的bug。因此,当用户点击了暂停,这时需要暂停弹幕计算器和弹幕时间线的工作,如果此时恰好在50毫秒区间内则会导致bug出现,所以需要等待当前这次弹幕处理操作结束之后才再执行暂停的一系列指令类似于暂停的还有停止、重置命令。
作为一个示例:如用户点击了暂停、停止、重置等命令或是任何需要在计算空闲状态下才能执行的命令是,生成相应的用户事件,每16毫秒检测一次所述操作指示信息为所述第二指示信息,如果是所述第二指示信息,则执行事件处理操作,如调用用户事件对应的事件处理函数。这样不仅能避免由于逻辑层与渲染层之间的异步通信问题导致的不可预期的bug,还能减少很多次重复的计算,提升整体的渲染性能。
如图7所示,下面提供一个用于辅助理解的具体示例,需要说明的是,该示例并不用于限制专利保护范围。
步骤S700,对微信小程序页面执行初始化操作。
步骤S702,发起弹幕数据请求。
在所述微信小程序页面完成初始化之后,弹幕加载器向提供商网络2发起弹幕数据请求,并接收提供商网络2返回的XML(extensible markup language,可扩展标记语言)文件。
所述弹幕加载器位于微信小程序页面的逻辑层。该逻辑层还包括弹幕计算器和弹幕时间线。
步骤S704,编译XML文件以多个弹幕数据。
具体的,将XML文件编译为Element对象,从Element对象上获取到多个弹幕数据,如弹幕内容、发射时间、弹幕颜色、运动时间等属性(弹幕数据),并将这些属性转化为json的数据格式存储到本地数组中,得到存储在本地数组中的多个弹幕数据。
所述多个弹幕数据:可以用于弹幕播放;也可以用于作为原始数据,不用于弹幕播放,例如可以克隆所述多个弹幕数据,将克隆得到的多个克隆弹幕数据用于弹幕播放。
在本示例性中,将所述多个弹幕数据用于弹幕播放。
步骤S706,开始弹幕播放:
执行第i次弹幕处理操作,并将操作指示信息调整为第一指示信息,i为正整数,i的初始值为1。
所述第一指示信息用于表示阻止执行所述第i次弹幕处理操作的后续操作。
其中:所述弹幕计算器用于弹幕筛选和计算。所述弹幕时间线用于管理弹幕时间线,即同步视频流的当前播放时间。
所述弹幕计算器和弹幕时间线是位于应用12(如浏览器、微信小程序)的逻辑层的,可以通过该逻辑层让让弹幕时间线与弹幕计算器以递归调用的帧渲染模式并行工作。
当弹幕计算器检测到所述多个弹幕数据发射完毕时,所述弹幕计算器和所述弹幕时间线终止运行并重置弹幕系统。另外,如果计算机设备10的视图层检测到用户点击了暂停、停止等事件时,视图层将该用户事件通知逻辑层,由于当前逻辑层还在执行第i次弹幕处理操作,因此需要做如下步骤:弹幕时间线的时间线每更新一次,则检测一次所述操作指示信息,直至检测到操作指示信息被调整为所述第二指示信息时,开始处理所述用户事件。该处做法好处的,防止计算机设备在执行10执行第i次弹幕处理操作时,因此,用户事件操作的插入而导致不可预期的bug。
步骤S708,通过弹幕计算器遍历各个弹幕数据,以计算和筛选各个弹幕数据是否处于待发射状态或处于过期状态。
下面以其中一个弹幕数据j为例:
步骤S710,判断弹幕数据j是否到达发射时间。如果是,进入步骤S712,否则进入步骤S714。
根据视频流的当前播放时间和弹幕数据j中的发射时间,判断弹幕数据j中的弹幕内容是否达到发射时间,也就是说,弹幕数据j在当前是否处于待发射状态。
步骤S712,将弹幕数据j发送到待发射弹幕队列中,通知所述视图层进行数据更新操作以执行第一次渲染操作。进入步骤S718。
通知所述视图层进行数据更新操作,根据所述处于待发射状态的弹幕数据执行第一次渲染操作。
如:在可视区之外,插入真实的弹幕元素,用户无法看到并且没有添加运动效果,这么做是为了获取弹幕元素的真实的弹幕宽度,来计算弹幕的运动初始位置和运动终点位置,以及用于作为判断多个弹幕轨道是否有处于空闲状态的弹幕轨道的依据之一。
添加到待发射弹幕队列中的弹幕数据j会从所述多个弹幕数据中删除,以减少后续遍历次数。
步骤S714,判断弹幕数据j是否处于过期状态。如果是,进入步骤S716;否则,该弹幕数据j将等待下一次遍历操作。
步骤S716,销毁弹幕数据j。例如,将弹幕数据j从所述多个弹幕数据删除,以减少后续遍历次数。
步骤S718,判断当前是否有空闲的弹幕轨道。如果是,进入步骤S720,否则进入步骤S716。
示例性的,获取所述第一次渲染操作得到的弹幕元素的弹幕宽度。根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道。
假设第k个弹幕轨道中最后一条弹幕内容的发射时间为t1且运动时间为t2,那么这最后一条弹幕内容完全消失在弹幕播放区域(可视区)的时间就是t1+t2,而弹幕数据j的发射时间t3、运动时间t4、弹幕宽度w2和所述弹幕播放区域的显示宽度w1,那么弹幕数据j的运动速度为就是s1=(w1+w2)/t4,由此可以得出所述弹幕数据j的弹幕内容第一次到达弹幕播放区域的左边边界的时间为t3+(w1/s1)。当t1+t2<t3+(w1/s1)时,则表示当这最后一条弹幕内容完全消失在弹幕播放区域范围时,弹幕数据j的弹幕内容仍然没有追上这最后一条弹幕内容,也就意味着这最后一条弹幕内容和弹幕数据j的弹幕内容之间不会相撞,因此可以将所述第k个弹幕轨道的当前状态确定为空闲状态。
步骤S720,加入虚拟弹幕轨迹和渲染队列,通知所述视图层进行数据更新操作以执行第二次渲染操作。
①将所述待发射弹幕队列中的弹幕数据j加入到虚拟弹幕轨道中。其中,所述虚拟弹幕轨道用于判断各个弹幕轨道是否处于空闲状态。
②将所述待发射弹幕队列中的弹幕数据j加入到渲染列表中,以创建相应的弹幕元素。
当第i次弹幕处理操作中筛选出的各个处于待发生的弹幕数据均被处理(执行完第二次弹幕渲染操作或被销毁)完成之后,将操作指示信息调整为第二指示信息。i自加1,以执行下一次弹幕处理操作或如果暂停、停止、重置等其他后续操作。
实施例二
图8示意性示出了根据本申请实施例二的基于微信小程序的弹幕处理系统的框图,该基于微信小程序的弹幕处理系统可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图8所示,该基于微信小程序的弹幕处理系统800可以包括第一获取模块810、第二获取模块820及弹幕处理模块830,其中:
第一获取模块810,用于获取视频播放页面,用于输出视频流;
第二获取模块820,用于获取与所述视频流关联的多个弹幕数据;
弹幕处理模块830,用于执行第i次弹幕处理操作:将操作指示信息调整为第一指示信息,所述第一指示信息用于表示阻止执行所述第i次弹幕处理操作的后续操作;对所述多个弹幕数据执行遍历,以查找所述多个弹幕数据中是否包括处于待发射状态的弹幕数据;及如果所述多个弹幕数据中包括所述处于待发射状态的弹幕数据,则:针对所述处于待发射状态的弹幕数据进行处理操作;判断针对所述处于待发射状态的弹幕数据的处理操作是否已经完成;如果针对所述处于待发射状态的弹幕数据的处理操作已经完成,则将所述操作指示信息调整为第二指示信息,所述第二指示信息用于表示允许执行所述第i次弹幕处理操作的后续操作。
在示例性的实施例中,针对所述处于待发射状态的弹幕数据进行处理操作,包括:将所述处于待发射状态的弹幕数据添加到待发射弹幕队列中,并通知所述视图层进行数据更新操作,根据所述处于待发射状态的弹幕数据执行第一次渲染操作;获取所述第一次渲染操作得到的弹幕元素的弹幕宽度;根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道;及如果所述多个弹幕轨道中包括处于空闲状态下的弹幕轨道,则通知所述视图层进行数据更新操作以执行第二次渲染操作;其中,所述第二次渲染操作得到的弹幕元素用于弹幕播放。
在示例性的实施例中,根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道,包括:判断第k个弹幕轨道中是否为空;如果第k个弹幕轨道中为空,则判断所述第k个弹幕轨道处于空闲状态下;如果第k个弹幕轨道中不为空,则根据所述弹幕元素的弹幕宽度计算所述弹幕运算的弹幕速度;根据所述弹幕元素的弹幕速度和弹幕发射时间,判断所述弹幕元素的弹幕内容是否会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞;如果所述弹幕元素的弹幕内容不会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞,则判断所述第k个弹幕轨道处于空闲状态下;及如果所述弹幕元素的弹幕内容会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞,则判断所述第k个弹幕轨道处于拥挤状态下。
在示例性的实施例中,所述第i次弹幕处理操作的后续操作包括:第i+1次弹幕处理操作,或,基于用户事件的事件处理操作。
在示例性的实施例中,弹幕处理模块830,还用于:如果接收到所述用户事件,则检测所述操作指示信息;如果检测到所述操作指示信息为所述第二指示信息,则对所述用户事件进行事件处理操作。
在示例性的实施例中,弹幕处理模块830,还用于:如果检测到所述操作指示信息为所述第一指示信息,则以预定时间间隔检测所述操作指示信息,直至检测到所述操作指示信息被调整为所述第二指示信息。
在示例性的实施例中,弹幕处理模块830,还用于:如果所述多个弹幕数据中没有所述处于待发射状态的弹幕数据,则将所述操作指示信息调整为第二指示信息。
实施例三
图9示意性示出了根据本申请实施例三的适于实现基于微信小程序的弹幕处理方法的计算机设备的硬件架构示意图。本实施例中,计算机设备10是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。计算机设备10可以是诸如智能手机、电脑、投影仪、机顶盒等,也可以是虚拟机主机进程和一个或多个虚拟机实例,或者是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图9所示,计算机设备10至少包括但不限于:可通过系统总线相互通信链接存储器1010、处理器1020、网络接口1030。其中:
存储器1010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器1010可以是计算机设备10的内部存储模块,例如该计算机设备10的硬盘或内存。在另一些实施例中,存储器1010也可以是计算机设备10的外部存储设备,例如该计算机设备10上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器1010还可以既包括计算机设备10的内部存储模块也包括其外部存储设备。本实施例中,存储器1010通常用于存储安装于计算机设备10的操作系统和各类应用软件,例如基于微信小程序的弹幕处理方法的程序代码等。此外,存储器1010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器1020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器1020通常用于控制计算机设备10的总体操作,例如执行与计算机设备10进行数据交互或者通信相关的控制和处理等。本实施例中,处理器1020用于运行存储器1010中存储的程序代码或者处理数据。
网络接口1030可包括无线网络接口或有线网络接口,该网络接口1030通常用于在计算机设备10与其他计算机设备之间建立通信链接。例如,网络接口1030用于通过网络将计算机设备10与外部终端相连,在计算机设备10与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图9仅示出了具有部件1010-1030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器1010中的基于微信小程序的弹幕处理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器1020)所执行,以完成本申请。
实施例四
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于微信小程序的弹幕处理方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的基于微信小程序的弹幕处理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种基于微信小程序的弹幕处理方法,其特征在于,包括:
获取基于微信小程序的视频播放页面,用于输出视频流,所述视频播放页面包括异步通信的逻辑层和视图层,其中,所述逻辑层包括弹幕加载器、弹幕计算器和弹幕时间线,所述弹幕加载器负责弹幕数据的请求和编译解析操作,所述弹幕计算器负责弹幕数据的遍历查找操作,所述弹幕时间线用于负责更新弹幕时间线;
通过所述弹幕加载器向网络提供商发起弹幕数据请求,以获取与所述视频流关联的多个弹幕数据;
执行第i次弹幕处理操作:将操作指示信息调整为第一指示信息,所述第一指示信息用于表示阻止执行所述第i次弹幕处理操作的后续操作;启动所述弹幕时间线,以模拟requestAnimationFrame的模式模拟视频时间去更新弹幕时间线,以此确定弹幕时间线和当前播放时间同步;通过所述弹幕计算器对所述多个弹幕数据执行遍历,以查找所述多个弹幕数据中是否包括处于待发射状态的弹幕数据;及
如果所述多个弹幕数据中包括所述处于待发射状态的弹幕数据,则:
针对所述处于待发射状态的弹幕数据进行处理操作,包括:将所述处于待发射状态的弹幕数据添加到待发射弹幕队列中,并通知所述视图层进行数据更新操作;
判断针对所述处于待发射状态的弹幕数据的处理操作是否已经完成;及
如果针对所述处于待发射状态的弹幕数据的处理操作已经完成,则将所述操作指示信息调整为第二指示信息,所述第二指示信息用于表示允许执行所述第i次弹幕处理操作的后续操作;其中,针对所述处于待发射状态的弹幕数据的处理操作已经完成,包括:所述视图层的数据更新操作已经完成。
2.根据权利要求1所述的弹幕处理方法,其特征在于,
针对所述处于待发射状态的弹幕数据进行处理操作,包括:
将所述处于待发射状态的弹幕数据添加到待发射弹幕队列中,并通知所述视图层进行数据更新操作,根据所述处于待发射状态的弹幕数据执行第一次渲染操作;
获取所述第一次渲染操作得到的弹幕元素的弹幕宽度;
根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道;及
如果所述多个弹幕轨道中包括处于空闲状态下的弹幕轨道,则通知所述视图层进行数据更新操作以执行第二次渲染操作;其中,所述第二次渲染操作得到的弹幕元素用于弹幕播放。
3.根据权利要求2所述的弹幕处理方法,其特征在于,
根据所述弹幕元素的弹幕宽度,判断多个弹幕轨道中是否包括处于空闲状态下的弹幕轨道,包括:
判断第k个弹幕轨道中是否为空,其中,k为正整数,k的初始值为1;
如果第k个弹幕轨道中为空,则判断所述第k个弹幕轨道处于空闲状态下;
如果第k个弹幕轨道中不为空,则根据所述弹幕元素的弹幕宽度计算所述弹幕元素的弹幕速度;
根据所述弹幕元素的弹幕速度,判断所述弹幕元素的弹幕内容是否会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞;
如果所述弹幕元素的弹幕内容不会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞,则判断所述第k个弹幕轨道处于空闲状态下;及
如果所述弹幕元素的弹幕内容会与所述第k个弹幕轨道中的其他弹幕内容发生碰撞,则判断所述第k个弹幕轨道处于拥挤状态下。
4.根据权利要求1所述的弹幕处理方法,其特征在于,所述第i次弹幕处理操作的后续操作包括:第i+1次弹幕处理操作,或,基于用户事件的事件处理操作。
5.根据权利要求4所述的弹幕处理方法,其特征在于,还包括:
如果接收到所述用户事件,则检测所述操作指示信息;
如果检测到所述操作指示信息为所述第二指示信息,则对所述用户事件进行事件处理操作。
6.根据权利要求4所述的弹幕处理方法,其特征在于,还包括:
如果检测到所述操作指示信息为所述第一指示信息,则以预定时间间隔检测所述操作指示信息,直至检测到所述操作指示信息被调整为所述第二指示信息。
7.根据权利要求1所述的弹幕处理方法,其特征在于,还包括:
如果所述多个弹幕数据中没有所述处于待发射状态的弹幕数据,则将所述操作指示信息调整为第二指示信息。
8.一种基于微信小程序的弹幕处理系统,其特征在于,包括:
第一获取模块,用于获取基于微信小程序的视频播放页面,用于输出视频流,所述视频播放页面包括异步通信的逻辑层和视图层,其中,所述逻辑层包括弹幕加载器、弹幕计算器和弹幕时间线,所述弹幕加载器负责弹幕数据的请求和编译解析操作,所述弹幕计算器负责弹幕数据的遍历查找操作,所述弹幕时间线用于负责更新弹幕时间线;
第二获取模块,用于通过所述弹幕加载器向网络提供商发起弹幕数据请求,以获取与所述视频流关联的多个弹幕数据;
弹幕处理模块,用于执行第i次弹幕处理操作:将操作指示信息调整为第一指示信息,所述第一指示信息用于表示阻止执行所述第i次弹幕处理操作的后续操作;启动所述弹幕时间线,以模拟requestAnimationFrame的模式模拟视频时间去更新弹幕时间线,以此确定弹幕时间线和当前播放时间同步;通过所述弹幕计算器对所述多个弹幕数据执行遍历,以查找所述多个弹幕数据中是否包括处于待发射状态的弹幕数据;及如果所述多个弹幕数据中包括所述处于待发射状态的弹幕数据,则:
针对所述处于待发射状态的弹幕数据进行处理操作,包括:将所述处于待发射状态的弹幕数据添加到待发射弹幕队列中,并通知所述视图层进行数据更新操作;
判断针对所述处于待发射状态的弹幕数据的处理操作是否已经完成;
如果针对所述处于待发射状态的弹幕数据的处理操作已经完成,则将所述操作指示信息调整为第二指示信息,所述第二指示信息用于表示允许执行所述第i次弹幕处理操作的后续操作;其中,针对所述处于待发射状态的弹幕数据的处理操作已经完成,包括:所述视图层的数据更新操作已经完成。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1至7任一项所述方法的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911168313.7A CN111026558B (zh) | 2019-11-25 | 2019-11-25 | 基于微信小程序的弹幕处理方法和系统 |
PCT/CN2020/081494 WO2021103365A1 (zh) | 2019-11-25 | 2020-03-26 | 基于微信小程序的弹幕处理方法和系统 |
US17/779,534 US11711333B2 (en) | 2019-11-25 | 2020-03-26 | Bullet comment processing method and system based on WeChat applet |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911168313.7A CN111026558B (zh) | 2019-11-25 | 2019-11-25 | 基于微信小程序的弹幕处理方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111026558A CN111026558A (zh) | 2020-04-17 |
CN111026558B true CN111026558B (zh) | 2020-11-17 |
Family
ID=70202114
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911168313.7A Active CN111026558B (zh) | 2019-11-25 | 2019-11-25 | 基于微信小程序的弹幕处理方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11711333B2 (zh) |
CN (1) | CN111026558B (zh) |
WO (1) | WO2021103365A1 (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967896A (zh) * | 2014-08-04 | 2015-10-07 | 腾讯科技(北京)有限公司 | 一种显示弹幕评论信息的方法和装置 |
CN105828164A (zh) * | 2016-04-28 | 2016-08-03 | 武汉斗鱼网络科技有限公司 | 一种避免弹幕重叠显示的方法及系统 |
CN106131643A (zh) * | 2016-07-13 | 2016-11-16 | 乐视控股(北京)有限公司 | 一种弹幕处理方法、处理装置及其电子设备 |
CN106454485A (zh) * | 2016-10-25 | 2017-02-22 | 华中科技大学 | 一种速度可变弹幕的弹道分配方法 |
CN106658204A (zh) * | 2015-11-02 | 2017-05-10 | 天脉聚源(北京)科技有限公司 | 一种视频直播弹幕播放方法及系统 |
CN108696766A (zh) * | 2018-05-15 | 2018-10-23 | 北京字节跳动网络技术有限公司 | 弹幕显示方法、装置和计算机可读存储介质 |
CN109062650A (zh) * | 2018-08-01 | 2018-12-21 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN109640154A (zh) * | 2018-12-14 | 2019-04-16 | 苏州好玩友网络科技有限公司 | 网页弹幕显示方法、装置、设备及存储介质 |
CN110069620A (zh) * | 2019-04-30 | 2019-07-30 | 上海掌门科技有限公司 | 评论信息展示方法、装置、电子设备及介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9230257B2 (en) * | 2012-03-30 | 2016-01-05 | Sap Se | Systems and methods for customer relationship management |
KR101942308B1 (ko) * | 2012-08-08 | 2019-01-25 | 삼성전자주식회사 | 메시지 기능을 제공하기 위한 방법 및 그 전자 장치 |
CN104936035B (zh) * | 2015-06-19 | 2018-04-17 | 腾讯科技(北京)有限公司 | 一种弹幕处理方法及系统 |
CN105898456A (zh) * | 2015-12-02 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 多媒体播放时的交互方法及装置 |
US10565258B2 (en) * | 2015-12-10 | 2020-02-18 | Comcast Cable Communications, Llc | Selecting and sharing content |
US10708215B2 (en) * | 2016-02-26 | 2020-07-07 | Shanghai Hode Information Technology Co., Ltd. | Method and apparatus for displaying comment information |
CN106209580A (zh) * | 2016-06-27 | 2016-12-07 | 合肥仁弘投资管理有限公司 | 微信弹幕系统 |
EP3264783B1 (en) | 2016-06-29 | 2021-01-06 | Nokia Technologies Oy | Rendering of user-defined messages having 3d motion information |
CN108124167A (zh) * | 2016-11-30 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 一种播放处理方法、装置和设备 |
US10574601B2 (en) * | 2017-08-03 | 2020-02-25 | International Business Machines Corporation | Managing and displaying online messages along timelines |
CN109547859B (zh) * | 2017-09-21 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 视频片段的确定方法和装置 |
CN107690078B (zh) * | 2017-09-28 | 2020-04-21 | 腾讯科技(深圳)有限公司 | 弹幕信息显示方法、提供方法以及设备 |
CN107770563B (zh) | 2017-10-10 | 2019-10-25 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息处理方法及装置 |
CN108024121B (zh) * | 2017-11-17 | 2020-02-07 | 武汉微摇科技文化有限公司 | 语音弹幕同步方法和系统 |
CN107948761B (zh) * | 2017-12-12 | 2021-01-01 | 上海哔哩哔哩科技有限公司 | 弹幕播放控制方法、服务器及弹幕播放控制系统 |
CN108810645B (zh) * | 2018-06-28 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN108900889B (zh) * | 2018-06-29 | 2021-01-29 | 上海哔哩哔哩科技有限公司 | 弹幕回音显示方法、装置、系统及计算机可读存储介质 |
CN110033463B (zh) * | 2019-04-12 | 2021-06-04 | 腾讯科技(深圳)有限公司 | 一种前景数据生成及其应用方法、相关装置和系统 |
-
2019
- 2019-11-25 CN CN201911168313.7A patent/CN111026558B/zh active Active
-
2020
- 2020-03-26 WO PCT/CN2020/081494 patent/WO2021103365A1/zh active Application Filing
- 2020-03-26 US US17/779,534 patent/US11711333B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104967896A (zh) * | 2014-08-04 | 2015-10-07 | 腾讯科技(北京)有限公司 | 一种显示弹幕评论信息的方法和装置 |
CN106658204A (zh) * | 2015-11-02 | 2017-05-10 | 天脉聚源(北京)科技有限公司 | 一种视频直播弹幕播放方法及系统 |
CN105828164A (zh) * | 2016-04-28 | 2016-08-03 | 武汉斗鱼网络科技有限公司 | 一种避免弹幕重叠显示的方法及系统 |
CN106131643A (zh) * | 2016-07-13 | 2016-11-16 | 乐视控股(北京)有限公司 | 一种弹幕处理方法、处理装置及其电子设备 |
CN106454485A (zh) * | 2016-10-25 | 2017-02-22 | 华中科技大学 | 一种速度可变弹幕的弹道分配方法 |
CN108696766A (zh) * | 2018-05-15 | 2018-10-23 | 北京字节跳动网络技术有限公司 | 弹幕显示方法、装置和计算机可读存储介质 |
CN109062650A (zh) * | 2018-08-01 | 2018-12-21 | 武汉斗鱼网络科技有限公司 | 弹幕消息分发方法、装置、设备及存储介质 |
CN109640154A (zh) * | 2018-12-14 | 2019-04-16 | 苏州好玩友网络科技有限公司 | 网页弹幕显示方法、装置、设备及存储介质 |
CN110069620A (zh) * | 2019-04-30 | 2019-07-30 | 上海掌门科技有限公司 | 评论信息展示方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US11711333B2 (en) | 2023-07-25 |
US20230037528A1 (en) | 2023-02-09 |
WO2021103365A1 (zh) | 2021-06-03 |
CN111026558A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111031400B (zh) | 弹幕呈现方法和系统 | |
CN111031376B (zh) | 基于微信小程序的弹幕处理方法和系统 | |
CN112399192A (zh) | 网络直播中的礼物展示方法和系统 | |
US11909812B2 (en) | Application control method and apparatus, electronic device, and storage medium | |
CN111031399B (zh) | 弹幕处理方法和系统 | |
CN113181646A (zh) | 游戏数据方法及装置、电子设备、存储介质 | |
CN113225607B (zh) | 直播间礼物展示的方法与系统 | |
EP3125541A1 (en) | Data acquisition and interaction method, set top box, server and multimedia system | |
CN112714365B (zh) | 视频播放方法和系统 | |
US11442606B2 (en) | User interface interaction method and system | |
CN111026558B (zh) | 基于微信小程序的弹幕处理方法和系统 | |
CN111327941B (zh) | 一种离线视频播放方法、装置、设备及介质 | |
CN115190338A (zh) | 视频预加载的方法和系统 | |
CN109999490B (zh) | 一种降低联网云应用延迟的方法及系统 | |
US12135858B2 (en) | Method and system for displaying and interacting with comments | |
CN118764675A (zh) | 弹幕数据的显示控制方法和装置 | |
CN117314527A (zh) | 广告实现方法及装置 | |
CN117750085A (zh) | 游戏中的弹幕处理方法和装置 | |
CN115599252A (zh) | 交互方法及装置 | |
CN115942060A (zh) | 弹幕数据处理方法和系统 | |
CN114697694A (zh) | 互动处理方法和系统 | |
CN116456152A (zh) | 视频播放控制的方法和系统 | |
CN117909602A (zh) | 页面内容推荐的方法和装置 | |
CN117793389A (zh) | 直播卡顿原因确定方法和装置 | |
CN117519828A (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 |