数据发送装置及方法、数据接收装置及方法和存储介质与流程

文档序号:16062407发布日期:2018-11-24 12:19阅读:195来源:国知局

本发明涉及通信技术领域,特别涉及一种数据发送装置及方法、数据接收装置及方法和存储介质。

背景技术

随着网络技术的发展,直播已经成为一种广受欢迎的互动方式。在直播过程中,主播常常需要下发一些文字信息展示给观众,例如,在直播答题时,需要给观众展示题目或者答案。

目前,直播平台进行文字信息下发的方法是将文字信息通过im(instantmessaging,即时消息)系统发布给观众,这一方法虽然可以实现文字信息的展示,但仍存在缺陷,其缺陷在于当网络发生拥塞现象时,可能造成im消息的丢失,一旦携带文字信息的im消息丢失,则无法实现文字信息的及时展示。



技术实现要素:

本发明的主要目的是提供一种数据发送装置及方法、数据接收装置及方法和存储介质,旨在解决在网络拥塞时,文字信息无法及时展示的问题。

为实现上述目的,本发明提出一种数据发送方法,该方法包括步骤:

当接收到文字数据下发指令时,在一待封装媒体帧队列中确定一媒体帧为起始帧;

按照预先确定的存储规则将待下发的文字数据存储至所述起始帧及其后续的媒体帧中;

在对所述媒体帧进行封装处理时,若首次识别到一媒体帧中存储有所述文字数据,则按照预先确定的封装规则,将所述文字数据封装至多个流媒体数据包中;

将生成的所述流媒体数据包发布至网络。

优选地,所述预先确定的存储规则包括:

将所述文字数据存储至所述起始帧及其后续的每一帧媒体帧中,直至满足第一预设条件时停止所述文字数据的存储操作;

或者,将所述起始帧作为第一个存储帧,并将所述文字数据存储至所述第一个存储帧中,且自所述第一个存储帧开始,每间隔第一预设数量的媒体帧或者每间隔第一预设时长确定一存储帧,同时将所述文字数据存储至确定的存储帧中,直至满足第二预设条件时停止对所述文字数据的存储操作。

优选地,所述预先确定的封装规则包括:

当首次识别到一媒体帧中存储有所述文字数据时,将所述文字数据封装成第一类型流媒体数据包,将所述媒体帧中的媒体数据封装成第二类型流媒体数据包,并将封装生成的所述第一类型流媒体数据包及第二类型流媒体数据包依次加入至待发送队列中;

自所述文字数据对应的首个所述第一类型流媒体数据包加入所述待发送队列开始,每间隔第二预设时长将所述文字数据封装成第一类型流媒体数据包并加入至所述待发送队列中,直至满足第三预设条件时停止对所述文字数据的封装操作。

此外,为实现上述目的,本发明还提出一种数据接收方法,该方法包括步骤:

通过网络依次接收所述流媒体数据包,所述流媒体数据包包括两种类型,分别为携带所述文字数据的第一类型流媒体数据包及第二类型流媒体数据包;

按照接收顺序解析所述流媒体数据包,且每解析得到一解析数据包时,将所述解析数据包添加至缓存队列中,所述解析数据包包括所述第一类型流媒体数据包对应的第一类型解析数据包及所述第二类型流媒体数据包对应的第二类型解析数据包;

在读取所述缓存队列中的解析数据包时,若首次识别到所述文字数据,则按照预先确定的显示规则显示所述文字数据。

优选地,所述预先确定的显示规则包括:

当首次识别到所述文字数据时,按照预先确定的显示时长显示所述文字数据;

或者,当首次识别到所述文字数据时,显示所述文字数据,直至识别到新的文字数据时,停止所述文字数据的显示以显示所述新的文字数据。

优选地,该方法还包括:

获取所述缓存队列对应的缓存时长,实时侦测所述缓存时长是否大于预设阈值;

当所述缓存时长大于所述预设阈值时,在所述缓存队列中删除第二预设数量的第二类型解析数据包。

此外,为实现上述目的,本发明还提出一种数据发送装置,所述数据发送装置包括存储器和处理器,所述存储器上存储有数据发送程序,所述数据发送程序被所述处理器执行时实现如下步骤:

当接收到文字数据下发指令时,在一待封装媒体帧队列中确定一媒体帧为起始帧;

按照预先确定的存储规则将待下发的文字数据存储至所述起始帧及其后续的媒体帧中;

在对所述媒体帧进行封装处理时,若首次识别到一媒体帧中存储有所述文字数据,则按照预先确定的封装规则,将所述文字数据封装至多个流媒体数据包中;

将生成的所述流媒体数据包发布至网络。

优选地,所述预先确定的存储规则包括:

将所述文字数据存储至所述起始帧及其后续的每一帧媒体帧中,直至满足第一预设条件时停止所述文字数据的存储操作;

或者,将所述起始帧作为第一个存储帧,并将所述文字数据存储至所述第一个存储帧中,且自所述第一个存储帧开始,每间隔第一预设数量的媒体帧或者每间隔第一预设时长确定一存储帧,同时将所述文字数据存储至确定的存储帧中,直至满足第二预设条件时停止对所述文字数据的存储操作。

优选地,所述预先确定的封装规则包括:

当首次识别到一媒体帧中存储有所述文字数据时,将所述文字数据封装成第一类型流媒体数据包,将所述媒体帧中的媒体数据封装成第二类型流媒体数据包,并将封装生成的所述第一类型流媒体数据包及第二类型流媒体数据包依次加入至待发送队列中;

自所述文字数据对应的首个所述第一类型流媒体数据包加入所述待发送队列开始,每间隔第二预设时长将所述文字数据封装成第一类型流媒体数据包并加入至所述待发送队列中,直至满足第三预设条件时停止对所述文字数据的封装操作。

此外,为实现上述目的,本发明还提出一种数据接收装置,所述数据接收装置包括存储器和处理器,其特征在于,所述存储器上存储有数据接收程序,所述数据接收程序被所述处理器执行时实现如下步骤:

通过网络依次接收所述流媒体数据包,所述流媒体数据包包括两种类型,分别为携带所述文字数据的第一类型流媒体数据包及第二类型流媒体数据包;

按照接收顺序解析所述流媒体数据包,且每解析得到一解析数据包时,将所述解析数据包添加至缓存队列中,所述解析数据包包括所述第一类型流媒体数据包对应的第一类型解析数据包及所述第二类型流媒体数据包对应的第二类型解析数据包;

在读取所述缓存队列中的解析数据包时,若首次识别到所述文字数据,则按照预先确定的显示规则显示所述文字数据。

优选地,所述预先确定的显示规则包括:

当首次识别到所述文字数据时,按照预先确定的显示时长显示所述文字数据;

或者,当首次识别到所述文字数据时,显示所述文字数据,直至识别到新的文字数据时,停止所述文字数据的显示以显示所述新的文字数据。

优选地,所述处理器执行所述数据接收程序,还实现以下步骤:

获取所述缓存队列对应的缓存时长,实时侦测所述缓存时长是否大于预设阈值;

当所述缓存时长大于所述预设阈值时,在所述缓存队列中删除第二预设数量的第二类型解析数据包。

此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有数据发送程序,所述数据发送程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述任一项所述的数据发送方法的步骤。

此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有数据接收程序,所述数据接收程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述任一项所述的数据接收方法的步骤。

本发明在一待封装媒体帧队列中确定一媒体帧为起始帧;按照预先确定的存储规则将待下发的文字数据存储至起始帧及其后续的媒体帧中;在对媒体帧进行封装处理时,若首次识别到一媒体帧中存储有文字数据,则按照预先确定的封装规则,将文字数据封装至对应的流媒体数据包中,并将生成的流媒体数据包发布至网络。相较于现有技术,本发明不仅将待下发的文字数据存储至起始帧,还将该文字数据存储至后续多个媒体帧中,在进行媒体帧的封装时,同样将文字数据封装至多个流媒体数据包中。当发生网络拥塞时,即使部分媒体帧丢失,也依然可从其他未丢失的媒体帧中提取出文字数据。解决了在网络拥塞时,文字信息无法及时展示的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明数据收发系统的系统架构示意图;

图2为本发明数据发送程序第一实施例的运行环境示意图;

图3为本发明数据发送程序第一实施例的程序模块图;

图4为本发明数据接收程序第一、第二实施例的运行环境示意图;

图5为本发明数据接收程序第一实施例的程序模块图;

图6为本发明数据接收程序第二实施例的程序模块图;

图7为本发明数据发送方法第一实施例的流程示意图;

图8为本发明数据接收方法第一实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

本发明提出一种数据收发系统。

请参照图1,图1为本发明数据收发系统的系统架构示意图

该系统包括数据发送装置1及数据接收装置2,其中:

所述数据发送装置1包括存储器和处理器,所述存储器上存储有数据发送程序,所述处理器用于执行所述数据发送程序以实现数据发送方法的步骤。

所述数据发送装置2包括存储器和处理器,所述存储器上存储有数据接收程序,所述处理器用于执行所述数据接收程序以实现数据接收方法的步骤。

所述数据发送装置1、数据发送程序10、数据发送方法、数据接收装置2、数据接收程序20及数据接收方法可参照如下实施例的描述。

本发明提出一种数据发送程序。

请参阅图2,是本发明数据发送程序10第一实施例的运行环境示意图。

在本实施例中,数据发送程序10安装并运行于数据发送装置1中。数据发送装置1可以是桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该数据发送装置1可包括,但不仅限于,存储器11、处理器12及显示器13。图2仅示出了具有组件11-13的数据发送装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

存储器11在一些实施例中可以是数据发送装置1的内部存储单元,例如该数据发送装置1的硬盘或内存。存储器11在另一些实施例中也可以是数据发送装置1的外部存储设备,例如数据发送装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括数据发送装置1的内部存储单元也包括外部存储设备。存储器11用于存储安装于数据发送装置1的应用软件及各类数据,例如数据发送程序10的程序代码等。存储器11还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据发送程序10等。

显示器13在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。显示器13用于显示在数据发送装置1中处理的信息以及用于显示可视化的用户界面。数据发送装置1的部件11-13通过程序总线相互通信。

请参阅图3,是本发明数据发送程序10第一实施例的程序模块图。在本实施例中,数据发送程序10可以被分割成一个或多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行,以完成本发明。例如,在图3中,数据发送程序10可以被分割成确定模块101、存储模块102、封装模块103及发布模块104。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述数据发送程序10在数据发送装置1中的执行过程,其中:

确定模块101,用于当接收到文字数据下发指令时,在一待封装媒体帧队列中确定一媒体帧为起始帧。

上述媒体帧包括音频帧或视频帧。该媒体帧经渲染、编码、封装后生成对应的流媒体数据包,所谓流媒体是指采用流式传输的方式在互联网上播放的媒体格式,包括音频流、视频流、文本流、图像流、动画流等。

当数据发送程序10所需传输的流媒体为可播放音频的视频流时,上述待封装媒体帧队列包括待封装音频帧队列及待封装视频帧队列,可选择其中一个待封装媒体帧队列作为处理对象。优选地,本实施例中,将待封装视频帧队列作为处理对象,即在待封装视频帧队列中确定一视频帧为起始帧。

当数据发送程序10所需传输的流媒体为不可播放音频的视频流时,上述待封装媒体帧队列为待封装视频帧队列,则将该待封装视频帧队列作为处理对象。

当数据发送程序10所需传输的流媒体为音频流时,上述待封装媒体帧队列为待封装音频帧队列,则将该待封装音频帧队列作为处理对象。

上述确定一媒体帧为起始帧的步骤包括:

将接收到文字数据下发指令时正在执行渲染的音频帧或视频帧作为起始帧。此步骤中将当前正在执行渲染的音频帧或视频帧作为起始帧,可实现直播媒体数据播放进程与文字数据显示的精确同步。

存储模块102,用于按照预先确定的存储规则将待下发的文字数据存储至所述起始帧及其后续的媒体帧中。

上述待下发的文字数据可根据应用场景的不同进行自定义设置,例如,在直播问答的应用场景中,该文字数据可以是题目、答案、统计数据等,主播或者其他工作人员可预先编辑多个题目及其对应的答案,并将每一个题目或者答案对应保存为一文字数据。

上述文字数据可以预先存储于数据发送装置1(例如,主播端装置)或者服务器中。若文字数据存储于服务器中,则数据发送装置1与服务器建立网络连接,存储模块102通过轮询服务端文字数据列表的方式实时获取该文字数据。若文字数据存储于数据发送装置1中,则存储模块102直接从本地文字数据存储队列中取出对应序号的文字数据即可。

优选地,本实施例中,上述预先确定的存储规则包括以下两种方案:

方案一:将所述文字数据存储至所述起始帧及其后续的每一帧媒体帧中,直至满足第一预设条件时停止所述文字数据的存储操作。

上述第一预设条件包括存储所述文字数据的媒体帧的数量超过第一预设阈值,或者,对所述文字数据的存储操作时长超过第一预设操作时长,或者,接收到新的文字数据下发指令。

方案二:将所述起始帧作为第一个存储帧,并将所述文字数据存储至所述第一个存储帧中,且自所述第一个存储帧开始,每间隔第一预设数量的媒体帧(例如,每间隔两帧媒体帧)或者每间隔第一预设时长(例如,0.2秒)确定一存储帧,同时将所述文字数据存储至确定的存储帧中,直至满足第二预设条件时停止对所述文字数据的存储操作。

上述第二预设条件包括存储所述文字数据的媒体帧的数量超过第二预设阈值,或者,对所述文字数据的存储操作时长超过第二预设操作时长,或者,接收到新的文字数据下发指令。

上述预先确定的存储规则将待下发的文字数据存储至所述起始帧及其后续的媒体帧中,即使后续因网络拥塞造成起始帧丢失,也可从后续未丢失的媒体帧中获取该待下发的文字数据。

封装模块103,用于在对所述媒体帧进行封装处理时,若首次识别到一媒体帧中存储有所述文字数据,则按照预先确定的封装规则,将所述文字数据封装至多个流媒体数据包中。

优选地,本实施例中,上述预先确定的封装规则包括:

当封装模块103首次识别到一媒体帧中存储有所述文字数据时,将所述文字数据封装成第一类型流媒体数据包,将所述媒体帧中的媒体数据封装成第二类型流媒体数据包,并将封装生成的所述第一类型流媒体数据包及第二类型流媒体数据包依次加入至待发送队列中。

例如,若流媒体格式为flv(flashvideo),则该流媒体数据包为flvtag数据包,将所述文字数据封装成0x12类型的tag(即第一类型的流媒体数据包),且当媒体帧为音频帧时,将该音频帧中的音频数据封装成0x08类型的tag,当媒体帧为视频帧时,将该视频帧中的视频数据封装成0x09类型的tag,其中,0x08类型的tag及0x09类型的tag统称为第二类型的流媒体数据包。

当封装模块103首次识别到一媒体帧中存储有所述文字数据时,该文字数据封装生成的第一类型流媒体数据包即为该文字数据对应的首个第一类型流媒体数据包,将该首个第一类型流媒体数据包先于其对应的第二类型流媒体数据包加入至待发送队列中,以使该首个第一类型流媒体数据包先于其对应的第二类型流媒体数据包发送至数据接收装置,数据接收装置按照接收顺序对流媒体数据包进行解析及读取,若读取到该首个第一类型流媒体数据包,则显示该首个第一类型流媒体数据包中的文字数据,同时播放该第一类型流媒体数据包对应的第二类型流媒体数据包中的媒体数据(例如,音频数据或者视频数据)。

若将首个第一类型流媒体数据包对应的第二类型流媒体数据包先于该首个第一类型流媒体数据包加入至待发送队列中,则会造成数据接收装置先接收到该首个第一类型流媒体数据包对应的第二类型流媒体数据包,并先对该第二类型流媒体数据包进行解析、读取及播放,造成文字数据的显示晚于其对应的第二类型流媒体数据包中的媒体数据的播放。因此,将该首个第一类型流媒体数据包先于其对应的第二类型流媒体数据包加入至待发送队列中的步骤有利于提高直播媒体数据播放进程与文字数据显示的一致性。

接着,自所述文字数据对应的首个所述第一类型流媒体数据包加入所述待发送队列开始,封装模块103每间隔第二预设时长(例如,1秒)将所述文字数据封装成第一类型流媒体数据包加入至所述待发送队列中,直至满足第三预设条件时停止对所述文字数据的封装操作。

上述第二预设时长可根据需要设置,但其值应当在一个合适的范围内,第二预设时长的值越小,第一类型流媒体数据包的生成频率越高,造成数据发送装置1发布至网络的数据量增大,网络传输负荷也随之增大。第二预设时长的值越大,第一类型流媒体数据包的生成频率越低,当首个第一类型流媒体数据包丢失时,数据接收装置若要从后续的第一类型流媒体数据包中获取文字数据,则需等待更长的时间。

上述第三预设条件包括存储所述文字数据的媒体帧的数量超过第三预设阈值,或者,对所述文字数据的封装操作时长超过第三预设操作时长,或者,识别到新的文字数据。

上述第三预设操作时长可根据该文字数据在数据接收装置上的预设显示时长确定。

此外,本实施例中,在对媒体帧的封装过程中,还可为生成的各流媒体数据添加相应的时间戳。

本实施例中,上述每间隔第二预设时长将所述文字数据封装成第一类型流媒体数据包并加入至所述待发送队列中的步骤可替换为:每当封装生成第三预设数量的流媒体数据包时,将所述文字数据封装成第一类型流媒体数据包加入至所述待发送队列中,直至满足第三预设条件时停止对所述文字数据的封装操作。

发布模块104,用于将生成的所述流媒体数据包发布至网络。

发布模块104根据所述待发送队列,通过cdn(contentdeliverynetwork,内容分发网络)进行流媒体数据包的发布。cdn系统能够实时地根据网络流量和各节点的连接、负载状态以及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决网络拥塞的状况,提高用户访问网站的响应速度。

本实施例在一待封装媒体帧队列中确定一媒体帧为起始帧;按照预先确定的存储规则将待下发的文字数据存储至起始帧及其后续的媒体帧中;在对媒体帧进行封装处理时,若首次识别到一媒体帧中存储有文字数据,则按照预先确定的封装规则,将文字数据封装至对应的流媒体数据包中,并将生成的流媒体数据包发布至网络。相较于现有技术,本实施例不仅将待下发的文字数据存储至起始帧,还将该文字数据存储至后续多个媒体帧中,在进行媒体帧的封装时,同样将文字数据封装至多个流媒体数据包中。当发生网络拥塞时,即使部分媒体帧丢失,也依然可从其他未丢失的媒体帧中提取出文字数据。解决了在网络拥塞时,文字信息无法及时展示的问题。

此外,本发明在上述数据发送程序的基础上还提出一种数据接收程序。

请参阅图4,是本发明数据接收程序20第一、第二实施例的运行环境示意图。

在本实施例中,数据接收程序20安装并运行于数据接收装置2中。数据接收装置2可以是桌上型计算机、笔记本、掌上电脑及服务器等计算设备。该数据接收装置2可包括,但不仅限于,存储器21、处理器22及显示器23。图4仅示出了具有组件21-23的数据接收装置2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

存储器21在一些实施例中可以是数据接收装置2的内部存储单元,例如该数据接收装置2的硬盘或内存。存储器21在另一些实施例中也可以是数据接收装置2的外部存储设备,例如数据接收装置2上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器21还可以既包括数据接收装置2的内部存储单元也包括外部存储设备。存储器21用于存储安装于数据接收装置2的应用软件及各类数据,例如数据接收程序20的程序代码等。存储器21还可以用于暂时地存储已经输出或者将要输出的数据。

处理器22在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其他数据处理芯片,用于运行存储器21中存储的程序代码或处理数据,例如执行数据接收程序20等。

显示器23在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。显示器23用于显示在数据接收装置2中处理的信息以及用于显示可视化的用户界面。数据接收装置2的部件21-23通过程序总线相互通信。

请参阅图5,是本发明数据接收程序20第一实施例的程序模块图。在本实施例中,数据接收程序20可以被分割成一个或多个模块,一个或者多个模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。例如,在图5中,数据接收程序20可以被分割成接收模块201、解析模块202及显示模块203。本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述数据接收程序20在数据接收装置2中的执行过程,其中:

接收模块201,用于通过网络依次接收所述流媒体数据包。

所述流媒体数据包包括两种类型,分别为携带所述文字数据的第一类型流媒体数据包及第二类型流媒体数据包。所述第二类型流媒体数据包又可进一步分为两类:携带音频数据的音频数据包及携带视频数据的视频数据包。

解析模块202,用于按照接收顺序解析所述流媒体数据包,且每解析得到一解析数据包时,将所述解析数据包添加至缓存队列中。

所述解析数据包包括所述第一类型流媒体数据包对应的第一类型解析数据包及所述第二类型流媒体数据包对应的第二类型解析数据包。

当流媒体为可播放音频的视频流时,接收模块201接收的流媒体数据包包括下列三种:携带所述文字数据的文字数据包、携带音频数据的音频数据包及携带视频数据的视频数据包。基于上述三种流媒体数据包又可分别解析生成三种解析数据包:文字解析数据包、音频解析数据包及视频解析数据包。将音频解析数据包添加至音频缓存队列中,将视频解析数据包添加至视频缓存队列中,将文字解析数据包添加至音频缓存队列或视频缓存队列中。

当流媒体为不可播放音频的视频流时,接收模块201接收的流媒体数据包包括下列两种:携带所述文字数据的文字数据包及携带视频数据的视频数据包。在文字数据包对应的文字解析数据包生成时,直接将其添加至视频缓存队列中即可。

当流媒体为音频流时,接收模块201接收的流媒体数据包包括下列两种:携带所述文字数据的文字数据包及携带音频数据的音频数据包。在文字数据包对应的文字解析数据包生成时,直接将其添加至音频缓存队列中即可。

显示模块203,用于在读取所述缓存队列中的解析数据包时,若首次识别到所述文字数据,则按照预先确定的显示规则显示所述文字数据。

优选地,本实施例中,所述预先确定的显示规则包括:

当显示模块203首次识别到所述文字数据时,按照预先确定的显示时长显示所述文字数据。或者,当首次识别到所述文字数据时,显示所述文字数据,直至识别到新的文字数据时,停止所述文字数据的显示以显示所述新的文字数据。

本实施例通过网络依次接收所述流媒体数据包;按照接收顺序解析流媒体数据包,且每解析得到一解析数据包时,将解析数据包添加至缓存队列中;在读取缓存队列中的解析数据包时,若首次识别到文字数据,则按照预先确定的显示规则显示该文字数据。相较于现有技术,本实施例根据接收顺序解析流媒体数据包,又根据解析顺序依次将生成的解析数据包放入缓存队列中,从而保证在缓存队列中解析数据包的顺序与数据发送装置中待发送队列中流媒体数据的排列顺序一致,因此,可使文字数据的显示与直播媒体数据的播放进程保持一致。

请参阅图6,图6为本发明数据接收程序20第二实施例的程序模块图。

本实施例在第一实施例的基础上,该数据接收程序20还包括同步模块204,所述同步模块204用于:

首先,获取所述缓存队列对应的缓存时长,实时侦测所述缓存时长是否大于第四预设阈值(例如,2秒)。

缓存队列对应的缓存时长可根据缓存队列首位的解析数据包的时间戳及缓存队列末位的解析数据包的时间戳确定。

然后,当所述缓存时长大于所述第四预设阈值时,在所述缓存队列中删除预设数量的第二类型解析数据包。

当流媒体为可播放音频的视频流时,同步模块204将音频缓存队列中的音频解析数据包进行删除处理,此时触发启动预先设置的追帧机制,为了保持音视频播放同步,追帧机制控制加速读取视频缓存队列中的视频解析数据包,以实现视频数据的加速播放,以此保证直播的低延时性。

当流媒体为不可播放音频的视频流时,同步模块204将视频缓存队列中的视频解析数据包进行删除处理,此时可加速读取后续的视频解析数据包,以此保证直播的低延时性。

当流媒体为音频流时,同步模块204将音频缓存队列中的音频解析数据包进行删除处理,此时可加速读取后续的音频解析数据包,以此保证直播的低延时性。

需要注意的是,本实施例中,同步模块204仅对缓存队列中的第二类型解析数据包进行删除处理,而不需删除缓存队列中的第一类型解析数据包,第一类型解析数据包的删除可能造成文字数据无法及时显示。

此外,本发明还提出一种数据发送方法。

如图7所示,图7为本发明数据发送方法第一实施例的流程示意图。

本实施例中,该方法包括:

步骤s11,当接收到文字数据下发指令时,在一待封装媒体帧队列中确定一媒体帧为起始帧。

上述媒体帧包括音频帧或视频帧。该媒体帧经渲染、编码、封装后生成对应的流媒体数据包,所谓流媒体是指采用流式传输的方式在互联网上播放的媒体格式,包括音频流、视频流、文本流、图像流、动画流等。

当所需传输的流媒体为可播放音频的视频流时,上述待封装媒体帧队列包括待封装音频帧队列及待封装视频帧队列,可选择其中一个待封装媒体帧队列作为处理对象。优选地,本实施例中,将待封装视频帧队列作为处理对象,即在待封装视频帧队列中确定一视频帧为起始帧。

当所需传输的流媒体为不可播放音频的视频流时,上述待封装媒体帧队列为待封装视频帧队列,则将该待封装视频帧队列作为处理对象。

当所需传输的流媒体为音频流时,上述待封装媒体帧队列为待封装音频帧队列,则将该待封装音频帧队列作为处理对象。

上述确定一媒体帧为起始帧的步骤包括:

将接收到文字数据下发指令时正在执行渲染的音频帧或视频帧作为起始帧。此步骤中将当前正在执行渲染的音频帧或视频帧作为起始帧,可实现直播媒体数据播放进程与文字数据显示的精确同步。

步骤s12,按照预先确定的存储规则将待下发的文字数据存储至所述起始帧及其后续的媒体帧中。

上述待下发的文字数据可根据应用场景的不同进行自定义设置,例如,在直播问答的应用场景中,该文字数据可以是题目、答案、统计数据等,主播或者其他工作人员可预先编辑多个题目及其对应的答案,并将每一个题目或者答案对应保存为一文字数据。

上述文字数据可以预先存储于数据发送装置(例如,主播端装置)或者服务器中。若文字数据存储于服务器中,则数据发送装置与服务器建立网络连接,通过轮询服务端文字数据列表的方式实时获取该文字数据。若文字数据存储于数据发送装置中,则数据发送装置直接从本地文字数据存储队列中取出对应序号的文字数据即可。

优选地,本实施例中,上述预先确定的存储规则包括以下两种方案:

方案一:将所述文字数据存储至所述起始帧及其后续的每一帧媒体帧中,直至满足第一预设条件时停止所述文字数据的存储操作。

上述第一预设条件包括存储所述文字数据的媒体帧的数量超过第一预设阈值,或者,对所述文字数据的存储操作时长超过第一预设操作时长,或者,接收到新的文字数据下发指令。

方案二:将所述起始帧作为第一个存储帧,并将所述文字数据存储至所述第一个存储帧中,且自所述第一个存储帧开始,每间隔第一预设数量的媒体帧(例如,每间隔两帧媒体帧)或者每间隔第一预设时长(例如,0.2秒)确定一存储帧,同时将所述文字数据存储至确定的存储帧中,直至满足第二预设条件时停止对所述文字数据的存储操作。

上述第二预设条件包括存储所述文字数据的媒体帧的数量超过第二预设阈值,或者,对所述文字数据的存储操作时长超过第二预设操作时长,或者,接收到新的文字数据下发指令。

上述预先确定的存储规则将待下发的文字数据存储至所述起始帧及其后续的媒体帧中,即使后续因网络拥塞造成起始帧丢失,也可从后续未丢失的媒体帧中获取该待下发的文字数据。

步骤s13,在对所述媒体帧进行封装处理时,若首次识别到一媒体帧中存储有所述文字数据,则按照预先确定的封装规则,将所述文字数据封装至多个流媒体数据包中。

优选地,本实施例中,上述预先确定的封装规则包括:

当首次识别到一媒体帧中存储有所述文字数据时,将所述文字数据封装成第一类型流媒体数据包,将所述媒体帧中的媒体数据封装成第二类型流媒体数据包,并将封装生成的所述第一类型流媒体数据包及第二类型流媒体数据包依次加入至待发送队列中。

例如,若流媒体格式为flv(flashvideo),则该流媒体数据包为flvtag数据包,将所述文字数据封装成0x12类型的tag(即第一类型的流媒体数据包),且当媒体帧为音频帧时,将该音频帧中的音频数据封装成0x08类型的tag,当媒体帧为视频帧时,将该视频帧中的视频数据封装成0x09类型的tag,其中,0x08类型的tag及0x09类型的tag统称为第二类型的流媒体数据包。

当首次识别到一媒体帧中存储有所述文字数据时,该文字数据封装生成的第一类型流媒体数据包即为该文字数据对应的首个第一类型流媒体数据包,将该首个第一类型流媒体数据包先于其对应的第二类型流媒体数据包加入至待发送队列中,以使该首个第一类型流媒体数据包先于其对应的第二类型流媒体数据包发送至数据接收装置,数据接收装置按照接收顺序对流媒体数据包进行解析及读取,若读取到该首个第一类型流媒体数据包,则显示该首个第一类型流媒体数据包中的文字数据,同时播放该第一类型流媒体数据包对应的第二类型流媒体数据包中的媒体数据。

若将首个第一类型流媒体数据包对应的第二类型流媒体数据包先于该首个第一类型流媒体数据包加入至待发送队列中,则会造成数据接收装置先接收到该首个第一类型流媒体数据包对应的第二类型流媒体数据包,并先对该第二类型流媒体数据包进行解析、读取及播放,造成文字数据的显示晚于其对应的第二类型流媒体数据包中的媒体数据的播放。因此,将该首个第一类型流媒体数据包先于其对应的第二类型流媒体数据包加入至待发送队列中的步骤有利于提高直播媒体数据播放进程与文字数据显示的一致性。

接着,自所述文字数据对应的首个所述第一类型流媒体数据包加入所述待发送队列开始,每间隔第二预设时长(例如,1秒)将所述文字数据封装成第一类型流媒体数据包加入至所述待发送队列中,直至满足第三预设条件时停止对所述文字数据的封装操作。

上述第二预设时长可根据需要设置,但其值应当在一个合适的范围内,第二预设时长的值越小,第一类型流媒体数据包的生成频率越高,造成数据发送装置发布至网络的数据量增大,网络传输负荷也随之增大。第二预设时长的值越大,第一类型流媒体数据包的生成频率越低,当首个第一类型流媒体数据包丢失时,数据接收装置若要从后续的第一类型流媒体数据包中获取文字数据,则需等待更长的时间。

上述第三预设条件包括存储所述文字数据的媒体帧的数量超过第三预设阈值,或者,对所述文字数据的封装操作时长超过第三预设操作时长,或者,识别到新的文字数据。

上述第三预设操作时长可根据该文字数据在数据接收装置上的预设显示时长确定。

此外,本实施例中,在对媒体帧的封装过程中,还可为生成的各流媒体数据添加相应的时间戳。

本实施例中,上述每间隔第二预设时长将所述文字数据封装成第一类型流媒体数据包并加入至所述待发送队列中的步骤可替换为:每当封装生成第三预设数量的流媒体数据包时,将所述文字数据封装成第一类型流媒体数据包加入至所述待发送队列中,直至满足第三预设条件时停止对所述文字数据的封装操作。

步骤s14,将生成的所述流媒体数据包发布至网络。

数据发送装置根据所述待发送队列,通过cdn(contentdeliverynetwork,内容分发网络)进行流媒体数据包的发布。cdn系统能够实时地根据网络流量和各节点的连接、负载状态以及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决网络拥塞的状况,提高用户访问网站的响应速度。

本实施例在一待封装媒体帧队列中确定一媒体帧为起始帧;按照预先确定的存储规则将待下发的文字数据存储至起始帧及其后续的媒体帧中;在对媒体帧进行封装处理时,若首次识别到一媒体帧中存储有文字数据,则按照预先确定的封装规则,将文字数据封装至对应的流媒体数据包中,并将生成的流媒体数据包发布至网络。相较于现有技术,本实施例不仅将待下发的文字数据存储至起始帧,还将该文字数据存储至后续多个媒体帧中,在进行媒体帧的封装时,同样将文字数据封装至多个流媒体数据包中。当发生网络拥塞时,即使部分媒体帧丢失,也依然可从其他未丢失的媒体帧中提取出文字数据。解决了在网络拥塞时,文字信息无法及时展示的问题。

此外,本发明在上述数据发送方法的基础上还提出一种数据接收方法。

如图8所示,图8为本发明数据接收方法第一实施例的流程示意图。

本实施例中,该方法包括:

步骤s21,通过网络依次接收所述流媒体数据包。

所述流媒体数据包包括两种类型,分别为携带所述文字数据的第一类型流媒体数据包及第二类型流媒体数据包。所述第二类型流媒体数据包又可进一步分为两类:携带音频数据的音频数据包及携带视频数据的视频数据包。

步骤s22,按照接收顺序解析所述流媒体数据包,且每解析得到一解析数据包时,将所述解析数据包添加至缓存队列中。

所述解析数据包包括所述第一类型流媒体数据包对应的第一类型解析数据包及所述第二类型流媒体数据包对应的第二类型解析数据包。

当流媒体为可播放音频的视频流时,接收的流媒体数据包包括下列三种:携带所述文字数据的文字数据包、携带音频数据的音频数据包及携带视频数据的视频数据包。基于上述三种流媒体数据包又可分别解析生成三种解析数据包:文字解析数据包、音频解析数据包及视频解析数据包。将音频解析数据包添加至音频缓存队列中,将视频解析数据包添加至视频缓存队列中,将文字解析数据包添加至音频缓存队列或视频缓存队列中。

当流媒体为不可播放音频的视频流时,接收的流媒体数据包包括下列两种:携带所述文字数据的文字数据包及携带视频数据的视频数据包。在文字数据包对应的文字解析数据包生成时,直接将其添加至视频缓存队列中即可。

当流媒体为音频流时,接收的流媒体数据包包括下列两种:携带所述文字数据的文字数据包及携带音频数据的音频数据包。在文字数据包对应的文字解析数据包生成时,直接将其添加至音频缓存队列中即可。

步骤s23,在读取所述缓存队列中的解析数据包时,若首次识别到所述文字数据,则按照预先确定的显示规则显示所述文字数据。

优选地,本实施例中,所述预先确定的显示规则包括:

当首次识别到所述文字数据时,按照预先确定的显示时长显示所述文字数据。或者,当首次识别到所述文字数据时,显示所述文字数据,直至识别到新的文字数据时,停止所述文字数据的显示以显示所述新的文字数据。

本实施例通过网络依次接收所述流媒体数据包;按照接收顺序解析流媒体数据包,且每解析得到一解析数据包时,将解析数据包添加至缓存队列中;在读取缓存队列中的解析数据包时,若首次识别到文字数据,则按照预先确定的显示规则显示该文字数据。相较于现有技术,本实施例根据接收顺序解析流媒体数据包,又根据解析顺序依次将生成的解析数据包放入缓存队列中,从而保证在缓存队列中解析数据包的顺序与数据发送装置中待发送队列中流媒体数据的排列顺序一致,因此,可使文字数据的显示与直播媒体数据的播放进程保持一致。

进一步地,本实施例中,该方法还包括:

首先,获取所述缓存队列对应的缓存时长,实时侦测所述缓存时长是否大于第四预设阈值(例如,2秒)。

缓存队列对应的缓存时长可根据缓存队列首位的解析数据包的时间戳及缓存队列末位的解析数据包的时间戳确定。

然后,当所述缓存时长大于所述第四预设阈值时,在所述缓存队列中删除预设数量的第二类型解析数据包。

当流媒体为可播放音频的视频流时,将音频缓存队列中的音频解析数据包进行删除处理,此时触发启动预先设置的追帧机制,为了保持音视频播放同步,追帧机制控制加速读取视频缓存队列中的视频解析数据包,以实现视频数据的加速播放,以此保证直播的低延时性。

当流媒体为不可播放音频的视频流时,将视频缓存队列中的视频解析数据包进行删除处理,此时可加速读取后续的视频解析数据包,以此保证直播的低延时性。

当流媒体为音频流时,将音频缓存队列中的音频解析数据包进行删除处理,此时可加速读取后续的音频解析数据包,以此保证直播的低延时性。

需要注意的是,本实施例仅对缓存队列中的第二类型解析数据包进行删除处理,而不需删除缓存队列中的第一类型解析数据包,第一类型解析数据包的删除可能造成文字数据无法及时显示。

进一步地,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有数据发送程序,所述数据发送程序可被至少一个处理器执行,以使所述至少一个处理器执行上述任一实施例中的数据发送方法的步骤。

进一步地,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有数据接收程序,所述数据接收程序可被至少一个处理器执行,以使所述至少一个处理器执行上述任一实施例中的数据接收方法的步骤。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

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