流媒体转发方法、装置以及计算机可读存储介质与流程



1.本发明涉及计算机技术领域,具体提供一种流媒体转发方法、装置以及计算机可读存储介质。


背景技术:



2.随着流媒体技术在各行业越来越广泛的应用,用户对流媒体(将多媒体数据压缩后进行分段传输)的传输体验要求也越来越高。流媒体转发服务器的并发性能影响着服务器的整体运营成本,流媒体转发在实际中主要遇到以下几方面问题:流媒体转发服务的并发能力不足,导致运营成本高;流媒体服务对流媒体的转发普遍存在一定的延时,且并发越大,延时越高;转发的流畅度会受服务并发的影响,即并发越大,流畅度越差。而如何在流媒体传输过程中降低延时也直接影响用户对流媒体的体验。
3.因此,需要一种新的技术方案,来有效降低流媒体转发的延时,以改善流媒体服务运营并提升用户使用体验。


技术实现要素:



4.为了克服上述缺陷,提出了本发明,以提供一种能够降低流媒体转发延时的流媒体转发方法、终端、设备以及计算机可读存储介质。
5.在第一方面,本发明提供一种流媒体转发方法,包括:向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据,所述第一流媒体数据为所述第二流媒体数据的上一流媒体数据;在所述第二流媒体数据接收完成时,生成数据接收完成事件,通过网络层发送至预设的发布端,所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列;在所述第一流媒体数据发送完成时,生成数据发送完成事件,通过网络层发送至预设的转发端,所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据;向所述转发设备发送已取出的所述第二流媒体数据。
6.优选地,前述的流媒体转发方法,“所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据”的步骤还包括:所述转发端在未取出所述第二流媒体数据时,进入等待数据状态;“所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列”的步骤还包括:所述发布端将所述第二流媒体数据发送给处于所述等待数据状态的所述转发端。
7.优选地,前述的流媒体转发方法,“所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列”的步骤包括:所述发布端生成第二流媒体数据对象,所述第二流媒体数据对象中包括所述第二流媒体数据、所述第二流媒体数据对象的标识,并将所述第二流媒体数据对象放入所述转发队列;“所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据”的步骤包括:所述转发端从所述转发队列中获取所述第二流媒体数据对象,并从所述第二流媒体数据对象中获取所述第二流媒体数据。
8.优选地,前述的流媒体转发方法,在“所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列”的步骤之后,还包括:判断所述转发队列中所有流媒体数据对象对应的画面组是否为多个,在判断结果为是时从所述转发队列中删除非最新画面组对应的流媒体数据对象。
9.优选地,前述的流媒体转发方法,“所述转发端从所述转发队列中获取所述第二流媒体数据对象”的步骤包括:所述转发端根据已知的所述第一流媒体数据对象的标识确定所述第二流媒体数据对象的标识,按照所述第二流媒体数据对象的标识从所述转发队列中获取所述第二流媒体数据对象。
10.优选地,前述的流媒体转发方法,在“向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据”的步骤之前,还包括:通过网络层获取所述转发设备的连接请求命令,所述连接请求命令携带流标识;在会话层检测到所述发布端与所述流标识对应时,创建与所述流标识对应的所述转发端。
11.优选地,前述的流媒体转发方法,还包括:通过网络层获取超时或连接断开事件;在会话层检测到所述超时或连接断开事件与所述发布设备相关时,清除所述发布端以及所述发布端对应的所有转发端;在会话层检测到所述超时或连接断开事件与所述转发设备相关时,清除所述转发端,并在不存在所述发布端对应的其他转发端时清除所述发布端。
12.在第二方面,本发明提供一种流媒体转发装置,包括:收发模块,向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据,所述第一流媒体数据为所述第二流媒体数据的上一流媒体数据;发布模块,在所述第二流媒体数据接收完成时,生成数据接收完成事件,通过网络层发送至预设的发布端,所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列;转发模块,在所述第一流媒体数据发送完成时,生成数据发送完成事件,通过网络层发送至预设的转发端,所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据;所述收发模块向所述转发设备发送已取出的所述第二流媒体数据。
13.在第三方面,本发明提供一种控制装置,包括处理器和存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行前述的流媒体转发方法。
14.在第四方面,本发明提供一种计算机可读存储介质,该计算机可读存储介质其中存储有多条程序代码,所述程序代码适于由处理器加载并运行以执行上述流媒体转发方法的技术方案中任一项技术方案所述的上述流媒体转发方法。
15.本发明上述一个或多个技术方案,至少具有如下一种或多种有益效果:
16.本发明的技术方案中,在流媒体数据接收完成时,使用网络层的数据接收完成事件触发流媒体数据发布,在流媒体数据发送完成时,使用网络层的数据发送完成事件触发下一流媒体数据转发,即本发明充分利用了网络异步事件进行流媒体转发,能够显著地减低转发延时,同时因不需要开线程进行数据转发,减少了对线程的调度,转发性能更高,并发能力更强。
附图说明
17.参照附图,本发明的公开内容将变得更易理解。本领域技术人员容易理解的是:这
些附图仅仅用于说明的目的,而并非意在对本发明的保护范围组成限制。其中:
18.图1是根据本发明的一个实施例的流媒体转发方法的流程图;
19.图2是根据本发明的一个实施例的流媒体转发方法的流程图;
20.图3是根据本发明的一个实施例的流媒体转发方法的原理图;
21.图4是根据本发明的一个实施例的流媒体转发方法的原理图;
22.图5是根据本发明的一个实施例的流媒体转发方法的原理图;
23.图6是根据本发明的一个实施例的流媒体转发方法的原理图;
24.图7是根据本发明的一个实施例的流媒体转发方法的原理图;
25.图8是根据本发明的一个实施例的流媒体转发方法的原理图。
具体实施方式
26.下面参照附图来描述本发明的一些实施方式。本领域技术人员应当理解的是,这些实施方式仅仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。
27.在本发明的描述中,“模块”、“处理器”可以包括硬件、软件或者两者的组合。一个模块可以包括硬件电路,各种合适的感应器,通信端口,存储器,也可以包括软件部分,比如程序代码,也可以是软件和硬件的组合。处理器可以是中央处理器、微处理器、图像处理器、数字信号处理器或者其他任何合适的处理器。处理器具有数据和/或信号处理功能。处理器可以以软件方式实现、硬件方式实现或者二者结合方式实现。非暂时性的计算机可读存储介质包括任何合适的可存储程序代码的介质,比如磁碟、硬盘、光碟、闪存、只读存储器、随机存取存储器等等。术语“a和/或b”表示所有可能的a与b的组合,比如只是a、只是b或者a和b。术语“至少一个a或b”或者“a和b中的至少一个”含义与“a和/或b”类似,可以包括只是a、只是b或者a和b。单数形式的术语“一个”、“这个”也可以包含复数形式。
28.如图1所示,本发明的一个实施例中提供一种流媒体转发方法,该方法包括:
29.步骤s110,向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据,第一流媒体数据为第二流媒体数据的上一流媒体数据。
30.本实施例的技术方案可在流媒体转发服务器上实现,完成发布设备流媒体数据向转发设备的发送。
31.步骤s120,在第二流媒体数据接收完成时,生成数据接收完成事件,通过网络层发送至预设的发布端,发布端用于在收到数据接收完成事件时将第二流媒体数据放入预设的转发队列。
32.本实施例中,发布端是基于发布设备创建的对象。本实施例中,在流媒体数据接收完成时,使用网络层的数据接收完成事件触发流媒体数据发布。本实施例中,数据接收完成事件为网络异步事件。
33.步骤s130,在第一流媒体数据发送完成时,生成数据发送完成事件,通过网络层发送至预设的转发端,转发端用于在收到数据发送完成事件时从转发队列中取出第二流媒体数据。
34.本实施例中,转发端是基于转发设备创建的对象。本实施例中,在流媒体数据发送完成时,使用网络层的数据发送完成事件触发下一流媒体数据转发。本实施例中,数据发送完成事件为网络异步事件。
35.步骤s140,向转发设备发送已取出的第二流媒体数据。
36.根据本实施例的技术方案,充分利用了网络异步事件进行流媒体转发,能够显著地减低转发延时,同时因不需要开线程进行数据转发,减少了对线程的调度,转发性能更高,并发能力更强。
37.如图2所示,本发明的一个实施例中提供一种流媒体转发方法,该方法包括:
38.步骤s210,通过网络层获取转发设备的连接请求命令,连接请求命令携带流标识。
39.步骤s220,在会话层检测到发布端与流标识对应时,创建与流标识对应的转发端。
40.本实施例中,在会话层识别连接请求命令来自转发设备,此时如未发现流标识对应的发布端,则取消创建对象形式的转发端。本实施例中,还通过网络层获取发布设备的连接请求命令,在会话层识别连接请求命令来自发布设备时,以对象的形式创建发布端。
41.本实施例中,会话层的管理具体可以如图3所示:步骤s310,解析连接请求命令,所述连接请求命令包括流id(标识)、是否为发布设备等信息,根据连接请求命令判断命令来自流媒体发布设备还是接收设备,如是发布设备进入步骤s320,如是转发设备进入步骤s330;步骤s320,创建发布端对象,并将该发布端和对应的流id记录进行保存;步骤s330,根据流id,从会话管理记录的已创建对象中查是否存在发布端,如存在进入步骤s340,不存在返回错误给请求者;步骤s340,创建转发端对象,并将该转发端和对应的流id记录进行保存。
42.步骤s230,向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据,第一流媒体数据为第二流媒体数据的上一流媒体数据。
43.步骤s240,在第二流媒体数据接收完成时,生成数据接收完成事件,通过网络层发送至预设的发布端,发布端用于在收到数据接收完成事件时生成第二流媒体数据对象,第二流媒体数据对象中包括第二流媒体数据、第二流媒体数据对象的标识,并将第二流媒体数据对象放入转发队列。
44.步骤s250,判断转发队列中所有流媒体数据对象对应的画面组(gop,包含一个关键帧的一个编码画面组)是否为多个,在判断结果为是时从转发队列中删除非最新画面组对应的流媒体数据对象。
45.本实施例中,仅在转发队列中保留最新画面组对应的流媒体数据对象,以减少转发队列的内容,有利于转发队列的快速存取。
46.步骤s260,如转发端处于等待数据状态,发布端将第二流媒体数据发送给转发端。
47.本实施例中,当转发端处于等待数据状态时,说明转发端已发送完上一流媒体数据对象,此时发布端将流媒体数据对象主动发送给转发端。
48.本实施例中,流媒体数据发布的过程具体可以如图4所示:步骤s410,发布端收到数据接收完成事件后,根据传输协议,从接收缓冲中读取接收到的流媒体数据;步骤s420,发布端将接收到的流媒体数据创建为流媒体数据对象,所述流媒体数据对象包含流id、流媒体数据、对象标识、接收时间、是否为关键帧等信息;步骤s430,发布端将流媒体数据对象写入对应流id的流媒体发送队列中,所述流媒体发送队列为每个流id存在一个;步骤s440,统计该队列的流媒体信息,判断保存的流媒体信息是否超过一个gop;步骤s450,删除队列中时间较早的gop对应的流媒体数据对象;步骤s460,如存在等待数据的转发端,将最新的数据对象提供给转发端中。
49.步骤s270,在第一流媒体数据发送完成时,生成数据发送完成事件,通过网络层发送至预设的转发端,转发端用于在收到数据发送完成事件时从转发队列中获取第二流媒体数据对象,并从第二流媒体数据对象中获取第二流媒体数据。
50.具体地,转发端根据已知的第一流媒体数据对象的标识确定第二流媒体数据对象的标识,按照第二流媒体数据对象的标识从转发队列中获取第二流媒体数据对象。
51.步骤s280,转发端在未取出第二流媒体数据时,进入等待数据状态。
52.本实施例中,当转发端从转发队列中无法获取流媒体数据时,进入等待数据状态,等待发布端向其直接发送流媒体数据。
53.本实施例中,流媒体数据转发的过程具体可以如图5所示:步骤s510,从流id对应的队列中获取下一个未发送的数据对象,获取下一个数据对象的依据为上一次已发送完成的数据对象标识,如获取成功进入步骤s520,否则跳转到步骤s530;步骤s520,将获取到数据对象中的流媒体数据写入发送缓冲,等待数据发送完成;步骤s530,转发端转为等待数据的状态,待发布端有新数据后重新激活数据转发。
54.步骤s290,向转发设备发送已取出的第二流媒体数据。
55.步骤s2100,通过网络层获取超时或连接断开事件。
56.步骤s2110,在会话层检测到超时或连接断开事件与发布设备相关时,清除发布端以及发布端对应的所有转发端。
57.步骤s2120,在会话层检测到超时或连接断开事件与转发设备相关时,清除转发端,并在不存在发布端对应的其他转发端时清除发布端。
58.本实施例中,处理超时和连接断开事件的过程具体可以如图6所示:步骤s610,网络层获取超时和连接断开事件后,在会话层判断事件是发布设备还是转发设备导致,如是发布设备导致跳转到步骤s620,如是转发设备跳转到步骤s640;步骤s620,释放事件对应的发布端对象(即消除发布端);步骤s630,根据s620中释放的发布端对象的流id,释放所有该流id的转发端对象;步骤s640,释放事件对应的转发端对象(即消除转发端);步骤s650,根据该对象的流id,查该流id的发布端是否还存在其他关联的转发端对象,如不存在则跳转到步骤s660;步骤s660,释放s650中转发对象流id对应的发布端对象。
59.本实施例中,利用网络层的网络异步事件进行流媒体转发,网络层管理工作具体可以如图7所示:步骤s710,启动网络层网络端口监听;步骤s720,在网络层设置新的数据接收请求,网络层等待来自发布设备的数据接收完成;s730,当发布设备推送流媒体数据完成后,网络层会触发数据接收完成的事件,并将该事件回调给发布端进行发布;s740,在网络层设置新的数据发送请求,网络层等待发往转发设备的数据发送完成;s750,当数据成功转发给转发设备后,网络层会触发数据发送完成的事件,并将该事件回调给转发端继续进行转发。
60.综上可知,本实施例的技术方案提供了一种高并发、低延时的流媒体转发方法,其可抽象为三层逻辑架构,如图8所示,即:网络层、发布端及转发端、会话层,网络层用于流媒体数据和连接请求命令的接收和发送,并将连接、数据接收和发送完成的事件分别回调给会话层、发布端和转发端;发布端解析接收到的流媒体数据,并将解析后的数据放入转发队列中;转发端从转发队列中获取流媒体数据并转发给对应的转发设备;在会话层解析发布设备和转发设备的连接请求命令以创建发布端和转发端对象,并在超时时消除发布端和转
发端,以断开发布设备和转发设备的连接。本实施例所提供的高并发低延时流媒体转发方法,可有效的解决在流媒体转发过程中出现的并发能力不足、延时大、流畅度不足,达到较好的流媒体转发效果。
61.本领域技术人员能够理解的是,本发明实现上述一实施例的方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器、随机存取存储器、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括电载波信号和电信信号。
62.进一步,本发明还提供了一种计算机可读存储介质。在根据本发明的一个计算机可读存储介质实施例中,计算机可读存储介质可以被配置成存储执行上述方法实施例的流媒体转发方法的程序,该程序可以由处理器加载并运行以实现上述流媒体转发方法。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机可读存储介质可以是包括各种电子设备形成的存储装置设备,可选的,本发明实施例中计算机可读存储介质是非暂时性的计算机可读存储介质。
63.进一步,应该理解的是,由于各个模块的设定仅仅是为了说明本发明的装置的功能单元,这些模块对应的物理器件可以是处理器本身,或者处理器中软件的一部分,硬件的一部分,或者软件和硬件结合的一部分。因此,图中的各个模块的数量仅仅是示意性的。
64.本领域技术人员能够理解的是,可以对装置中的各个模块进行适应性地拆分或合并。对具体模块的这种拆分或合并并不会导致技术方案偏离本发明的原理,因此,拆分或合并之后的技术方案都将落入本发明的保护范围内。
65.至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征作出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

技术特征:


1.一种流媒体转发方法,其特征在于,包括:向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据,所述第一流媒体数据为所述第二流媒体数据的上一流媒体数据;在所述第二流媒体数据接收完成时,生成数据接收完成事件,通过网络层发送至预设的发布端,所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列;在所述第一流媒体数据发送完成时,生成数据发送完成事件,通过网络层发送至预设的转发端,所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据;向所述转发设备发送已取出的所述第二流媒体数据。2.根据权利要求1所述的流媒体转发方法,其特征在于,“所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据”的步骤还包括:所述转发端在未取出所述第二流媒体数据时,进入等待数据状态;“所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列”的步骤还包括:所述发布端将所述第二流媒体数据发送给处于所述等待数据状态的所述转发端。3.根据权利要求1所述的流媒体转发方法,其特征在于,“所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列”的步骤包括:所述发布端生成第二流媒体数据对象,所述第二流媒体数据对象中包括所述第二流媒体数据、所述第二流媒体数据对象的标识,并将所述第二流媒体数据对象放入所述转发队列;“所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据”的步骤包括:所述转发端从所述转发队列中获取所述第二流媒体数据对象,并从所述第二流媒体数据对象中获取所述第二流媒体数据。4.根据权利要求3所述的流媒体转发方法,其特征在于,在“所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列”的步骤之后,还包括:判断所述转发队列中所有流媒体数据对象对应的画面组是否为多个,在判断结果为是时从所述转发队列中删除非最新画面组对应的流媒体数据对象。5.根据权利要求3所述的流媒体转发方法,其特征在于,“所述转发端从所述转发队列中获取所述第二流媒体数据对象”的步骤包括:所述转发端根据已知的所述第一流媒体数据对象的标识确定所述第二流媒体数据对象的标识,按照所述第二流媒体数据对象的标识从所述转发队列中获取所述第二流媒体数据对象。6.根据权利要求1所述的流媒体转发方法,其特征在于,在“向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据”的步骤之前,还包括:通过网络层获取所述转发设备的连接请求命令,所述连接请求命令携带流标识;在会话层检测到所述发布端与所述流标识对应时,创建与所述流标识对应的所述转发端。
7.根据权利要求1所述的流媒体转发方法,其特征在于,还包括:通过网络层获取超时或连接断开事件;在会话层检测到所述超时或连接断开事件与所述发布设备相关时,清除所述发布端以及所述发布端对应的所有转发端;在会话层检测到所述超时或连接断开事件与所述转发设备相关时,清除所述转发端,并在不存在所述发布端对应的其他转发端时清除所述发布端。8.一种流媒体转发装置,其特征在于,包括:收发模块,向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据,所述第一流媒体数据为所述第二流媒体数据的上一流媒体数据;发布模块,在所述第二流媒体数据接收完成时,生成数据接收完成事件,通过网络层发送至预设的发布端,所述发布端用于在收到所述数据接收完成事件时将所述第二流媒体数据放入预设的转发队列;转发模块,在所述第一流媒体数据发送完成时,生成数据发送完成事件,通过网络层发送至预设的转发端,所述转发端用于在收到所述数据发送完成事件时从所述转发队列中取出所述第二流媒体数据;所述收发模块向所述转发设备发送已取出的所述第二流媒体数据。9.一种控制装置,包括处理器和存储装置,所述存储装置适于存储多条程序代码,其特征在于,所述程序代码适于由所述处理器加载并运行以执行权利要求1至7中任一项所述的流媒体转发方法。10.一种计算机可读存储介质,其中存储有多条程序代码,其特征在于,所述程序代码适于由处理器加载并运行以执行权利要求1至7中任一项所述的流媒体转发方法。

技术总结


本发明涉及计算机处理技术领域,具体提供一种流媒体转发方法、装置以及计算机可读存储介质,该方法包括:向转发设备发送第一流媒体数据,从发布设备接收第二流媒体数据,第一流媒体数据为第二流媒体数据的上一流媒体数据;在第二流媒体数据接收完成时,生成数据接收完成事件,通过网络层发送至预设的发布端,发布端用于在收到数据接收完成事件时将第二流媒体数据放入预设的转发队列;在第一流媒体数据发送完成时,生成数据发送完成事件,通过网络层发送至预设的转发端,转发端用于在收到数据发送完成事件时从转发队列中取出第二流媒体数据;向转发设备发送已取出的第二流媒体数据。本发明充分利用了网络异步事件进行流媒体转发,能够显著地减低转发延时。能够显著地减低转发延时。能够显著地减低转发延时。


技术研发人员:

张方舟

受保护的技术使用者:

上海云从企业发展有限公司

技术研发日:

2022.12.20

技术公布日:

2023/3/10

本文发布于:2024-09-24 13:17:05,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/69755.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:流媒体   所述   数据   队列
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议