一种基于unity3d的视频直播方法及系统与流程

文档序号:16519928发布日期:2019-01-05 09:53阅读:1161来源:国知局
一种基于unity3d的视频直播方法及系统与流程

本发明视频直播技术领域,更具体地,涉及一种基于unity3d的视频直播方法及系统。



背景技术:

目前传统的直播间的实现方式是基于android和ios这2大平台来进行开发的,开发本地的android和ios直播平台中会涉及到各种各样动效。

传统的本地软件的动效大多数是gif格式的图片播放动画效果或者是一些简单的2d效果图,如果需要开发3d动画效果,基于原生的android和ios平台开发,需要基于opengl-es的开源库进行编程,这种3d动画效果的编程对开发人员具有较高的要求,且开发效率异常低下。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的基于unity3d的视频直播方法及系统,能够实现跨平台的视频直播。

根据本发明的第一方面,提供一种基于unity3d的视频直播方法,包括:

s1,在直播客户端的unity3d中搭建荧幕;

s2,建立操作系统与unity3d之间的关联关系,并接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址;

s3,根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

本发明的有益效果为:通过使用unity3d这款跨平台的软件设计了一套具有3d动画效果的直播平台,由于unity3d是跨平台的,仅仅需要编译一次代码就能够完成android和ios平台的工作,极大地提高了工作效率。同时借助unity3d能够快速地实现3d动画效果,极大的提高了用户的使用体验。

在上述技术方案的基础上,本发明还可以作如下改进。

进一步的,所述步骤s1进一步包括:

使用unity3d中的模板构建虚拟的3d场景界面,在所述虚拟的3d场景界面中添加虚拟物体控件,并为虚拟物体控件设置属性信息,以实现在unity3d中荧幕的构建。

进一步的,所述步骤s2中建立操作系统与unity3d之间的关联关系包括:

所述步骤s2中建立操作系统与unity3d之间的关联关系包括:

通过unity3d提供的通信管道建立操作系统与unity3d之间的通信桥梁,进而建立操作系统与unity3d之间的关联关系。

进一步的,所述步骤s2中接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址包括:

接收操作系统通过调用unity3d中的消息发送方法向unity3d中的荧幕传递的视频流地址,其中,所述视频流地址由操作系统从网络上获取。

进一步的,所述步骤s3进一步包括:

在unity3d中获取到视频流地址后,通过标准的rtmp流媒体解析器对在线视频进行解析,并通过将解析后的每一帧视频数据贴到所述荧幕上,实现对视频动画的播放。

进一步的,还包括:

s4,在unity3d中的荧幕上定义虚拟弹幕控件,将弹幕消息内容贴到所述虚拟弹幕控件中,通过对贴有弹幕消息内容的虚拟弹幕控件的移动实现弹幕消息内容的移动动画效果。

进一步的,所述步骤s4中通过对贴有弹幕消息内容的虚拟弹幕控件的移动实现弹幕消息内容的移动动画效果包括:

在虚拟弹幕控件中开启一周期定时器,并设置周期定时器的周期性超时时间和总超时时间;

当周期定时器达到周期性超时时间时,触发虚拟弹幕控件在荧幕上按照预设方向移动预设距离,通过不断移动的方式实现虚拟弹幕控件的移动效果;

当周期定时器达到总超时时间时,触发对所述虚拟弹幕控件的销毁,进行内存释放。

进一步的,还包括:

在unity3d中预埋虚拟动画控件,当接收到服务器发送的播放礼物的3d动画指令时,通过调用虚拟动画控件中的构造函数进行礼物的3d动画播放。

根据本发明第二方面,还提供了一种基于unity3d的视频直播系统,包括:

搭建模块,用于在直播客户端的unity3d中搭建荧幕;

建立模块,用于建立操作系统与unity3d之间的关联关系;

接收模块,用于接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址;

播放模块,用于根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

根据本发明的第三方面,提供了一种基于unity3d的视频直播方法的设备,包括处理器(processor)、存储器(memory)和总线;

所述处理器和存储器通过所述总线完成相互间的通信;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如下方法:

在直播客户端的unity3d中搭建荧幕;

建立操作系统与unity3d之间的关联关系,并接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址;

根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

附图说明

图1为本发明一个实施例的基于unity3d的视频直播方法流程图;

图2为本发明另一个实施例的基于unity3d的视频直播系统连接框图;

图3为本发明又一个实施例的基于unity3d的视频直播系统的整体连接框图;

图4为本发明弹幕展示模块的内部连接框图;

图5为本发明再一个实施例的基于unty3d的视频直播方法的设备连接框图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

参见图1,提供了本发明一个实施例的基于unity3d的视频直播方法,包括:s1,在直播客户端的unity3d中搭建荧幕;s2,建立操作系统与unity3d之间的关联关系,并接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址;s3,根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

unity3d是由unitytechnologies开发的一个创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。本实施例主要是搭建在unity3d基础下的直播平台,由于unity3d是跨平台的,因此,通过unity3d搭建的直播平台能够运行在各大平台上,包括andriod、ios和windows等。首先在unity3d中搭建荧幕,搭建的荧幕是场景界面中的一个控件,因此,需要先在unity3d中构建好场景界面,然后在搭建的场景界面中搭建荧幕物体,来实现在unity3d中对荧幕的搭建。

当在unity3d中搭建了荧幕后,需要建立直播客户端的操作系统和unity3d之间的关联关系,只有建立了关联关系后,在操作系统中才能向unity3d发送消息。因此,搭建好了直播客户端的操作系统和unity3d之间的关联关系后,就可以在操作系统上向unity3d中搭建的荧幕发送视频流地址。当unity3d接收到视频流地址后,在unity3d的荧幕上进行视频动画的播放。

本实施例通过使用unity3d这款跨平台的软件设计了一套具有3d动画效果的直播平台,由于unity3d是跨平台的,仅仅需要编译一次代码就能够完成android和ios平台的工作,极大地提高了工作效率。同时借助unity3d能够快速地实现3d动画效果,极大的提高了用户的使用体验。

在本发明的一个实施例中,所述步骤s1进一步包括:使用unity3d中的模板构建虚拟的3d场景界面,在所述虚拟的3d场景界面中添加虚拟物体控件,并为虚拟物体控件设置属性信息,以实现在unity3d中荧幕的构建。

在unity3d中搭建荧幕的具体过程为:搭建场景界面是使用unity3d中的模板来进行构建的,通过unity3d中原始的模板能够快速构建出场景界面,构建出来的场景界面是一个虚拟的没有任何物体的3d世界。

接下来需要在构建的虚拟的场景界面中添加所需要的播放场景界面,首先通过鼠标拖动的方式将空的虚拟物体控件放到虚拟的场景界面中,然后对虚拟物体控件进行属性设置,比如,对虚拟物体控件的长宽高的属性进行设置,此时,这个虚拟物体控件就呈现出荧幕的大小,这样就在unity3d中构建了独立的荧幕。

在本发明的另一个实施例中,所述步骤s2中建立操作系统与unity3d之间的关联关系包括:通过unity3d提供的通信信道建立操作系统与unity3d之间的桥梁,进而建立操作系统与unity3d之间的关联关系。

当在unity3d中构建了荧幕后,需要在构建的荧幕上进行视频流内容的播放呈现,视频流是通过操作系统从网络上获取的,要想在unity3d的荧幕上呈现,需要建立操作系统与unity3d之间的关联关系。在本实施例中,通过unity3d提供的通信信道来建立操作系统与unity3d之间的桥梁,通过建立起的桥梁,能够在操作系统上向unity3d发送消息。

在本发明的一个实施例中,所述步骤s2中接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址包括:接收操作系统通过调用unity3d中的消息发送方法向unity3d中的荧幕传递的视频流地址,其中,所述视频流地址由操作系统从网络上获取。

上述实施例建立了操作系统与unity3d之间的桥梁后,操作系统从网络上获取视频流地址,并通过unity3d中的unityplayer.unitysendmessage的方法在操作系统中向unity3d中的荧幕发送消息。比如,在操作系统中向荧幕a发送视频流地址的方法为unityplayer.unitysendmessage(a,视频流地址),通过该方法就能够将视频流地址从操作系统中传递到unity3d中。

在本发明的一个实施例中,所述步骤s3进一步包括:在unity3d中获取到视频流地址后,通过标准的rtmp流媒体解析器对在线视频进行解析,通过将解析后的每一帧视频数据贴到所述荧幕上,实现对视频动画的播放。

上述实施例从操作系统向unity3d中传递了视频流地址后,在unity3d中通过标准的rtmp(realtimemessagingprotocol,实时消息传输协议)流媒体解析器对在线视频进行解析。其中,rtmp实时消息传输协议是基于传输控制协议tcp的协议,rtmp是一种设计用来进行实时数据通信的网络协议,主要用来在flash/air平台和支持rtmp协议的流媒体/交互服务器之间进行音视频和数据通信。视频流经过流媒体解析器解析后形成每一帧视频数据,然后将解析后的每一帧视频数据贴到unity3d的荧幕上,在荧幕上对每一帧视频数据进行播放,实现了在unity3d上播放视频的效果。

在本发明的另一个实施例中,还包括:s4,在unity3d中的荧幕上定义虚拟弹幕控件,将弹幕消息内容贴到所述虚拟弹幕控件中,通过对贴有弹幕消息内容的虚拟弹幕控件的移动实现弹幕消息内容的移动动画效果。

当在unity3d的荧幕上实现了视频播放后,经常会涉及到弹幕的展示,本实施例重点介绍一下客户端的弹幕在unity3d中是如何进行展示的。弹幕的呈现方式通常是类似一条文字从左向右的方式进行轮播。本实施例在unity3d中的荧幕上定义一个虚拟弹幕控件,然后将弹幕消息内容贴到虚拟弹幕控件中,通过对贴有弹幕消息内容的虚拟弹幕控件的移动操作实现弹幕消息内容的移动动画效果。

在本发明的一个实施例中,所述步骤s4中通过对贴有弹幕消息内容的虚拟弹幕控件的移动实现弹幕消息内容的移动动画效果包括:在虚拟弹幕控件中开启一周期定时器,并设置周期定时器的周期性超时时间和总超时时间;当周期定时器达到周期性超时时间时,将虚拟弹幕控件在荧幕上移动预设距离,通过不断移动的方式实现虚拟弹幕控件的移动效果;当周期定时器达到总超时时间时,将所述虚拟弹幕控件销毁,进行内存释放。

为了能够让虚拟弹幕控件移动,本实施例在虚拟弹幕控件内开启一个周期定时器,以及对周期定时器设置周期性超时时间和总超时时间,比如,周期定时器的周期性超时时间为100ms,为周期定时器设置的总超时时间为2s。当周期定时器达到周期性超时时间时,即每到100ms时,将虚拟弹幕控件在荧幕上移动预设距离。比如,虚拟弹幕控件在荧幕上是从左到右移动的,则每当周期定时器达到周期超时时间时,将虚拟弹幕控件在荧幕上向右移动预设距离。当周期定时器达到设定的总超时时间2s时,将荧幕上的虚拟弹幕控件进行销毁,以释放内存空间,具体的,通过调用虚拟弹幕控件中的destory方法来完成虚拟弹幕控件的销毁和释放内存等操作。

在本发明的一个实施例中,还包括:在unity3d中预埋虚拟动画控件,当接收到服务器发送的播放礼物3d动画指令时,通过调用虚拟动画控件中的函数进行礼物的3d动画播放。

在视频直播领域中,通常会涉及到赠送礼物的过程,当用户1向用户2赠送礼物时,首先用户1会向服务器发送一条向用户2赠送礼物的消息。服务器会在数据库中查询到用户2,并给用户2的客户端发送赠送礼物的动画,用户2接收到礼物动画后,需要在客户端上进行3d动画展示。

由于unity3d是一个3d游戏引擎,在引擎内部对开源3d动画库opengl进行了非常友好的封装,使得在unity3d中播放一个3d动画变得异常简单。为了在unity3d中播放一个3d动画,需要在unity3d中预埋一个不可见的虚拟动画控件。

当客户端接收到服务器发送的播放礼物的3d动画指令时,通过调用虚拟动画控件中的startanimation函数来进行播放礼物的3d动画。在unity3d中,3d动画都会被封装到一个对象中,只需要向虚拟动画控件发送3d动画播放指令,该虚拟动画控件就能够进行3d动画的播放了。

参见图2,提供了本发明的另一个实施例的基于unity3d的视频直播系统,包括搭建模块21、建立模块22、接收模块23和播放模块24。

搭建模块21,用于在直播客户端的unity3d中搭建荧幕;

建立模块22,用于建立操作系统与unity3d之间的关联关系。

接收模块23,用于接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址。

播放模块24,用于根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

其中,所述搭建模块21,具体用于使用unity3d中的模板构建虚拟的3d场景界面,在所述虚拟的3d场景界面中添加虚拟物体控件,并为虚拟物体控件设置属性,以实现在unity3d中荧幕的构建。

所述建立模块22,具体用于通过unity3d提供的通信管道建立操作系统与unity3d之间的桥梁。

所述接收模块23,用于接收操作系统通过调用unity3d中的消息发送方法向unity3d中的荧幕传递的视频流地址,其中,所述视频流地址由操作系统从网络上获取。

所述播放模块24,还用于在unity3d中预埋虚拟动画控件,当接收到服务器发送的播放礼物3d动画指令时,通过调用虚拟动画控件中的函数进行礼物的3d动画播放。

参见图3,基于unity3d的视频直播系统还包括解析模块25和弹幕展示模块26。

其中,解析模块25,用于在unity3d中获取到视频流地址后,通过标准的rtmp流媒体解析器对在线视频进行解析,通过将解析后的每一帧视频数据贴到所述荧幕上,实现对视频动画的播放。

弹幕展示模块26,用于在unity3d中的荧幕上定义虚拟弹幕控件,将弹幕消息内容贴到所述虚拟弹幕控件中,通过对贴有弹幕消息内容的虚拟弹幕控件的移动实现弹幕消息内容的移动动画效果。

参见图4,弹幕展示模块26包括定时器开启单元261和触发单元262。

定时器开启单元261,用于在虚拟弹幕控件中开启一周期定时器,并设置周期定时器的周期性超时时间和总超时时间。

触发模块262,用于当周期定时器达到周期性超时时间时,触发虚拟弹幕控件在荧幕上移动预设距离,通过不断移动的方式实现虚拟弹幕控件的移动效果;以及还用于当周期定时器达到总超时时间时,触发对所述虚拟弹幕控件的销毁,进行内存释放。

图5示出本申请实施例的基于unity3d的视频直播方法的设备的结构框图。

参照图5,所述基于unity3d的视频直播方法的设备,包括:处理器(processor)501、存储器(memory)502和总线503;其中,所述处理器501和存储器502通过所述总线503完成相互间的通信。

所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:在直播客户端的unity3d中搭建荧幕;建立操作系统与unity3d之间的关联关系,并接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址;根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:在直播客户端的unity3d中搭建荧幕;建立操作系统与unity3d之间的关联关系,并接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址;根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:在直播客户端的unity3d中搭建荧幕;建立操作系统与unity3d之间的关联关系,并接收通过操作系统向unity3d中搭建的荧幕发送的视频流地址;根据所述视频流地址在unity3d的荧幕上进行视频动画的播放。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的基于unity3d的视频直播方法的设备等实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分方法。

本发明提供的一种基于unity3d的视频直播方法及装置,通过使用unity3d这款跨平台的软件设计了一套具有3d动画效果的直播平台,由于unity3d是跨平台的,借助于unity3d的跨平台特性直播平台具有跨平台的特点,极大地提高了工作效率,同时本直播平台是基于3d游戏引擎进行开发,使得直播间具有3d的立体效果,极大地提高了用户的体验。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1