CN114302212A - 一种视频弹幕排版方法、装置、设备及存储介质 - Google Patents

一种视频弹幕排版方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114302212A
CN114302212A CN202111659744.0A CN202111659744A CN114302212A CN 114302212 A CN114302212 A CN 114302212A CN 202111659744 A CN202111659744 A CN 202111659744A CN 114302212 A CN114302212 A CN 114302212A
Authority
CN
China
Prior art keywords
bullet screen
track
bullet
typesetting
screen
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.)
Granted
Application number
CN202111659744.0A
Other languages
English (en)
Other versions
CN114302212B (zh
Inventor
李正浩
李国庆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing IQIYI Science and Technology Co Ltd
Original Assignee
Beijing IQIYI Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing IQIYI Science and Technology Co Ltd filed Critical Beijing IQIYI Science and Technology Co Ltd
Priority to CN202111659744.0A priority Critical patent/CN114302212B/zh
Publication of CN114302212A publication Critical patent/CN114302212A/zh
Application granted granted Critical
Publication of CN114302212B publication Critical patent/CN114302212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明实施例提供了一种视频弹幕排版方法、装置、设备及存储介质,其中,所述方法包括:获取待播放视频的各视频时刻对应的弹幕数组,所述弹幕数组包含已按优先级排序的至少一条弹幕;在视频播放的过程中,将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列;根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理。利用本发明实施例所提供的方法,在每个排版周期,仅需要根据弹幕类型及各弹幕轨道的轨道状态,对弹幕队列中的弹幕进行排版,其判断处理过程较少,解决了现有技术中按优先级设置弹幕数组存放弹幕的方式,容易造成弹幕排版过程中分支判断过多、排版效率不佳的技术问题。

Description

一种视频弹幕排版方法、装置、设备及存储介质
技术领域
本发明涉及视频播放技术领域,特别是涉及一种视频弹幕排版方法、装置、设备及存储介质。
背景技术
视频弹幕是一种新兴的视频评论展示方式,可以跟随视频内容动态展示网友评论,有效增强视频观看的趣味性及娱乐性。
现有弹幕排版方式中,需要为每一种优先级类型的弹幕设置数组序列存放相应优先级的弹幕,且在排版过程中,需要从头到尾遍历全部弹幕数组,以获取相应时刻的弹幕并按照优先级进行排版,其条件分支判断较多,不仅导致维护逻辑大量增加,也使得一些通用逻辑无法复用,更使得排版效率不佳,造成不必要的遍历开销、CPU资源浪费。
发明内容
本发明实施例所要解决的技术问题是提供一种视频弹幕排版方法、装置、设备及存储介质,以解决现有按优先级设置弹幕数组存放弹幕的方式,容易造成弹幕排版过程中分支判断过多、排版效率不佳的技术问题。
相应的,本发明实施例还提供了一种视频弹幕排版装置、设备及存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本发明是通过如下技术方案实现的:
第一方面提供一种视频弹幕排版方法,所述方法包括:
获取待播放视频的各视频时刻对应的弹幕数组,所述弹幕数组包含已按优先级排序的至少一条弹幕;
在视频播放的过程中,将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列;
根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理。
第二方面提供一种视频弹幕排版装置,所述装置包括:
获取模块,用于获取待播放视频的各视频时刻对应的弹幕数组,所述弹幕数组包含已按优先级排序的至少一条弹幕;
添加模块,用于在视频播放的过程中,将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列;
排版模块,用于根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理。
第三方面提供一种设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述视频弹幕排版方法的步骤。
第四方面提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述视频弹幕排版方法中的步骤。
与现有技术相比,本发明实施例包括以下优点:
本发明实施例提供的视频弹幕排版方法,先将弹幕按视频时间分为多个弹幕数组并对弹幕数组中的弹幕按优先级进行排序,然后在视频播放的过程中,可以快速将当前视频时间对应的弹幕数组中各弹幕添加至弹幕队列进行缓存,因为在每个排版周期,仅需要根据弹幕类型及各弹幕轨道的轨道状态,对弹幕队列中的弹幕进行排版,其判断处理过程较少,解决了现有技术中按优先级设置弹幕数组存放弹幕的方式,容易造成弹幕排版过程中分支判断过多、排版效率不佳的技术问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
图1是本发明实施例提供的一种视频弹幕排版方法的流程图;
图2是本发明实施例中弹幕的获取及缓存过程示意图;
图3是本发明实施例中滚动弹幕轨道当前所允许的弹幕速度上限值的计算原理示意图;
图4是本发明实施例中为滚动弹幕查找排版轨道的过程示意图;
图5是本发明实施例中为固定弹幕查找排版轨道的过程示意图;
图6是本发明实施例中遍历弹幕队列取弹幕进行排版的流程示意图;
图7是本发明实施例中遍历弹幕轨道排版弹幕的过程示意图;
图8是本发明实施例提供的一种视频弹幕排版装置的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
请参阅图1,为本发明实施例提供的一种视频弹幕排版方法的流程图,具体可以包括如下步骤100~300。
在实际应用中,本发明实施例所提供的视频弹幕排版方法,可以应用于电子设备或者电子设备中的具体应用程序中,上述电子设备可以为手机、平板的电脑、智能电视等。
步骤100:获取待播放视频的各视频时刻对应的弹幕数组,所述弹幕数组包含已按优先级排序的至少一条弹幕。
该步骤中,需要为现有的弹幕新增SortIndex属性,SortIndex枚举类型用于指定对应弹幕的优先级,该优先级具体可以是基于不同弹幕类型确定。
该步骤中,待播放视频即用户通过点击等方式确定需要观看的视频;在确定了待播放视频后,下载该待播放视频对应的全部弹幕数组,并按视频时刻对弹幕进行分组,并对每个视频时刻对应的弹幕数组中的各弹幕根据优先级由高到低进行排序,从而将各视频时刻对应的弹幕归类汇总分成一个弹幕数组。
可选地,在一种实施方式中,预先创建缓存池BulletPool,用于存放下载的所有类型弹幕,该缓存池可以按照视频时刻将各弹幕归类汇总,并对每各视频时刻如每一秒的弹幕按照弹幕ID去重后再跟根据SortIndex排序,从而获得各视频时刻对应的弹幕数组,弹幕数字所包含的各弹幕已按优先级排序。
可选地,在一种具体实施方式中,在对各弹幕数组中的各弹幕进行排序前,先对各弹幕进行过滤,然后再按优先级进行排序。其中,通过过滤可以滤除不支持播放的弹幕、种草类弹幕、广告类弹幕、不文明类弹幕、敏感表情弹幕等类型的弹幕,从而净化弹幕内容。
步骤200、在视频播放的过程中,将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列。
该步骤中,创建弹幕队列,用以在视频播放的过程中,缓存每个视频时刻待排版的弹幕,因而在视频播放的过程中,按视频时刻,依次将当前视频时刻对应的弹幕数组中的各弹幕添加至弹幕队列中,以便于排版当前视频时刻对应的弹幕。其中,因为各视频时刻的弹幕数组已预先按优先级进行排序,因而仅需将当前视频时刻对应的弹幕数组中的各弹幕整体添加至弹幕队列尾端即可执行后续的排版,而无需再在排版时进行复杂的逻辑排序。
具体地,在视频播放的过程中,创建缓冲区BulletBuffer,用于存放当前视频时刻需要展示的所有弹幕,并在该缓冲区采用先进先出(First In First Out,FIFO)的队列结构创建弹幕队列,从而保证缓冲区里弹幕的排版顺序。
步骤300、根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理。
该步骤中,弹幕类型指的是弹幕属于哪一种类型的弹幕,该弹幕类型可以有多种划分标准。例如,可以按是否具有指定弹幕轨道进行划分为存在指定弹幕轨道的弹幕及不存在指定弹幕轨道的弹幕,其中,指定弹幕轨道用于指定展示的弹幕轨道;再如,可以按照弹幕内容是否滚动显示划分为固定弹幕及滚动弹幕。
该步骤中,因为不同弹幕类型的弹幕有不同的弹幕轨道要求,而弹幕轨道能够排版弹幕需要考虑其具体状态,如是否正在显示弹幕、是否被占用等,所以在对弹幕队列中的弹幕进行排版处理时,需要综合弹幕队列中弹幕的弹幕类型以及各弹幕轨道的轨道;同时,因为弹幕队列中的弹幕进行预先按优先级进行了排序,因而根据弹幕类型及弹幕轨道的轨道状态,即可快速根据弹幕队列中的弹幕完成当前排版周期的弹幕排版。
本发明实施例中,弹幕的排版周期与视频时刻对应,即每隔一个视频时刻进行一次弹幕排版,使得每次排版的弹幕可以与视频时刻同步。
综上所述,本发明实施例提供的视频弹幕排版方法,先将弹幕按视频时间分为多个弹幕数组并对弹幕数组中的弹幕按优先级进行排序,然后在视频播放的过程中,可以快速将当前视频时间对应的弹幕数组中各弹幕添加至弹幕队列进行缓存,因为在每个排版周期,仅需要根据弹幕类型及各弹幕轨道的轨道状态,对弹幕队列中的弹幕进行排版,其判断处理过程较少,解决了现有技术中按优先级设置弹幕数组存放弹幕的方式,容易造成弹幕排版过程中分支判断过多、排版效率不佳的技术问题。
可选地,在一种实施方式中,上述弹幕队列为先进先出队列,本发明实施例所提供的视频弹幕排版方法,在上述步骤200之后,还包括步骤201:
步骤201、在接收到需要即时显示的第一弹幕时,将所述第一弹幕插入至当前排版周期的所述弹幕队列的前端;
其中,所述第一弹幕为在所述当前视频时刻生成的弹幕,所述当前排版周期为所述当前视频时刻对应的排版周期。
该步骤中,因为弹幕队列是先进先出队列,而弹幕是按视频时刻将对应弹幕数组中的弹幕添加的,因而可以按视频时刻的先后顺序依次排版各视频时刻对应的弹幕,且可以将已排版的弹幕从弹幕队列中移除,从而保证弹幕队列的缓存空间。
该实施方式中,当前视频时刻生成的第一弹幕,也即新生成的弹幕,例如系统弹幕或在当前视频时刻在其他视频播放设备上编辑产生的弹幕,该类弹幕的优先级较高,但该类弹幕未包含在已下载的当前时刻对应的弹幕数组中,而将该第一弹幕插入至当前排版周期的弹幕队列的前端,而弹幕队列是先进先出队列,从而可以实现对第一弹幕即时排版显示。
可选地,在一种实施方式中,弹幕属性包括窗口期时长,本发明实施例所提供的视频弹幕排版方法,在上述步骤200之后,还包括步骤202:
步骤202、在根据所述窗口期时长确定弹幕超时的情况下,将所述弹幕从所述弹幕队列移除。
该实施方式中,为弹幕新增窗口期时长(ShowInterval)的弹幕属性,该窗口期时长为弹幕参与排版的冗余时长,以增大弹幕成功排版的几率;根据该窗口期时长判断弹幕队列中各弹幕是否超时,也即判断当前视频时刻是否处于弹幕允许进行排版的时间范围内,如果弹幕未超时,则弹幕持续保留在弹幕队列中,又因为弹幕队列是先进先出队列,因而该未超时的弹幕会在后续排版周期优先进行排版;而如果弹幕已经超时,则将弹幕从弹幕队列移除,以保证该弹幕不影响后续视频时刻对应弹幕数组中弹幕的排版。
具体地,弹幕超时的情况,包括:若第一时段大于所述弹幕的所述窗口期时长,则确定所述弹幕超时;所述第一时段为所述当前视频时刻与所述弹幕所属弹幕数组对应的视频时刻之间的时间差值。
其中,每个弹幕都是从其所述弹幕数组对应的视频时刻开始参与弹幕排版,而其窗口期时长为弹幕参与排版的冗余时长,因而若当前视频时刻与弹幕所属弹幕数组对应的视频时刻之间的时间差值大于该窗口期时长,则说明弹幕超时,否则弹幕未超时。
示例地,本发明实施例中弹幕数据的获取及缓存过程如图2所示:
先把各种弹幕数组下载、组装及按照定义的规则进行过滤,然后按视频时刻的不同对弹幕进行分组,并将各视频时刻的弹幕按优先级(SortIdx)由高到低进行排序后映射到BulletPool的对应时间的弹幕数组中;
在每一轮排版周期,从BulletPool里面,获取当前视频时刻对应的已经排序好的弹幕数组,添加进入弹幕队列BufferQueue的尾端;
其中,如果接收到如假写弹幕(Fake Bullet)、系统弹幕(System Bullet)等需要立即显示的弹幕,则将其插入到BufferQueue的顶端;
其中,弹幕新增有窗口期时长(ShowInterval)的弹幕属性,用以判断弹幕是否超时,并在弹幕超时时将其从弹幕队列移除。
可选地,在一种实施方式中,本发明实施例所提供的视频弹幕排版方法,在上述步骤200之后,还包括步骤203:
步骤203、在所述弹幕属于目标弹幕类,或者所述弹幕已排版的情况下,将所述弹幕从所述弹幕队列中移除;
其中,所述目标弹幕类为用户指定屏蔽的弹幕类。
该实施方式中,对于用户指定屏蔽的目标弹幕类,例如横竖屏切换场景的弹幕、精简模式下的花哨弹幕及用户设置的包括需要屏蔽的目标关键字的弹幕;在排版前将目标弹幕类弹幕从弹幕队列中移除,可以满足用户的个性化屏蔽需求。
该实施方式中,对于已排版的弹幕,及时将其从弹幕队列中移除,以保证弹幕队列有足够的缓存空间存储后续视频时刻对应的弹幕数组中的弹幕,同时缩减系统遍历弹幕队列进行找寻弹幕进行排版的运算量。
可选地,在一种实施方式中,弹幕类型包括存在指定弹幕轨道,该指定弹幕轨道用于指定展示的弹幕轨道;上述轨道状态包括轨道的占用状态;针对弹幕队列中的任一弹幕,上述步骤300包括步骤301~步骤304。
该实施方式中,为弹幕新增指定弹幕轨道(TrackLine)的弹幕属性,从而将弹幕分成存在指定弹幕轨道类型的弹幕及不存在指定弹幕轨道类型的弹幕。其中,指定弹幕轨道用于指定展示的弹幕轨道,也即需要将弹幕排版至该指定弹幕轨道进行展示。
该实施方式中,为弹幕轨道抽象一个BulletTrack类,用于记录弹幕轨道的轨道状态,该轨道状态包括占用状态,也即轨道是否被占用的状态。
步骤301、在所述弹幕存在指定弹幕轨道的情况下,确定所述指定弹幕轨道的轨道状态。
该步骤中,在弹幕存储指定弹幕轨道的情况下,因为需要将该弹幕排版至该指定弹幕轨道,因而要先确定该指定弹幕轨道的轨道状态,以判断该指定弹幕轨道是否处于占用状态。
步骤302、若所述指定弹幕轨道未被占用,将所述弹幕排版至所述指定弹幕轨道。
上述步骤302中,在弹幕对应的指定弹幕轨道未被占用的情况下,将该弹幕直接排版到该指定弹幕轨道,从而实现在指定弹幕轨道排版显示该弹幕的需求。
步骤303、若所述指定弹幕轨道已被占用,保留所述弹幕在所述弹幕队列中,以供下一排版周期执行确定所述指定弹幕轨道的轨道状态的步骤。
该步骤中,在弹幕对应的指定弹幕轨道已被占用的情况下,说明当前排版周期无法排版该弹幕,而该弹幕又需要在该指定弹幕轨道进行排版展示,因而保留所述弹幕在所述弹幕队列中,以供下一排版周期执行确定该指定弹幕轨道的轨道状态的步骤,直至该弹幕成功排版至指定弹幕轨道,从而保证实现在指定弹幕轨道排版显示该弹幕的需求。
可选地,在弹幕包括窗口期时长的情况下,上述步骤303包括:若所述指定弹幕轨道已被占用,在所述弹幕未超时的情况下,保留所述弹幕在所述弹幕队列中,以供下一排版周期执行确定指定弹幕轨道的轨道状态的步骤;若所述指定弹幕轨道已被占用,在弹幕超时的情况下,将该弹幕从弹幕队列中移除。
也即在弹幕存在指定弹幕轨道时,在弹幕未超时的情况下,均可尝试将弹幕排版至指定弹幕轨道,而在弹幕超时的情况下,则直接将该弹幕从弹幕轨道移除。
步骤304、在所述弹幕不存在指定弹幕轨道的情况下,根据各弹幕轨道的轨道状态,对所述弹幕进行排版处理。
该步骤中,在弹幕不存在指定弹幕轨道的情况下,因为弹幕没有特定轨道要求,因而可以直接根据各弹幕轨道的占用状态,将弹幕排版至未被占用的弹幕轨道。
上述实施方式中,通过为弹幕新增指定弹幕轨道属性,可以将弹幕排版至特定的弹幕轨道展示。
可选地,在一种实施方式中,针对弹幕队列中的任一弹幕,上述步骤300包括步骤311~步骤313。
该实施方式中,按弹幕在排版展示时是否滚动分为滚动弹幕类型的弹幕及固定弹幕类型的弹幕。
步骤311、在所述弹幕为滚动弹幕的情况下,确定未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值。
该步骤中,滚动弹幕轨道当前所允许的弹幕速度上限值指的是滚动弹幕轨道当前所允许排版展示的下一条弹幕的最大速度。
其中,在弹幕的弹幕类型为滚动弹幕的情况下,因为滚动弹幕会在展示时滚动,因而在找寻该弹幕排版的弹幕轨道时,不仅需要考虑轨道是否被占用,还需要获取这条轨道所允许的最大速度,以避免超过该最大速度使该待排版的弹幕与该轨道上已排版显示的上一条弹幕发生碰撞。
步骤312、若所述弹幕速度上限值大于或等于所述滚动弹幕的弹幕速度,则将所述弹幕排版至所述未被占用的滚动弹幕轨道。
该步骤中,按照弹幕滚动行为定义,每条滚动弹幕在屏幕上漏出总时长固定,因而弹幕长度越长,其滚动速度越快。
在上述弹幕速度上限值大于或等于滚动弹幕弹幕速度的情况下,该弹幕排版至该弹幕速度上限值对应的弹幕轨道后,因该弹幕滚动速度较小,无法追赶上前一条排版至该弹幕轨道的滚动弹幕并与其产生碰撞,因而可以将该弹幕速度上限值对应的未被占用的滚动弹幕轨道确定为该弹幕的目标弹幕轨道,即可以将该弹幕排版至该未被占用的滚动弹幕轨道进行展示。
步骤313、若所述弹幕速度上限值均小于所述滚动弹幕的弹幕速度,则从各所述未被占用的滚动弹幕轨道中预留轨道,以供所述滚动弹幕在后续排版周期排版。
该步骤中,在各弹幕对应的上述弹幕速度上限值小于滚动弹幕弹幕速度的情况下,说明该弹幕在当前排版周期排版至任一条弹幕轨道后,均会追赶上前一条排版至该弹幕轨道的滚动弹幕并与其产生碰撞,因而无法在当前周期完成对该弹幕的排版,需要在后续排版周期进行排版,因而从各未被占用的滚动弹幕轨道中预留轨道,以供该弹幕在后续排版周期排版。其中,可以将当前所允许的弹幕速度上限值最高的未被占用滚动弹幕轨道作为上述预留轨道,从而可以节省该弹幕的等待排版周期,尽快将该弹幕排版展示。
可选地,在一种具体实施方式中,上述确定所述未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值,包括:
确定所述未被占用的滚动弹幕轨道上正在显示的最后一条弹幕的剩余滚动时长;
由所述未被占用的滚动弹幕轨道距离除以所述剩余滚动时长,确定所述未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值。
该具体实施方式中,剩余滚动时长为滚动弹幕轨道上正在显示的最后一条弹幕从在屏幕所处的当前位置滚动至弹幕消失的屏幕一侧所需的时长,而滚动弹幕均由屏幕另一侧开始滚动显示,因而由未被占用的滚动弹幕轨道距离除以该剩余滚动时长,所计算出的速度为从屏幕另一侧新增的滚动弹幕不会与该正在显示的最后一条弹幕发生碰撞的最大滚动速度,也即为未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值。
示例地,在弹幕从屏幕右侧开始滚动显示并由屏幕左侧结束显示时,先用轨道上正在显示的最后一条弹幕的最右边位置与屏幕左侧的距离,除以该最后一条弹幕的滚动速度,得到最后一条弹幕滚动到头所用的时长,也即上述剩余滚动时长;然后用显示画面宽度(即从屏幕右侧新增弹幕的剩余滚动距离,除以上述剩余滚动时长得到当前轨道所允许的最大速度。
具体地,针对任何一条弹幕轨道,当右侧新增弹幕时为了避免碰撞,当前轨道允许的弹幕速度上限值(Track.maxSpeed)按以下公式计算:
Track.maxSpeed=ScreenWidth/(LastBulletMaxPositionX/LastBulletSpeed)
其中,ScreenWidth为屏幕宽度,LastBulletMaxPositionX为轨道上正在显示的最后一条弹幕的最右边位置与屏幕左侧的距离,LastBulletSpeed为轨道上正在显示的最后一条弹幕的滚动速度。
示例地,如图3所示,对于第四条弹幕轨道,其当前显示的最后一条弹幕为“你们两不要这么搞笑”,因而LastBulletMaxPositionX为弹幕“你们两要不要这么搞笑”最右边位置与屏幕左侧的距离,LastBulletSpeed则为弹幕“你们两要不要这么搞笑”的滚动速度,ScreenWidth为屏幕宽度。
在实际应用中,弹幕轨道的BulletTrack类可以记录当前轨道是第几行、最大速度、是否被占用、被占用的弹幕以及当前所允许的弹幕速度上限值等。
上述实施方式中,在弹幕为滚动弹幕时,通过判断未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值,并在弹幕速度上限值大于或等于滚动弹幕的弹幕速度的情况下,才将所述弹幕排版至未被占用的滚动弹幕轨道,避免了弹幕排版展示时发生碰撞。
示例地,为滚动弹幕查找排版轨道的过程可参阅图4。
如图4所示,为滚动速度为126的弹幕查找可用轨道的流程如下:
对于轨道Track0,当前有弹幕活动,第一条轨道被Settled,则跳过;
对于轨道Track1,允许的弹幕速度上限值为103,而弹幕速度为126,速度不满足条件,因而跳过;
对于轨道Track2,当前有弹幕未显示完,最大速度为0,因而跳过;
对于轨道Track3,当前轨道设置了预留弹幕,处于占用状态(Settled),因而跳过;
对于轨道Track4和Track5,当前两个轨道有正在显示的跨轨道弹幕,弹幕速度上限值均为113,因113<126,最大速度不满足要求,因而跳过;
对于轨道Track6,当前轨道正在显示一个父子弹幕,父弹幕显示完,但子弹幕尚未显示,处于Settled,因而跳过
对于轨道Track7,处于未占用状态(Unsettled),且MaxSpeed 169>126,也即速度满足条件,因而把弹幕设置到该轨道上,并且将该轨道状态改为Settled。
如图4所示,为滚动速度为270的弹幕查找可用轨道的流程如下:
对于轨道Track0~Track7,同判断过程同为滚动速度126的弹幕查找可用轨道的场景;
对于轨道Track8~Track11,因轨道都是Unsettled状态,但最大速度都不满足要求,则选择弹幕速度上限值最大的轨道Track9,设置为轨道的预留弹幕,并且该弹幕为跨轨道类型,则需要把Track9和Track10都设置为Settled,以供滚动速度为270的弹幕下一周期排版。
对于轨道Track13~Track14,其轨道所在行数超出了弹幕轨道行数上限值,因而也跳过;
其中,Track13的应用场景为瀑布弹幕等特殊弹幕,也即在待排版的弹幕为瀑布弹幕等特殊弹幕时,可以忽略弹幕轨道行数上限值的限制显示,而将弹幕排版至Track13。
可选地,上述实施方式中,上述步骤300还包括步骤314:
步骤314、在所述弹幕为固定弹幕的的情况下,若找寻到当前未显示弹幕的固定弹幕轨道,则将所述固定弹幕排版至所述固定弹幕轨道。
该步骤中,对于弹幕队列中的固定弹幕,因为无需考虑弹幕之间因滚动速度过快发生碰撞的问题,因而只要找到当前未显示其他弹幕的固定弹幕轨道,就可以将其作为待排版弹幕的目标轨道,并将其排版至该目标轨道。
具体地,若该固定弹幕为置顶弹幕,则从第一条轨道开始遍历所有可用的轨道;若该固定弹幕为置底弹幕,则从第后一条轨道开始遍历所有可用的轨道;如果轨道内没有弹幕在显示即指定该轨道排版该固定弹幕;如果遍历的次数大于允许显示的最大轨道数量则停止查找。固定弹幕查找排版轨道的过程如图5所示。
本示例地,遍历弹幕队列取弹幕进行排版的整体流程如图6:
在步骤601中,从弹幕队列顶端开始循环遍历每一条弹幕;
在步骤602中,判断所取的弹幕是否为需要过滤掉的属于目标弹幕类弹幕,是则进入步骤609中将该缓存的弹幕队列中移除,否则进入步骤603;
在步骤603中,根据窗口期时长判断所取的弹幕是否超时,是则进入步骤609中将该缓存的弹幕队列中移除,否则进入步骤604;
在步骤604中,根据弹幕类型及弹幕轨道的轨道状态为该弹幕找寻合适的弹幕轨道;若找到合适的弹幕轨道则说明可以将该弹幕排版至该合适的弹幕轨道,因而进入步骤608中,并指定将该弹幕排版至该找寻到的合适的弹幕轨道,然后进入步骤609,即将该缓存的弹幕队列中移除;而若当前排版周期未找到合适的弹幕轨道,则进入步骤606;
在步骤606中,分析所取弹幕的弹幕类型;如果为固定弹幕,则重新进入步骤601中;如果为滚动弹幕,则进入步骤607;
在步骤607中,在该该滚动弹幕没有超时的情况下会为其查找预留轨道,找到了预留轨道则进入步骤608中,并指定将该弹幕排版至该预留的弹幕轨道,即占用该轨道,并且该弹幕在当前排版周期不再参与排版,而在下个周期会优先尝试排版;然后将该弹幕从弹幕队列中移除。
本发明实施例中,在当前排版周期确定了弹幕队列中弹幕排版的弹幕轨道后,遍历弹幕轨道,并根据轨道的状态排版相应的弹幕。
具体地,如图7所示,先获取轨道持有的预留弹幕或者当前弹幕,如果是Fixed类型则直接Arrange(排版);如果是滚动弹幕,则判断当前轨道的速度状态是不是满足条件,满足条件则直接排版展示,否则保持Settled状态并在下一轮排版周期继续尝试排版展示;在该弹幕轨道对应的弹幕排版展示完成之后,如果没有子弹幕则释放掉该轨道UnSettled,如果有子弹幕,设置该子弹幕为当前弹幕并且保持Settled的状态。
综上所述,本发明实施例提供的视频弹幕排版方法,为弹幕新增优先级、窗口期时长及指定弹幕轨道等弹幕属性,并建立先进先出的弹幕队列,然后在视频播放之前先将弹幕按视频时间分为多个弹幕数组并对弹幕数组中的弹幕按优先级进行排序,使得在视频播放的过程中,可以快速将当前视频时间对应的弹幕数组中各弹幕添加至弹幕队列进行缓存,后续仅需要根据弹幕类型及各弹幕轨道的轨道状态,即可对弹幕队列中的弹幕进行排版;同时,整个系统可以更加灵活地支持弹幕业务的扩展,只需调整相应配置就可以快速实现增加弹幕类型、调整弹幕展示优先级、调整弹幕展示窗口期、修改弹幕的过滤等业务,提高了可维护性。
其中,需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
请参阅图8,为本发明实施例提供的一种视频弹幕排版装置,其中,包括:
获取模块81,用于获取待播放视频的各视频时刻对应的弹幕数组,所述弹幕数组包含已按优先级排序的至少一条弹幕;
添加模块82,用于在视频播放的过程中,将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列;
排版模块83,用于根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理。。
可选的,在一种实施方式中,所述弹幕队列为先进先出队列;所述的装置还包括:
即时插入模块,用于在将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列的步骤之后,在接收到需要即时显示的第一弹幕时,将所述第一弹幕插入至当前排版周期的所述弹幕队列的前端;
其中,所述第一弹幕为在所述当前视频时刻生成的弹幕,所述当前排版周期为所述当前视频时刻对应的排版周期。
可选的,在一种实施方式中,弹幕属性包括窗口期时长;所述装置还包括:
第一移除模块,用于在将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列的步骤之后,在根据所述窗口期时长确定弹幕超时的情况下,将所述弹幕从所述弹幕队列移除。
可选的,在一种实施方式中,所述装置还包括:
第二移除模块,用于在将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列的步骤之后,在所述弹幕属于目标弹幕类,或者所述弹幕已排版的情况下,将所述弹幕从所述弹幕队列中移除;
其中,所述目标弹幕类为用户指定屏蔽的弹幕类。
可选的,在一种实施方式中,所述弹幕类型包括存在指定弹幕轨道,所述指定弹幕轨道用于指定展示的弹幕轨道;所述轨道状态包括轨道的占用状态;
所述排版模块83包括:
第一确定单元,用于针对所述弹幕队列中的任一弹幕,在所述弹幕存在指定弹幕轨道的情况下,确定所述指定弹幕轨道的轨道状态;
第一排版单元,用于若所述指定弹幕轨道未被占用,将所述弹幕排版至所述指定弹幕轨道;
保留单元,用于若所述指定弹幕轨道已被占用,保留所述弹幕在所述弹幕队列中,以供下一排版周期执行确定所述指定弹幕轨道的轨道状态的步骤;
第二排版单元,用于在所述弹幕不存在指定弹幕轨道的情况下,根据各弹幕轨道的轨道状态,对所述弹幕进行排版处理。
可选的,在一种实施方式中,所述排版模块83包括:
第二确定单元,用于在所述弹幕为滚动弹幕的情况下,确定未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值;
第三排版单元,用于若所述弹幕速度上限值大于或等于所述滚动弹幕的弹幕速度,则将所述弹幕排版至所述未被占用的滚动弹幕轨道;
预留单元,用于若所述弹幕速度上限值均小于所述滚动弹幕的弹幕速度,则从各所述未被占用的滚动弹幕轨道中预留轨道,以供所述滚动弹幕在后续排版周期排版。
可选的,在一种实施方式中,第二确定单元包括:
第一确定子单元,用于确定所述未被占用的滚动弹幕轨道上正在显示的最后一条弹幕的剩余滚动时长;
第二确定子单元,用于由所述未被占用的滚动弹幕轨道距离除以所述剩余滚动时长,确定所述未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值。
本发明实施例包括以下优点:
先将弹幕按视频时间分为多个弹幕数组并对弹幕数组中的弹幕按优先级进行排序,然后在视频播放的过程中,可以快速将当前视频时间对应的弹幕数组中各弹幕添加至弹幕队列进行缓存,因为在每个排版周期,仅需要根据弹幕类型及各弹幕轨道的轨道状态,对弹幕队列中的弹幕进行排版,其判断处理过程较少,解决了现有技术中按优先级设置弹幕数组存放弹幕的方式,容易造成弹幕排版过程中分支判断过多、排版效率不佳的技术问题。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可选的,本发明实施例还提供一种设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的视频弹幕排版方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
可选的,本发明实施例还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的视频弹幕排版方法中的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所述权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种视频弹幕排版方法、装置、设备及存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种视频弹幕排版方法,其特征在于,包括:
获取待播放视频的各视频时刻对应的弹幕数组,所述弹幕数组包含已按优先级排序的至少一条弹幕;
在视频播放的过程中,将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列;
根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理。
2.根据权利要求1所述的方法,其特征在于,所述弹幕队列为先进先出队列;
在将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列的步骤之后,所述方法还包括:
在接收到需要即时显示的第一弹幕时,将所述第一弹幕插入至当前排版周期的所述弹幕队列的前端;
其中,所述第一弹幕为在所述当前视频时刻生成的弹幕,所述当前排版周期为所述当前视频时刻对应的排版周期。
3.根据权利要求1所述的方法,其特征在于,弹幕属性包括窗口期时长;
在将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列的步骤之后,所述方法还包括:
在根据所述窗口期时长确定弹幕超时的情况下,将所述弹幕从所述弹幕队列移除。
4.根据权利要求1所述的方法,其特征在于,在将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列的步骤之后,所述方法还包括:
在所述弹幕属于目标弹幕类,或者所述弹幕已排版的情况下,将所述弹幕从所述弹幕队列中移除;
其中,所述目标弹幕类为用户指定屏蔽的弹幕类。
5.根据权利要求1所述的方法,其特征在于,所述弹幕类型包括存在指定弹幕轨道,所述指定弹幕轨道用于指定展示的弹幕轨道;所述轨道状态包括轨道的占用状态;
针对所述弹幕队列中的任一弹幕,在根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理的步骤,包括:
在所述弹幕存在指定弹幕轨道的情况下,确定所述指定弹幕轨道的轨道状态;
若所述指定弹幕轨道未被占用,将所述弹幕排版至所述指定弹幕轨道;
若所述指定弹幕轨道已被占用,保留所述弹幕在所述弹幕队列中,以供下一排版周期执行确定所述指定弹幕轨道的轨道状态的步骤;
在所述弹幕不存在指定弹幕轨道的情况下,根据各弹幕轨道的轨道状态,对所述弹幕进行排版处理。
6.根据权利要求1所述的方法,其特征在于,根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理的步骤,包括:
在所述弹幕为滚动弹幕的情况下,确定未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值;
若所述弹幕速度上限值大于或等于所述滚动弹幕的弹幕速度,则将所述弹幕排版至所述未被占用的滚动弹幕轨道;
若所述弹幕速度上限值均小于所述滚动弹幕的弹幕速度,则从各所述未被占用的滚动弹幕轨道中预留轨道,以供所述滚动弹幕在后续排版周期排版。
7.根据权利要求6所述的方法,其特征在于,确定所述未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值,包括:
确定所述未被占用的滚动弹幕轨道上正在显示的最后一条弹幕的剩余滚动时长;
由所述未被占用的滚动弹幕轨道距离除以所述剩余滚动时长,确定所述未被占用的滚动弹幕轨道当前所允许的弹幕速度上限值。
8.一种视频弹幕排版装置,其特征在于,包括:
获取模块,用于获取待播放视频的各视频时刻对应的弹幕数组,所述弹幕数组包含已按优先级排序的至少一条弹幕;
添加模块,用于在视频播放的过程中,将当前视频时刻对应的弹幕数组中各弹幕添加至弹幕队列;
排版模块,用于根据弹幕类型及各弹幕轨道的轨道状态,对所述弹幕队列中的弹幕进行排版处理。
9.一种终端设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的视频弹幕排版方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的视频弹幕排版方法中的步骤。
CN202111659744.0A 2021-12-30 2021-12-30 一种视频弹幕排版方法、装置、设备及存储介质 Active CN114302212B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111659744.0A CN114302212B (zh) 2021-12-30 2021-12-30 一种视频弹幕排版方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111659744.0A CN114302212B (zh) 2021-12-30 2021-12-30 一种视频弹幕排版方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114302212A true CN114302212A (zh) 2022-04-08
CN114302212B CN114302212B (zh) 2024-03-15

Family

ID=80972807

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111659744.0A Active CN114302212B (zh) 2021-12-30 2021-12-30 一种视频弹幕排版方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114302212B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117998115A (zh) * 2024-04-03 2024-05-07 北京搜狐新动力信息技术有限公司 弹幕显示方法、装置、设备、可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245960A (zh) * 2014-07-07 2016-01-13 乐视网信息技术(北京)股份有限公司 视频的弹幕显示方法及装置
CN105338394A (zh) * 2014-06-19 2016-02-17 阿里巴巴集团控股有限公司 字幕数据的处理方法及系统
CN106469165A (zh) * 2015-08-18 2017-03-01 腾讯科技(深圳)有限公司 弹幕展示方法及弹幕展示装置
CN106792086A (zh) * 2016-12-12 2017-05-31 上海幻电信息科技有限公司 一种弹幕排版方法及排版系统
CN108696766A (zh) * 2018-05-15 2018-10-23 北京字节跳动网络技术有限公司 弹幕显示方法、装置和计算机可读存储介质
CN109379604A (zh) * 2018-08-15 2019-02-22 深圳点猫科技有限公司 一种基于教育云平台的视频弹幕制作方法及电子设备
CN113573134A (zh) * 2021-07-07 2021-10-29 网易(杭州)网络有限公司 弹幕数据的处理方法及装置、存储介质、电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105338394A (zh) * 2014-06-19 2016-02-17 阿里巴巴集团控股有限公司 字幕数据的处理方法及系统
CN105245960A (zh) * 2014-07-07 2016-01-13 乐视网信息技术(北京)股份有限公司 视频的弹幕显示方法及装置
CN106469165A (zh) * 2015-08-18 2017-03-01 腾讯科技(深圳)有限公司 弹幕展示方法及弹幕展示装置
CN106792086A (zh) * 2016-12-12 2017-05-31 上海幻电信息科技有限公司 一种弹幕排版方法及排版系统
CN108696766A (zh) * 2018-05-15 2018-10-23 北京字节跳动网络技术有限公司 弹幕显示方法、装置和计算机可读存储介质
CN109379604A (zh) * 2018-08-15 2019-02-22 深圳点猫科技有限公司 一种基于教育云平台的视频弹幕制作方法及电子设备
CN113573134A (zh) * 2021-07-07 2021-10-29 网易(杭州)网络有限公司 弹幕数据的处理方法及装置、存储介质、电子设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117998115A (zh) * 2024-04-03 2024-05-07 北京搜狐新动力信息技术有限公司 弹幕显示方法、装置、设备、可读存储介质

Also Published As

Publication number Publication date
CN114302212B (zh) 2024-03-15

Similar Documents

Publication Publication Date Title
CN109326310B (zh) 一种自动剪辑的方法、装置及电子设备
CN103442252B (zh) 视频处理方法及装置
CN111698553B (zh) 视频处理方法、装置、电子设备及可读存储介质
TWI672044B (zh) 字幕資料的處理方法及系統
CN105245960A (zh) 视频的弹幕显示方法及装置
CN112087665B (zh) 视频直播的预览方法、计算设备及计算机存储介质
CN106792086B (zh) 一种弹幕排版方法及排版系统
CN109413484A (zh) 一种弹幕展示方法、装置及存储介质
CN105812885A (zh) 一种视频直播中的弹幕显示方法和系统
CN112653918B (zh) 预览视频生成方法、装置、电子设备及存储介质
CN106303692A (zh) 视频加载方法及装置
CN107577766B (zh) 一种网页3d目标的加载方法及装置
CN112601127B (zh) 视频显示方法及装置、电子设备、计算机可读存储介质
CN110287399A (zh) 直播信息处理方法、装置、电子设备及存储介质
CN105635749A (zh) 产生视频帧集合的方法和设备
CN109167934B (zh) 一种视频处理方法、装置及计算机可读存储介质
CN114302212A (zh) 一种视频弹幕排版方法、装置、设备及存储介质
CN104093084B (zh) 一种播放视频的方法及装置
CN104601535B (zh) 视频处理方法和系统
CN106570060B (zh) 一种信息流中数据的随机抽取方法及装置
CN107749995B (zh) 一种dtv与ott信息与移动端媒介资源投放方法和投放系统
CN107040826A (zh) 视频加载方法和装置、计算机装置和计算机可读存储介质
EP2924688A1 (en) Information processing device, information processing method and program, and information processing system
CN102769634B (zh) 一种web在线信息管理方法及系统
CN114173198A (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