CN108810598A - 直播或者视频播放的弹幕漂移渲染显示的方法及系统 - Google Patents

直播或者视频播放的弹幕漂移渲染显示的方法及系统 Download PDF

Info

Publication number
CN108810598A
CN108810598A CN201710283540.9A CN201710283540A CN108810598A CN 108810598 A CN108810598 A CN 108810598A CN 201710283540 A CN201710283540 A CN 201710283540A CN 108810598 A CN108810598 A CN 108810598A
Authority
CN
China
Prior art keywords
barrage
drift
dictionary
animation
channel
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
Application number
CN201710283540.9A
Other languages
English (en)
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.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710283540.9A priority Critical patent/CN108810598A/zh
Publication of CN108810598A publication Critical patent/CN108810598A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4318Generation of visual interfaces for content selection or interaction; Content or additional data rendering by altering the content in the rendering process, e.g. blanking, blurring or masking an image region
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving encoded video stream packets from an IP network
    • H04N21/4383Accessing a communication channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47205End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for manipulating displayed content, e.g. interacting with MPEG-4 objects, editing locally
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8126Monomedia components thereof involving additional data, e.g. news, sports, stocks, weather forecasts
    • H04N21/8133Monomedia components thereof involving additional data, e.g. news, sports, stocks, weather forecasts specifically related to the content, e.g. biography of the actors in a movie, detailed information about an article seen in a video program

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种直播或者视频播放的弹幕漂移渲染显示的方法及系统,涉及互联网移动端应用开发领域。该方法包括以下步骤:从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象;记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中;设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息。本发明实现了完整的弹幕漂移的渲染显示过程。

Description

直播或者视频播放的弹幕漂移渲染显示的方法及系统
技术领域
本发明涉及互联网移动端应用开发领域,具体是涉及一种直播或者视频播放的弹幕漂移渲染显示的方法及系统。
背景技术
直播APP(APPlication,应用)越来越活,直播是一种即时互动的社交,这个即时互动的APP离不开弹幕,弹幕是用户表达观点、吐槽、发泄自己情绪的一种很好的方式,很多直播APP都提供用户发送弹幕的功能,为了提升用户体验,亟需一种直播或者视频播放的弹幕漂移渲染显示的方案。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种直播或者视频播放的弹幕漂移渲染显示的方法及系统,实现了完整的弹幕漂移的渲染显示过程。
本发明提供一种直播或者视频播放的弹幕漂移渲染显示的方法,包括以下步骤:
S1、从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:
S101、从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;
S102、获得弹幕显示对象;
S103、从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;
S104、根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;
S105、创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便;
S2、记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:
S201、创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;
S202、在字典中存储弹幕漂移的随机速度;
S203、使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;
S204、记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;
S205、记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中;
S3、设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:
S301、移除弹幕数组中的第一条弹幕;
S302、设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;
S303、为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;
S304、动画执行完毕之后,对弹幕执行初始化操作。
在上述技术方案的基础上,步骤S202中,所述弹幕漂移的随机速度的计算公式是:CGFloat speedRadom=floor((double)arc4random()/ARC4RANDOM_MAX),CGFloat表示浮点型,arc4random()是一个生成随机数的函数,ARC4RANDOM_MAX是一个16进制的值,是arc4random()随机数的最大值;speedRadom是arc4random()和ARC4RANDOM_MAX的比值。
在上述技术方案的基础上,步骤S303中,所述动画的延时时间为0.1到5之间的值。
在上述技术方案的基础上,步骤S303中,所述执行动画的延时时间单位是秒。
在上述技术方案的基础上,步骤S304中,所述初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用。
本发明还提供一种直播或者视频播放的弹幕漂移渲染显示的系统,该系统包括弹幕通道创建单元、记录单元、弹幕信息移除单元,其中:
所述弹幕通道创建单元用于:从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:
从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;
获得弹幕显示对象;
从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;
根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;
创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便;
所述记录单元用于:记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:
创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;
在字典中存储弹幕漂移的随机速度;
使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;
记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;
记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中;
所述弹幕信息移除单元用于:设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:
移除弹幕数组中的第一条弹幕;
设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;
为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;
动画执行完毕之后,对弹幕执行初始化操作。
在上述技术方案的基础上,所述弹幕漂移的随机速度的计算公式是:CGFloatspeedRadom=floor((double)arc4random()/ARC4RANDOM_MAX),CGFloat表示浮点型,arc4random()是一个生成随机数的函数,ARC4RANDOM_MAX是一个16进制的值,是arc4random()随机数的最大值;speedRadom是arc4random()和ARC4RANDOM_MAX的比值。
在上述技术方案的基础上,所述动画的延时时间为0.1到5之间的值。
在上述技术方案的基础上,所述执行动画的延时时间单位是秒。
在上述技术方案的基础上,所述初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用。
与现有技术相比,本发明的优点如下:
(1)本发明向弹幕通道中插入弹幕显示对象,记录弹幕的发送信息,添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从记录的弹幕信息中移除弹幕信息,实现了完整的弹幕漂移的渲染显示过程。
(2)本发明从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;获得弹幕显示对象;从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便。本发明从弹幕数组中取出弹幕对象danmuModel,将这个弹幕对象赋值给currentDmItem来显示;创建了一个弹幕通道,弹幕通道的作用是为变换弹幕的位置提供方便,这个弹幕通道上可以显示多个弹幕。
(3)本发明记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;在字典中存储弹幕漂移的随机速度;使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中。弹幕漂移一般在屏幕上持续5-15秒就会消失,本发明记录弹幕漂移的信息并且存储起来,为后面的弹幕漂移结束后的移除工作做准备。
(4)本发明设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:移除弹幕数组中的第一条弹幕;设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;动画执行完毕之后,对弹幕执行初始化操作。本发明计算出弹幕结束的位置,弹幕结束的x坐标值是:-currentDmItem.frame.size.width,y坐标值是:currentDmItem.frame.origin.y,结束的宽度值:currentDmItem.frame.size.width,结束的高度值:currentDmItem.frame.size.height,动画结束的位置是根据弹幕的宽高来计算的,为这个位置添加苹果自带的类方法动画。
(5)本发明是在动画执行完毕之后执行移除弹幕的操作,能够防止系统崩溃或者其他异常情况的出现。
附图说明
图1是本发明实施例中直播或者视频播放的弹幕漂移渲染显示的方法的流程图。
图2是本发明实施例中创建弹幕通道的流程图。
图3是本发明实施例中记录弹幕开始漂移的时间点、漂移速度、弹幕宽度的流程图。
图4是本发明实施例中移除弹幕信息的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种直播或者视频播放的弹幕漂移渲染显示的方法,包括以下步骤:
S1、从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:
S101、参见图2所示,从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;
S102、获得弹幕显示对象;
S103、从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;
S104、根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;
S105、创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便;
S2、记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:
S201、参见图3所示,创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;
S202、在字典中存储弹幕漂移的随机速度;
S203、使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;
S204、记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;
S205、记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中;
S3、设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:
S301、参见图4所示,移除弹幕数组中的第一条弹幕;
S302、设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;
S303、为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;
S304、动画执行完毕之后,对弹幕执行初始化操作。
步骤S202中,弹幕漂移的随机速度的计算公式是:CGFloat speedRadom=floor((double)arc4random()/ARC4RANDOM_MAX),CGFloat表示浮点型,arc4random()是一个生成随机数的函数,ARC4RANDOM_MAX是一个16进制的值,是arc4random()随机数的最大值;speedRadom是arc4random()和ARC4RANDOM_MAX的比值。
步骤S303中,动画的延时时间为0.1到5之间的值。
步骤S303中,执行动画的延时时间单位是秒。
步骤S304中,初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用。
本发明还提供一种直播或者视频播放的弹幕漂移渲染显示的系统,该系统包括弹幕通道创建单元、记录单元、弹幕信息移除单元,其中:
所述弹幕通道创建单元用于:从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:
从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;
获得弹幕显示对象;
从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;
根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;
创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便;
所述记录单元用于:记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:
创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;
在字典中存储弹幕漂移的随机速度;
使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;
记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;
记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中;
所述弹幕信息移除单元用于:设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:
移除弹幕数组中的第一条弹幕;
设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;
为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;
动画执行完毕之后,对弹幕执行初始化操作。
弹幕漂移的随机速度的计算公式是:CGFloat speedRadom=floor((double)arc4random()/ARC4RANDOM_MAX),CGFloat表示浮点型,arc4random()是一个生成随机数的函数,ARC4RANDOM_MAX是一个16进制的值,是arc4random()随机数的最大值;speedRadom是arc4random()和ARC4RANDOM_MAX的比值。
动画的延时时间为0.1到5之间的值。
执行动画的延时时间单位是秒。
初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用。
下面结合具体函数语句来进行说明。
一、从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象(danmuLabel),并且创建弹幕通道向弹幕通道中插入弹幕显示对象:
1、使用语句DYDanMuModel*danmuModel=_dmArray[0];从弹幕数组中取出弹幕的第一个元素,取出的元素是模型DYDanMuModel类的对象;
2、使用语句ColorDanmuLabel*currentDmItem=[self currentDmItem],使用获得显示弹幕的方法currentDmItem,获得弹幕显示currentDmItemlable对象;
3、使用语句currentDmItem.danmuLabel.text=[NSStringstringWithFormat:@"%@:%@",danmuModel.nickname,danmuModel.content];从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象lable;
4、根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;
5、创建一个UIView*类型的当前的弹幕通道currentLayerView,将弹幕显示对象currentDmItem添加到弹幕通道currentLayerView,这个currentLayerView就是一个弹幕通道,弹幕通道的作用是为变换弹幕的位置提供方便。
步骤一的优点:从弹幕数组中取出弹幕对象danmuModel,将这个弹幕对象赋值给currentDmItem来显示;创建了一个弹幕通道,弹幕通道的作用是为变换弹幕的位置提供方便,这个弹幕通道上可以显示多个弹幕。
二、记录弹幕开始漂移的时间点、漂移速度、弹幕宽度等信息,存储到字典中:
1、创建一个记录弹幕信息的字典dic:NSMutableDictionary*dic=_channelsInfoArray[currentChannelIndex];在字典中创建一个存储弹幕通道的数组_channelsInfoArray,从弹幕通道的数组中取出当前弹幕通道,这个弹幕通道在数组中的索引是currentChannelIndex,这个弹幕通道是一个字典dic;
2、这个字典dic中存储弹幕漂移的随机速度,弹幕漂移的随机速度的计算公式是:CGFloat speedRadom=floor((double)arc4random()/ARC4RANDOM_MAX),CGFloat表示浮点型,arc4random()是一个生成随机数的函数,ARC4RANDOM_MAX是一个16进制的值,它是arc4random()随机数的最大值;speedRadom是arc4random()和ARC4RANDOM_MAX的比值;
3、使用字典记录弹幕开始漂移的时间点,获得当前的时间为[NSDate date],再将当前的时间[NSDate date]使用setObject:方法存储到字典中,具体语句是:[dicsetObject:[NSDate date]forKey:@"startTime"];
4、记录弹幕的当前的漂移速度,具体方法是:从字典dic中获得当前的弹幕漂移速度currentSpeed,将弹幕漂移速度包装成一个对象,包装后的对象为@(currentSpeed),将包装后的对象@(currentSpeed)使用字典存储方法setObject存储到字典dic中:[dicsetObject:@(currentSpeed)forKey:@"spead"];
5、记录弹幕的宽度,具体流程是:从字典dic中获得当前的弹幕currentDmItem,使用点语法获得当前弹幕的宽度,获得的弹幕宽度为currentDmItem.frame.size.width,使用字典存储方法setObject,将获得的弹幕宽度currentDmItem.frame.size.width存储到字典dic中,字典的key值dmWidth,具体语句为:[dic setObject:@(currentDmItem.frame.size.width)forKey:@"dmWidth"]。
步骤二的优点:弹幕漂移一般在屏幕上持续5-15秒就会消失,步骤二记录弹幕漂移的信息并且存储起来,为后面的弹幕漂移结束后的移除工作做准备。
三、设置弹幕移除时的位置,为弹幕起始点和移除点endrect添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:
1、移除弹幕数组_dmArray中的第一条弹幕,移除的方法是removeObjectAtIndex,removeObjectAtIndex需要一个参数,是移除弹幕的索引,本处移除的是第一条弹幕所以索引值是0,具体示例语句为:[_dmArray removeObjectAtIndex:0];
2、设置弹幕移除时的位置,针对当前的弹幕currentDmItem,需要获得当前弹幕的x坐标值,当前弹幕的x坐标值使用点语法获得的值是:-currentDmItem.frame.size.width;
获得当前弹幕的y坐标值,当前弹幕的y坐标值使用点语法获得的值是:currentDmItem.frame.origin.y;
获得当前弹幕的宽度值,当前弹幕的宽度值使用点语法获得的值是:currentDmItem.frame.size.width;
获得当前弹幕的高度值,当前弹幕的高度值使用点语法获得的值是:currentDmItem.frame.size.height;
上述过程中获得的4个弹幕的坐标值可以构成一个CGRect类型的变量endRect,endRect的值为CGRect endRect=CGRectMake(-currentDmItem.frame.size.width,currentDmItem.frame.origin.y,currentDmItem.frame.size.width,currentDmItem.frame.size.height);
3、使用UIView的类方法,使用添加苹果自带的类方法动画函数animateWithDuration,为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间currentAnimateDuration,currentAnimateDuration一般设定为0.1到5之间的值,执行动画的延时时间单位是秒,在执行动画的时间内改变弹幕的位置坐标值为endRect,动画执行完毕之后可以执行一些操作,例如:移除弹幕,降低内存消耗,具体示例语句为:[UIViewanimateWithDuration:currentAnimateDuration delay:0animations:^{
currentDmItem.frame=endRect;
}completion:{动画完成的操作}
为弹幕添加苹果自带的类方法动画。
4、动画执行完毕之后,需要对弹幕执行一些初始化操作,初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用,语句分别为:[dicsetObject:@(0)forKey:@"spead"];
[dic setObject:@(0)forKey:@"dmWidth"];
[dic setObject:@(0)forKey:@"dmNum"];代码为弹幕置为@(0),就是移除弹幕。dic setObject:@(0)forKey:@"spead"表示弹幕速度重置,dic setObject:@(0)forKey:@"dmWidth"表示弹幕宽度重置,dic setObject:@(0)forKey:@"dmNum弹幕数量重置。
步骤三的优点:计算出弹幕结束的位置,弹幕结束的x坐标值是:-currentDmItem.frame.size.width,y坐标值是:currentDmItem.frame.origin.y,结束的宽度值:currentDmItem.frame.size.width,结束的高度值:currentDmItem.frame.size.height,动画结束的位置是根据弹幕的宽高来计算的,为这个位置添加苹果自带的类方法动画;移除弹幕的操作是在动画执行完毕之后执行,防止系统崩溃或者其他异常情况的出现。
综上所述,本发明实施例向弹幕通道中插入弹幕显示对象,记录弹幕的发送信息,添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从记录的弹幕信息中移除弹幕信息,实现了完整的弹幕漂移渲染显示的过程。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。

Claims (10)

1.一种直播或者视频播放的弹幕漂移渲染显示的方法,其特征在于,包括以下步骤:
S1、从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:
S101、从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;
S102、获得弹幕显示对象;
S103、从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;
S104、根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;
S105、创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便;
S2、记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:
S201、创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;
S202、在字典中存储弹幕漂移的随机速度;
S203、使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;
S204、记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;
S205、记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中;
S3、设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:
S301、移除弹幕数组中的第一条弹幕;
S302、设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;
S303、为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;
S304、动画执行完毕之后,对弹幕执行初始化操作。
2.如权利要求1所述的直播或者视频播放的弹幕漂移渲染显示的方法,其特征在于:步骤S202中,所述弹幕漂移的随机速度的计算公式是:CGFloat speedRadom=floor((double)arc4random()/ARC4RANDOM_MAX),CGFloat表示浮点型,arc4random()是一个生成随机数的函数,ARC4RANDOM_MAX是一个16进制的值,是arc4random()随机数的最大值;speedRadom是arc4random()和ARC4RANDOM_MAX的比值。
3.如权利要求1所述的直播或者视频播放的弹幕漂移渲染显示的方法,其特征在于:步骤S303中,所述动画的延时时间为0.1到5之间的值。
4.如权利要求1所述的直播或者视频播放的弹幕漂移渲染显示的方法,其特征在于:步骤S303中,所述执行动画的延时时间单位是秒。
5.如权利要求1所述的直播或者视频播放的弹幕漂移渲染显示的方法,其特征在于:步骤S304中,所述初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用。
6.一种直播或者视频播放的弹幕漂移渲染显示的系统,其特征在于,该系统包括弹幕通道创建单元、记录单元、弹幕信息移除单元,其中:
所述弹幕通道创建单元用于:从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:
从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;
获得弹幕显示对象;
从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;
根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;
创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便;
所述记录单元用于:记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:
创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;
在字典中存储弹幕漂移的随机速度;
使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;
记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;
记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中;
所述弹幕信息移除单元用于:设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:
移除弹幕数组中的第一条弹幕;
设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;
为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;
动画执行完毕之后,对弹幕执行初始化操作。
7.如权利要求6所述的直播或者视频播放的弹幕漂移渲染显示的系统,其特征在于:所述弹幕漂移的随机速度的计算公式是:CGFloat speedRadom=floor((double)arc4random()/ARC4RANDOM_MAX),CGFloat表示浮点型,arc4random()是一个生成随机数的函数,ARC4RANDOM_MAX是一个16进制的值,是arc4random()随机数的最大值;speedRadom是arc4random()和ARC4RANDOM_MAX的比值。
8.如权利要求6所述的直播或者视频播放的弹幕漂移渲染显示的系统,其特征在于:所述动画的延时时间为0.1到5之间的值。
9.如权利要求6所述的直播或者视频播放的弹幕漂移渲染显示的系统,其特征在于:所述执行动画的延时时间单位是秒。
10.如权利要求6所述的直播或者视频播放的弹幕漂移渲染显示的系统,其特征在于:所述初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用。
CN201710283540.9A 2017-04-26 2017-04-26 直播或者视频播放的弹幕漂移渲染显示的方法及系统 Pending CN108810598A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710283540.9A CN108810598A (zh) 2017-04-26 2017-04-26 直播或者视频播放的弹幕漂移渲染显示的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710283540.9A CN108810598A (zh) 2017-04-26 2017-04-26 直播或者视频播放的弹幕漂移渲染显示的方法及系统

Publications (1)

Publication Number Publication Date
CN108810598A true CN108810598A (zh) 2018-11-13

Family

ID=64069373

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710283540.9A Pending CN108810598A (zh) 2017-04-26 2017-04-26 直播或者视频播放的弹幕漂移渲染显示的方法及系统

Country Status (1)

Country Link
CN (1) CN108810598A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110213638A (zh) * 2019-06-05 2019-09-06 北京达佳互联信息技术有限公司 动画显示方法、装置、终端及存储介质
CN111277910A (zh) * 2020-03-07 2020-06-12 咪咕互动娱乐有限公司 弹幕显示方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005049655A (ja) * 2003-07-29 2005-02-24 Nippon Hoso Kyokai <Nhk> 文字データ修正装置、文字データ修正方法および文字データ修正プログラム
CN104754396A (zh) * 2015-03-12 2015-07-01 腾讯科技(北京)有限公司 弹幕数据的显示方法及装置
CN105142031A (zh) * 2015-08-17 2015-12-09 北京奇虎科技有限公司 在视频播放时以弹幕显示文字信息的方法及装置
CN105516820A (zh) * 2015-12-10 2016-04-20 腾讯科技(深圳)有限公司 一种弹幕交互方法和装置
CN106101756A (zh) * 2016-06-07 2016-11-09 腾讯科技(北京)有限公司 弹幕显示方法、弹幕添加方法、装置及系统
CN106162298A (zh) * 2015-03-27 2016-11-23 天脉聚源(北京)科技有限公司 一种实现弹幕的方法和系统
CN106303735A (zh) * 2016-09-07 2017-01-04 腾讯科技(深圳)有限公司 一种弹幕显示系统、方法、装置以及业务客户端
CN106454434A (zh) * 2016-11-15 2017-02-22 广州华多网络科技有限公司 一种弹幕播放方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005049655A (ja) * 2003-07-29 2005-02-24 Nippon Hoso Kyokai <Nhk> 文字データ修正装置、文字データ修正方法および文字データ修正プログラム
CN104754396A (zh) * 2015-03-12 2015-07-01 腾讯科技(北京)有限公司 弹幕数据的显示方法及装置
CN106162298A (zh) * 2015-03-27 2016-11-23 天脉聚源(北京)科技有限公司 一种实现弹幕的方法和系统
CN105142031A (zh) * 2015-08-17 2015-12-09 北京奇虎科技有限公司 在视频播放时以弹幕显示文字信息的方法及装置
CN105516820A (zh) * 2015-12-10 2016-04-20 腾讯科技(深圳)有限公司 一种弹幕交互方法和装置
CN106101756A (zh) * 2016-06-07 2016-11-09 腾讯科技(北京)有限公司 弹幕显示方法、弹幕添加方法、装置及系统
CN106303735A (zh) * 2016-09-07 2017-01-04 腾讯科技(深圳)有限公司 一种弹幕显示系统、方法、装置以及业务客户端
CN106454434A (zh) * 2016-11-15 2017-02-22 广州华多网络科技有限公司 一种弹幕播放方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110213638A (zh) * 2019-06-05 2019-09-06 北京达佳互联信息技术有限公司 动画显示方法、装置、终端及存储介质
CN110213638B (zh) * 2019-06-05 2021-10-08 北京达佳互联信息技术有限公司 动画显示方法、装置、终端及存储介质
CN111277910A (zh) * 2020-03-07 2020-06-12 咪咕互动娱乐有限公司 弹幕显示方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN109714644B (zh) 一种视频数据的处理方法、装置、计算机设备和存储介质
CN105939493B (zh) 一种视频弹幕的显示方法及显示装置
CN104023271B (zh) 广告信息推送方法和用户设备
CN105069104B (zh) 一种动态漫画的生成方法与系统
CN103942823B (zh) 一种游戏引擎渲染方法及装置
CN104427404A (zh) 一种视频片段的提取和播放方法、及装置
CN104615418B (zh) 一种可滑动播放窗口的实现方法和装置
CN105898520A (zh) 视频帧截取方法和装置
CN103780949B (zh) 一种多媒体数据录制方法
CN106303729B (zh) 基于弹幕的交互方法、交互装置及用户设备
CN108845737B (zh) 图片错层显示方法、电子设备及存储介质
CN111443914B (zh) 动画展示方法以及装置
CN109756766B (zh) 直播平台的虚拟礼物显示方法、存储介质、电子设备及系统
CN108810598A (zh) 直播或者视频播放的弹幕漂移渲染显示的方法及系统
CN106331089A (zh) 一种视频播放控制方法和系统
CN104134228A (zh) 基于Android系统的开/关机动画制作系统及方法
CN104599307A (zh) 一种在移动终端上采用动画显示图片的方法
CN104423775A (zh) 一种展示应用软件首页的方法和装置
CN105828167A (zh) 截屏分享方法及装置
CN108989898B (zh) 一种展示礼物连击动画的方法、存储介质、设备及系统
CN111445562B (zh) 文字动画生成方法及装置
CN113573134A (zh) 弹幕数据的处理方法及装置、存储介质、电子设备
CN105610849B (zh) 分享标签的生成方法及装置、属性信息的显示方法及装置
CN201690498U (zh) 手机即拍即拼装置和手机
CN109508190A (zh) Ui自定义动效卡片层叠切换的方法

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20181113

RJ01 Rejection of invention patent application after publication