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

文档序号:15925496发布日期:2018-11-14 01:05阅读:255来源:国知局
本发明涉及互联网移动端应用开发领域,具体是涉及一种直播或者视频播放的弹幕漂移渲染显示的方法及系统。
背景技术
:直播app(application,应用)越来越活,直播是一种即时互动的社交,这个即时互动的app离不开弹幕,弹幕是用户表达观点、吐槽、发泄自己情绪的一种很好的方式,很多直播app都提供用户发送弹幕的功能,为了提升用户体验,亟需一种直播或者视频播放的弹幕漂移渲染显示的方案。技术实现要素:本发明的目的是为了克服上述
背景技术
:的不足,提供一种直播或者视频播放的弹幕漂移渲染显示的方法及系统,实现了完整的弹幕漂移的渲染显示过程。本发明提供一种直播或者视频播放的弹幕漂移渲染显示的方法,包括以下步骤:s1、从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象,并且创建弹幕通道,向弹幕通道中插入弹幕显示对象:s101、从弹幕数组中取出弹幕的第一个元素,取出的元素是弹幕模型;s102、获得弹幕显示对象;s103、从弹幕模型中获得弹幕显示的内容和弹幕发送者的昵称,将弹幕发送者的昵称和弹幕的内容赋值给弹幕显示对象;s104、根据弹幕内容的长度和弹幕发送者昵称的长度,为弹幕显示对象设置显示的位置,并且将弹幕显示对象显示在直播页面上;s105、创建一个弹幕通道,向弹幕通道中插入弹幕显示对象,为变换弹幕的位置提供方便;s2、记录弹幕开始漂移的时间点、漂移速度、弹幕宽度,存储到字典中:s201、创建一个记录弹幕信息的字典;在字典中创建一个存储弹幕通道的数组,从弹幕通道的数组中取出当前弹幕通道,该弹幕通道是一个字典;s202、在字典中存储弹幕漂移的随机速度;s203、使用字典记录弹幕开始漂移的时间点,获得当前的时间,再将当前的时间存储到字典中;s204、记录弹幕当前的漂移速度:从字典中获得当前的弹幕漂移速度,将弹幕漂移速度包装成一个对象,存储到字典中;s205、记录弹幕的宽度:从字典中获得当前的弹幕,使用点语法获得当前弹幕的宽度,将获得的弹幕宽度存储到字典中;s3、设置弹幕移除时的位置,为弹幕起始点和移除点添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:s301、移除弹幕数组中的第一条弹幕;s302、设置弹幕移除时的位置,获得当前弹幕的x坐标值、y坐标值、宽度值、高度值;s303、为当前的弹幕添加苹果自带的类方法动画,设置动画的延时时间,在执行动画的延时时间内改变弹幕的位置坐标值为移除点;s304、动画执行完毕之后,对弹幕执行初始化操作。在上述技术方案的基础上,步骤s202中,所述弹幕漂移的随机速度的计算公式是:cgfloatspeedradom=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中,弹幕漂移的随机速度的计算公式是:cgfloatspeedradom=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使用。下面结合具体函数语句来进行说明。一、从弹幕数组中获得弹幕模型,将弹幕模型携带的信息赋值给弹幕显示对象(danmulabel),并且创建弹幕通道向弹幕通道中插入弹幕显示对象:1、使用语句dydanmumodel*danmumodel=_dmarray[0];从弹幕数组中取出弹幕的第一个元素,取出的元素是模型dydanmumodel类的对象;2、使用语句colordanmulabel*currentdmitem=[selfcurrentdmitem],使用获得显示弹幕的方法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中存储弹幕漂移的随机速度,弹幕漂移的随机速度的计算公式是:cgfloatspeedradom=floor((double)arc4random()/arc4random_max),cgfloat表示浮点型,arc4random()是一个生成随机数的函数,arc4random_max是一个16进制的值,它是arc4random()随机数的最大值;speedradom是arc4random()和arc4random_max的比值;3、使用字典记录弹幕开始漂移的时间点,获得当前的时间为[nsdatedate],再将当前的时间[nsdatedate]使用setobject:方法存储到字典中,具体语句是:[dicsetobject:[nsdatedate]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,具体语句为:[dicsetobject:@(currentdmitem.frame.size.width)forkey:@"dmwidth"]。步骤二的优点:弹幕漂移一般在屏幕上持续5-15秒就会消失,步骤二记录弹幕漂移的信息并且存储起来,为后面的弹幕漂移结束后的移除工作做准备。三、设置弹幕移除时的位置,为弹幕起始点和移除点endrect添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从弹幕队列中移除弹幕信息:1、移除弹幕数组_dmarray中的第一条弹幕,移除的方法是removeobjectatindex,removeobjectatindex需要一个参数,是移除弹幕的索引,本处移除的是第一条弹幕所以索引值是0,具体示例语句为:[_dmarrayremoveobjectatindex: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的值为cgrectendrect=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:currentanimatedurationdelay:0animations:^{currentdmitem.frame=endrect;}completion:{动画完成的操作}为弹幕添加苹果自带的类方法动画。4、动画执行完毕之后,需要对弹幕执行一些初始化操作,初始化操作为:设置弹幕的速度为0,设置弹幕的弹幕宽度为0,设置弹幕的数量为0使用,语句分别为:[dicsetobject:@(0)forkey:@"spead"];[dicsetobject:@(0)forkey:@"dmwidth"];[dicsetobject:@(0)forkey:@"dmnum"];代码为弹幕置为@(0),就是移除弹幕。dicsetobject:@(0)forkey:@"spead"表示弹幕速度重置,dicsetobject:@(0)forkey:@"dmwidth"表示弹幕宽度重置,dicsetobject:@(0)forkey:@"dmnum弹幕数量重置。步骤三的优点:计算出弹幕结束的位置,弹幕结束的x坐标值是:-currentdmitem.frame.size.width,y坐标值是:currentdmitem.frame.origin.y,结束的宽度值:currentdmitem.frame.size.width,结束的高度值:currentdmitem.frame.size.height,动画结束的位置是根据弹幕的宽高来计算的,为这个位置添加苹果自带的类方法动画;移除弹幕的操作是在动画执行完毕之后执行,防止系统崩溃或者其他异常情况的出现。综上所述,本发明实施例向弹幕通道中插入弹幕显示对象,记录弹幕的发送信息,添加苹果自带的类方法动画,添加苹果自带的类方法动画完成后,从记录的弹幕信息中移除弹幕信息,实现了完整的弹幕漂移渲染显示的过程。本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。说明书中未详细描述的内容为本领域技术人员公知的现有技术。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1