1.本技术涉及通信技术领域,尤其涉及一种媒体流传输方法、装置、设备及计算机可读存储介质,以及一种媒体流传输系统。
背景技术:
2.随着计算机技术和网络直播的发展,各类直播app层出不穷,以满足人们的不同需求。在直播场景中,低延时是衡量用户体验的指标之一。对延时影响较大的就是直播架构中选择的传输协议。目前,常见的协议有rtmp(real time messaging protocol,实时消息协议)、hls(http live streaming,基于http的流媒体网络传输协议)、http-flv。但是,基于这些协议的传输的实时性不能满足用户高需求。
技术实现要素:
3.本技术实施例的目的是提供一种媒体流传输方法、装置、计算机设备及计算机可读存储介质,以及一种媒体流传输系统,用于解决上述缺陷。
4.本技术实施例的一个方面提供了一种媒体流传输方法,用于用户设备中,所述方法包括:
5.确定所述统一资源标识符是否携带有quic标识;及
6.响应于所述统一资源标识符携带有所述quic标识,与所述rtmp服务器建立基于quic传输协议的quic连接,以及建立基于所述quic连接之上的目标rtmp连接。
7.可选地,所述quic标识通过所述统一资源标识符中的uri scheme表示;
8.其中,所述uri scheme包括“rtmp”及位于该“rtmp”后的一个或多个quic标识字符。
9.可选地,所述quic标识为预设字符串,该预设字符串位于所述统一资源标识符的查询字符串参数中。
10.可选地,还包括:
11.响应于所述统一资源标识符未携带所述quic标识,与所述rtmp服务器建立基于tcp传输协议的tcp连接,以及建立基于所述tcp连接之上的其它rtmp连接。
12.可选地,还包括:
13.在所述rtmp服务器不支持建立所述quic连接或所述目标rtmp连接的情形下,将携带有所述quic标识的统一资源标识符转换为符合预设格式的统一资源标识符;
14.响应于转换后的统一资源标识符,在所述用户设备和所述rtmp服务器之间建立连接。
15.可选地,还包括:
16.预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
17.所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
18.所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待播放的rtmp数据。
19.可选地,所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
20.所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
21.本技术实施例的再一个方面提供了一种媒体流传输装置,用于用户设备中,所述装置包括:
22.获取模块,用于获取用于访问rtmp服务器的统一资源标识符;
23.确定模块,用于确定所述统一资源标识符是否携带有quic标识;及
24.连接模块,用于响应于所述统一资源标识符携带有所述quic标识,与所述rtmp服务器建立基于quic传输协议的quic连接,以及建立基于所述quic连接之上的目标rtmp连接。
25.本技术实施例的再一个方面提供了一种媒体流传输方法,用于服务器中,所述方法包括:
26.响应于用户设备提供的quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;及
27.响应于用户设备基于所述quic连接传输的rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。
28.可选地,还包括:
29.预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
30.所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
31.所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
32.可选地,所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
33.所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待推送的rtmp数据。
34.本技术实施例的再一个方面提供了一种媒体流传输装置,用于服务器中,所述装置包括:
35.第一建立模块,用于:响应于用户设备提供的quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;及
36.第二建立模块,用于:响应于用户设备基于所述quic连接传输的rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。
37.本技术实施例的再一个方面提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现如上任一项所述的媒体流传输方法的步骤。
38.本技术实施例的又一个方面提供了一种计算机可读存储介质,所述计算机可读存
储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上任一项所述的媒体流传输方法的步骤。
39.本技术实施例的再一个方面提供了一种媒体流传输系统,包括用户设备和服务器,其中:
40.所述用户设备,被配置为在统一资源标识符携带quic标识的情形下,向所述服务器发起quic连接请求;
41.所述服务器,被配置为响应所述quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;
42.所述用户设备,被配置为响应于所述quic连接成功建立,基于所述quic连接发送rtmp连接请求;
43.所述服务器,被配置为基于所述quic连接接收所述rtmp连接请求,并响应于所述rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。
44.可选地:所述quic标识通过所述统一资源标识符中的uri scheme表示;
45.其中,所述uri scheme包括“rtmp”及位于该“rtmp”后的一个或多个quic标识字符。
46.可选地:所述quic标识为预设字符串,该预设字符串位于所述统一资源标识符的查询字符串参数中。
47.可选地,所述用户设备,还被配置为:响应于所述统一资源标识符未携带所述quic标识,与所述服务器建立基于tcp传输协议的tcp连接,以及建立基于所述tcp连接之上的其它rtmp连接。
48.可选地,所述用户设备,还被配置为:
49.在所述服务器不支持建立所述quic连接或所述目标rtmp连接的情形下,将携带有所述quic标识的统一资源标识符转换为符合预设格式的统一资源标识符;
50.响应于转换后的统一资源标识符,在所述用户设备和所述服务器之间建立连接。
51.本技术实施例提供的媒体流传输方法、装置、设备及计算机可读存储介质,以及媒体流传输系统,可以包括以优点:基于携带quic标识的统一资源标识符,用户设备和服务器之间可以建立quic连接以及基于quic连接之上的rtmp连接,从而将rtmp数据包封装为quic数据包,通过quic连接传输数据,从而提升传输的实时性(尤其在用户设备和服务器先前建立过quic连接的情形下)。
附图说明
52.图1示意性示出了根据本技术实施例一的媒体流传输系统方法的架构图;
53.图2示意性示出了根据本技术实施例一的媒体流传输系统的工作流程图;
54.图3示意性示出了根据本技术实施例一的媒体流传输系统的数据流向图;
55.图4示意性示出了根据本技术实施例一的媒体流传输系统的数据封装;
56.图5示意性示出了根据本技术实施例一的媒体流传输系统的传输协议框架图;
57.图6示意性示出了根据本技术实施例二的媒体流传输方法的流程图;
58.图7示意性示出了根据本技术实施例二的媒体流传输方法的新增步骤流程图;
59.图8示意性示出了根据本技术实施例二的媒体流传输方法的另一新增步骤流程
图;
60.图9示意性示出了根据本技术实施例二的媒体流传输方法的另一新增步骤流程图;
61.图10示意性示出了根据本技术实施例三的媒体流传输方法的流程图;
62.图11示意性示出了根据本技术实施例四的媒体流传输装置的框图;
63.图12示意性示出了根据本技术实施例五的媒体流传输装置的框图;以及
64.图13示意性示出了根据本技术实施例六的适于实现媒体流传输方法的计算机设备的硬件架构示意图。
具体实施方式
65.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限制本技术。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
66.需要说明的是,在本技术实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限制有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本技术所要求的保护范围之内。
67.在本技术的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本技术及区别每一步骤,因此不能理解为对本技术的限制。
68.本发明人了解到,在流媒体播放场景下,利用现有的直播协议如rtmp、hls(http live streaming,基于http的流媒体网络传输协议)、http-flv等,在安全性、低延时(如实时性)、网络连通性、迁移性等方面,都越来越难于满足实际需求。
69.针对上述问题,本技术基于rtmp的基础上提供一个新的网络传输协议。利用这个新的网络传输协议,可以确保高安全性、低延时(如实时性)、网络连通性、迁移性。
70.以下为本技术的名词解释:
71.rtmp(real-time messaging protocol,实时消息协议),是为通过互联网在flash播放器与服务器之间传输流媒体音频、视频和数据而开发的一个开放协议。工作在tcp之上的明文协议,默认使用端口1935。协议中的基本数据单元成为消息(message),传输的过程中消息会被拆分为更小的消息块(chunk)单元。最后将分割后的消息块通过tcp协议传输,接收端再反解接收的消息块恢复成流媒体数据。
72.quic(quic udp internet connections,快速udp互联网连接),最初由google的jim roskind设计,2012年实现并部署,2013年随着实验范围的扩大而公开发布,并向ietf(internet engineering task force,互联网工程任务组)描述。所述quic(下称,quic传输协议),是一种基于udp的低时延的互联网传输层协议,具有很多的优点,比如:减少连接延迟、避免队头阻塞、多路复用等等。
73.协议栈(protocol stack),又称协议堆叠,是计算机网络协议套件的一个具体的
软件实现。
74.统一资源标识符(uri,uniform resource identifier),用于标志某一互联网资源名称的字符串。该种标志允许用户对网络中的资源通过特定的协议进行交互操作。其中,uri包括统一资源定位符(url,uniform resource locator),用于指定网址。
75.图1示意性示出了根据本技术实施例的媒体流传输系统的架构图。
76.服务器2可以通过网络和用户设备(如用户设备4)建立网络连接。
77.服务器2可以向用户设备4提供内容服务。其中,内容服务可以被配置为提供诸如视频,音频,文本数据,其组合等的内容。内容可以包括内容流(如,视频流、音频流、信息流),内容文件(如,视频文件、音频文件、文本文件)和/或其他数据。服务器2也可以接受用户设备4的推流,并将获取的推流数据转发到其他设备。
78.服务器2,可以由单个或多个计算设备组成,例如,机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。所述一个或多个计算机设备可以包括虚拟化计算实例。计算机设备可以基于定义用于仿真的特定软件(例如,操作系统,专用应用程序,服务器)的虚拟映像和/或其他数据来加载虚拟机。随着对不同类型的处理服务的需求改变,可以在所述一个或多个计算机设备上加载和/或终止不同的虚拟机。
79.网络,可以包括各种网络设备,例如路由器、交换机、多路复用器、集线器、调制解调器、网桥、中继器、防火墙、代理设备和/或等等。网络可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,它们的组合和/或类似物。网络可以包括无线链路,例如蜂窝链路,卫星链路,wi-fi链路和/或类似物。
80.用户设备4可以被配置为访问服务器2。其中,用户设备4可以包括任何类型的计算机设备,例如智能手机、平板电脑、智能电视、投影仪、个人电脑等。用户设备4可以内置浏览器或专门程序,通过浏览器或专门程序接收媒体流并向用户输出内容。所述内容可以包括视频流、音频流、信息流、评论或其他数据。当用户设备4为主播端时,亦可以将媒体流提供给服务器2,以使服务器2转发。
81.用户设备4可以包括接口,该接口可以包括输入元件。例如,输入元件可以被配置为接收用户指令,所述用户指令可以使用户设备4执行各类操作,如访问服务器2等。
82.图1中的用户设备、服务器(rtmp服务器)的数量仅是示例性的,并不用于限制本技术。基于图1所示的架构,以下将通过多个实施例来描述的媒体流传输方案。
83.实施例一
84.继续参考图1,本技术实施例提供了一种媒体流传输系统。
85.如图1所示,所述媒体流传输系统可以包括服务器2和用户设备4。
86.所述用户设备4,被配置为在统一资源标识符携带quic标识的情形下,向所述服务器发起quic连接请求;
87.所述服务器2,被配置为响应所述quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;
88.所述用户设备4,被配置为响应于所述quic连接成功建立,基于所述quic连接发送rtmp连接请求;
89.所述服务器2,被配置为基于所述quic连接接收所述rtmp连接请求,并响应于所述
rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。
90.如图2和图3,下面通过一个具体的应用示例来说明上述媒体流传输系统的工作流程:
91.步骤s200,用户设备4获取访问服务器2的rtmp url。
92.用户设备4配置有浏览器或专门程序(播放器、主播客户端程序)。该浏览器或专门程序提供用户界面,供用户输入rtmp url,或响应于用户输入生成rtmp url。
93.例如,rtmp url为rtmpq://live-push.bilivideo.com/live-bvc/?streamname=live123456789。
94.再如,rtmp url为rtmp://live-push.bilivideo.com/live-bvc/?streamname=li ve123456789。
95.上述示例性的rtmp url可以用于指向服务器中编号为“123456789”的数据流。
96.步骤s202,用户设备4将rtmp url发送给dns服务器进行解析,以解析出ip地址。
97.例如,通过dns服务器将域名“live-push.bilivideo.com”解析为“11.22.33.44”。dns解析是一个递归查询的过程,首先在本地域名服务器中查询ip地址,如果没有找到,本地域名服务器会向根域名服务器发送一个请求,如果根域名服务器也不存储该域名,本地域名会向com顶级域名服务器发送一个请求,依次类推下去,直到最后本地域名服务器得到ip地址并把它缓存到本地,供下次查询使用。
98.步骤s204,在rtmp url携带quic标识的情形下,用户设备4向服务器2发起quic连接请求,以在用户设备4和服务器2之间建立quic传输协议的quic连接。
99.该quic连接请求的ip地址“11.22.33.44”,端口号为“1935”。
100.其中,“1935”为rtmp协议的默认端口号。若先前有协商其他端口号,则依商定。
101.此处参考图3,若用户设备4和服务器2为首次建立quic连接,建立过程可以如下:
102.步骤一:用户设备4生成quic chlo(inchoate client hello)消息,并将该quic chlo消息发送给服务器2。
103.步骤二:服务器2响应于chlo消息,返回shlo(server hello)消息和tls握手消息。
104.该tls握手消息又可以称之为tlshandshake消息。
105.步骤三:用户设备4响应于上述shlo消息和上述tls握手消息,返回另一tls握手消息。
106.经过上述步骤一至步骤三,quic连接被快速地建立,有效降低网络时延。
107.基于quic传输协议的相关规范,在用户设备4和服务器2非首次建立quic连接的情形下,可以以0-rtt(往返时延,round-trip time)再次建立quic连接。
108.继续参考图2、3,在quic连接成功建立的情形下,执行步骤s206。
109.步骤s206,用户设备4基于所述quic连接发送第一rtmp握手消息(rtmp c0c1数据包)。
110.具体的,将第一rtmp握手消息封装为第一quic数据包,发送该第一quic数据包至服务器2。
111.步骤s208,服务器2响应于第一rtmp握手消息,基于所述quic连接返回第二rtmp握手消息(rtmp s0s1s3数据包)。
112.具体的,将第二rtmp握手消息封装为第二quic数据包,发送该第二quic数据包至
用户设备4。
113.若用户设备4接收到第二rtmp握手消息,则说明基于所述quic连接的目标rtmp连接成功建立。
114.继续参考图2、3,在基于所述quic连接的目标rtmp连接成功建立的情形下,用户设备4和服务器2之间可以传输媒体流,示例性,将参见步骤s210至步骤s214。
115.步骤s210,用户设备4通过上述基于quic连接的目标rtmp连接发送rtmp play命令给服务器2。
116.rtmp play命令,即rtmp播放命令,用于指示服务器2提供媒体流。
117.步骤s212,响应于rtmp play命令,服务器2通过上述基于quic连接的目标rtmp连接提供媒体流。
118.步骤s214,用户设备4接收媒体流,并解析成rtmp数据块(chunkdata),并执行播放。
119.如图4所示,在步骤s212中,服务器2的发送流程如下:
120.(1)服务器2封装rtmp数据包(可以包括信令、媒体数据等);
121.(2)服务器2将rtmp数据包封装为quic数据包,通过所述quic连接发送该quic数据包。
122.在步骤s214中,用户设备4的接收流程如下:
123.(1)用户设备4通过所述quic连接从服务器2接收quic数据包;
124.(2)用户设备4将所述quic数据包解析出rtmp数据包,最后解析出rtmp数据进行播放。
125.需说明,在开放式系统互联通信参考模型(open system interconnection reference model,osi)的基础上,quic层位于udp层之上,更低协议层的封装在此不赘述。
126.上面仅介绍了用户设备4从服务器2拉取媒体流。需要说明的是,所述目标rtmp连接亦可以用于用户设备4向服务器2提供媒体流,以及cdn系统的回源链路等。
127.上述介绍的媒体流传输系统,可以基于携带quic标识的统一资源标识符,可以建立quic连接以及基于quic连接之上的目标rtmp连接,从而将rt mp数据包封装为quic数据包,通过quic连接传输数据。在本实施例中,可以降低用户设备首次访问rtmp服务器时的网络时延,从而提升传输的实时性(尤其在用户设备和服务器先前建立过quic连接的情形下)。而且,由于rtmp数据流通过基于quic连接之上的目标rtmp连接传输,还兼具quic连接的安全性、网络连通性、基于quic-connectionid的无缝迁移,有效满足用户高需求。
128.以下提供几个可选的实施例。
129.作为可选的实施例,为了便于输入和识别:
130.所述quic标识通过所述统一资源标识符中的uri scheme表示;
131.其中,所述uri scheme包括“rtmp”及位于该“rtmp”后的一个或多个quic标识字符。
132.示例性的,将“rtmpq”作为uri scheme的同时,作为quic标识。
133.以“rtmpq://live-push.bilivideo.com/live-bvc/?streamname=live123456789”为例,当用户设备4解析上述uri,且解析出的uri scheme为“rtmpq”,则说明携带quic标识。需要说明的是,uri scheme不限于“rtmpq”,也可以是“rtmpquic”等。
134.作为可选的实施例:
135.所述quic标识为预设字符串,该预设字符串位于所述统一资源标识符的查询字符串参数中。
136.举例而言,如果用户设备4被提供以下格式的uri:rtmp://hostname[:port]/path/[;parameters][?query]#fragment,且query中被设置有“isquic”等用于表示支持quic传输协议的预设字符串,则说明该uri携带quic标识。
[0137]
作为可选的实施例,为确保媒体流的传输,所述用户设备4还被配置为:
[0138]
响应于所述统一资源标识符未携带所述quic标识,与所述服务器建立基于tcp传输协议的tcp连接,以及建立基于所述tcp连接之上的其它rtmp连接。
[0139]
如图5,在rtmp协议系列中,除本实施例提出的基于quic协议的rtmp协议(下称rtmpq协议)之外,还有其他变种协议,如rtmpe协议、rtmps协议、rtmpt协议。
[0140]
若所述统一资源标识符未携带所述quic标识,则建立基于tcp连接之上的相应rtmp连接。
[0141]
举例而言,若uri为“rtmpe://live-push.bilivideo.com/live-bvc/?streamname=live123456789”,则在用户设备4和服务器2之间建立基于rtmpe协议的rtmp连接。
[0142]
作为可选的实施例,为确保媒体流的传输,所述用户设备4还被配置为:
[0143]
在所述服务器不支持建立所述quic连接或所述目标rtmp连接的情形下,将携带有所述quic标识的统一资源标识符转换为符合预设格式的统一资源标识符;
[0144]
响应于转换后的统一资源标识符,在所述用户设备和所述服务器之间建立连接。
[0145]
以下列举判断“服务器2不支持建立所述quic连接或所述目标rtmp连接”的例子:
[0146]
(1)用户设备4向服务器2发送quic请求;
[0147]
(2)响应于所述quic请求,服务器2在支持quic传输协议的情况下,会反馈携带quic参数的响应头部或altsvc帧。altsvc中定义有多个版本的quic参数,用于向用户设备4提供quic传输协议的版本协商提示,例如版本列表,所述版本列表中包括服务器2支持的quic传输协议的一个或多个协议版本。服务器2在不支持quic传输协议的情况下,可能不会做出响应或返回特定消息。
[0148]
(3)用户设备4基于服务器2的响应,确定用户设备4和服务器2是否能够建立quic连接。
[0149]
例如,用户设备4和服务器2是否还有共同支持的quic版本,若无则不能够建立quic连接。再如,若服务器2无响应或响应特定消息,则不能够建立quic连接。
[0150]
在用户设备4和服务器2之间已经建立quic连接的情况下,用户设备4通过quic连接发送rtmp c0c1数据包,若服务器2未能通过quic连接返回“rtmp s0s1s3数据包”,则说明用户设备4和服务器2之间不能够建立qui c连接。
[0151]
用户设备4中可以配置黑名单,该黑名单用于记录可以建立基于quic传输协议的rtmp连接的服务器域名,从而方便用户设备4判断是否发起此种连接的请求。
[0152]
其中,响应于转换后的统一资源标识符,在所述用户设备和所述服务器之间建立连接。示例如下:若uri为rtmpq://127.0.0.1/bvc-live/mystream,则将“rtmpq://127.0.0.1/bvc-live/mystream”转换为“rtmp://127.0.0.1/bvc-live/mystream”,通过“rtmp://127.0.0.1/bvc-live/mystream”与服务器2建立rtmp连接。当然,也可以依据预设
规则将将“rtmpq://127.0.0.1/bvc-live/mystream”转换为“rtmps://127.0.0.1/bvc-live/mystream”,通过“rtmps://127.0.0.1/bvc-live/mystream”与服务器2建立rtmps连接。所述预设规则,根据服务器4支持的各种rtmp连接和应用场景,来确定转换的uri。所述应用场景,可以为直播、通话、播放以及网页、原生客户端、小程序等各类场景。
[0153]
为了确保基于quic协议的rtmp连接,本实施例在软件层面配置如下:
[0154]
(1)用户设备4配置有:quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
[0155]
所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
[0156]
所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待播放的rtmp数据。
[0157]
所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
[0158]
所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
[0159]
(2)服务器2配置有:quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
[0160]
所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
[0161]
所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
[0162]
所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
[0163]
所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待推送的rtmp数据。
[0164]
实施例二
[0165]
本实施例提供的媒体流传输方法可以用于用户设备4中,具体技术细节可参考上文。
[0166]
图6示意性示出了根据本技术实施例二的媒体流传输方法的流程图。
[0167]
如图6所示,该媒体流传输方法可以包括步骤s600~s604,其中:
[0168]
步骤s600,获取用于访问rtmp服务器(服务器2)的统一资源标识符;
[0169]
步骤s602,确定所述统一资源标识符是否携带有quic标识;及
[0170]
步骤s604,响应于所述统一资源标识符携带有所述quic标识,与所述rtmp服务器建立基于quic传输协议的quic连接,以及建立基于所述quic连接之上的目标rtmp连接。
[0171]
本实施例提供的媒体流传输方法,包括以下优点:
[0172]
基于携带quic标识的统一资源标识符,可以建立quic连接以及基于quic连接之上的目录rtmp连接,从而将rtmp数据包封装为quic数据包,通过quic连接传输数据。在本实施例中,可以避免用户设备首次访问rtmp服务器时的网络时延,从而提升传输的实时性(尤其在用户设备和服务器先前建立过quic连接的情形下)。而且,由于rtmp数据流通过基于quic
连接之上的目标rtmp连接传输,还兼具quic连接的安全性、网络连通性、迁移性,有效满足用户高需求。
[0173]
作为可选的实施例:
[0174]
所述quic标识通过所述统一资源标识符中的uri scheme表示;
[0175]
其中,所述uri scheme包括“rtmp”及位于该“rtmp”后的一个或多个quic标识字符。
[0176]
作为可选的实施例:
[0177]
所述quic标识为预设字符串,该预设字符串位于所述统一资源标识符的查询字符串参数中。
[0178]
作为可选的实施例,如图7所示,所述方法还包括:
[0179]
步骤s700,响应于所述统一资源标识符未携带所述quic标识,与所述rtmp服务器建立基于tcp传输协议的tcp连接,以及建立基于所述tcp连接之上的其它rtmp连接。
[0180]
作为可选的实施例,如图8所示,所述方法还包括:
[0181]
步骤s800,在所述rtmp服务器不支持建立所述quic连接或所述目标rtmp连接的情形下,将携带有所述quic标识的统一资源标识符转换为符合预设格式的统一资源标识符;
[0182]
步骤s802,响应于转换后的统一资源标识符,在所述用户设备和所述rtmp服务器之间建立连接。
[0183]
作为可选的实施例,如图9所示,所述方法还包括:
[0184]
步骤s900,预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
[0185]
所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
[0186]
所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待播放的rtmp数据。
[0187]
作为可选的实施例:
[0188]
所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
[0189]
所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
[0190]
实施例三
[0191]
本实施例提供的媒体流传输方法可以用于服务器2中,具体技术细节可参考上文。
[0192]
图10示意性示出了根据本技术实施例三的媒体流传输方法的流程图。
[0193]
该媒体流传输方法可以包括步骤s1000~s1002,其中:
[0194]
步骤s1000,响应于用户设备提供的quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;及
[0195]
步骤s1002,响应于用户设备基于所述quic连接传输的rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。
[0196]
本实施例提供的媒体流传输方法,包括以下优点:通过建立quic连接以及基于quic连接之上的目标rtmp连接,从而将rtmp数据包封装为quic数据包,通过quic连接传输
数据。在本实施例中,可以避免用户设备首次访问rtmp服务器时的网络时延,从而提升传输的实时性(尤其在用户设备和服务器先前建立过quic连接的情形下)。而且,由于rtmp数据流通过基于quic连接之上的目标rtmp连接传输,还兼具quic连接的安全性、网络连通性、迁移性,有效满足用户高需求。
[0197]
作为可选的实施例,所述方法还包括:
[0198]
预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
[0199]
所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
[0200]
所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
[0201]
作为可选的实施例:
[0202]
所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
[0203]
所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待推送的rtmp数据。
[0204]
实施例四
[0205]
图11示意性示出了根据本技术实施例四的媒体流传输装置的框图,该媒体流传输装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本技术实施例。本技术实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
[0206]
如图11所示,该媒体流传输装置1100可以包括获取模块1110、确定模块1120和连接模块1130,其中:
[0207]
获取模块1110,用于获取用于访问rtmp服务器的统一资源标识符;
[0208]
确定模块1120,用于确定所述统一资源标识符是否携带有quic标识;及
[0209]
连接模块1130,用于响应于所述统一资源标识符携带有所述quic标识,与所述rtmp服务器建立基于quic传输协议的quic连接,以及建立基于所述quic连接之上的目标rtmp连接。
[0210]
作为可选的实施例:
[0211]
所述quic标识通过所述统一资源标识符中的uri scheme表示;
[0212]
其中,所述uri scheme包括“rtmp”及位于该“rtmp”后的一个或多个quic标识字符。
[0213]
作为可选的实施例:
[0214]
所述quic标识为预设字符串,该预设字符串位于所述统一资源标识符的查询字符串参数中。
[0215]
作为可选的实施例,所述连接模块1130,还用于:
[0216]
响应于所述统一资源标识符未携带所述quic标识,与所述rtmp服务器建立基于tcp传输协议的tcp连接,以及建立基于所述tcp连接之上的其它rtmp连接。
[0217]
作为可选的实施例,所述连接模块1130,还用于:
[0218]
在所述rtmp服务器不支持建立所述quic连接或所述目标rtmp连接的情形下,将携带有所述quic标识的统一资源标识符转换为符合预设格式的统一资源标识符;
[0219]
响应于转换后的统一资源标识符,在所述用户设备和所述rtmp服务器之间建立连接。
[0220]
作为可选的实施例,所述装置还可以包括配置模块(未标识),用于:
[0221]
预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
[0222]
所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
[0223]
所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待播放的rtmp数据。
[0224]
作为可选的实施例:
[0225]
所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
[0226]
所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
[0227]
实施例五
[0228]
图12示意性示出了根据本技术实施例五的媒体流传输装置的框图,该媒体流传输装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本技术实施例。本技术实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
[0229]
如图12所示,该媒体流传输装置1200可以包括第一建立模块1210和第二建立模块1220,其中:
[0230]
第一建立模块1210,用于:响应于用户设备提供的quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;及
[0231]
第二建立模块1220,用于:响应于用户设备基于所述quic连接传输的rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。
[0232]
作为可选的实施例,所述装置还可以包括配置模块(未标识),用于:
[0233]
预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:
[0234]
所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;
[0235]
所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。
[0236]
作为可选的实施例:
[0237]
所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;
[0238]
所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待推送的rtmp数据。
[0239]
实施例六
[0240]
图13示意性示出了根据本技术实施例六的适于实现媒体流传输方法的计算机设备的硬件架构示意图。计算机设备10000可以作为服务器2或其组成部分,也可以作为用户设备4或其组成部分。本实施例中,计算机设备10000是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备,例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等,或是智能手机、平板电脑、笔记本电脑等电子装置等。如图13所示,计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
[0241]
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如媒体流传输方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0242]
处理器10020在一些实施例中可以是中央处理器(central processing unit,简称为cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
[0243]
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信链接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(intranet)、互联网(internet)、全球移动通讯系统(global system of mobile communication,简称为gsm)、宽带码分多址(wideband code division multiple access,简称为wcdma)、4g网络、5g网络、蓝牙(bluetooth)、wi-fi等无线或有线网络。
[0244]
需要指出的是,图13仅示出了具有部件10010-10030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
[0245]
在本实施例中,存储于存储器10010中的媒体流传输方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本技术。
[0246]
实施例七
[0247]
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例二、三中的媒体流传输方法的步骤。
[0248]
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,简称为smc),安全数字(secure digital,简称为sd)卡,闪存卡(flash card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例二、三中的媒体流传输方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0249]
显然,本领域的技术人员应该明白,上述的本技术实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术实施例不限制于任何特定的硬件和软件结合。
[0250]
以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
技术特征:
1.一种媒体流传输方法,其特征在于,用于用户设备中,所述方法包括:获取用于访问rtmp服务器的统一资源标识符;确定所述统一资源标识符是否携带有quic标识;及响应于所述统一资源标识符携带有所述quic标识,与所述rtmp服务器建立基于quic传输协议的quic连接,以及建立基于所述quic连接之上的目标rtmp连接。2.根据权利要求1所述的媒体流传输方法,其特征在于:所述quic标识通过所述统一资源标识符中的uri scheme表示;其中,所述uri scheme包括“rtmp”及位于该“rtmp”后的一个或多个quic标识字符。3.根据权利要求1所述的媒体流传输方法,其特征在于:所述quic标识为预设字符串,该预设字符串位于所述统一资源标识符的查询字符串参数中。4.根据权利要求1所述的媒体流传输方法,其特征在于,还包括:响应于所述统一资源标识符未携带所述quic标识,与所述rtmp服务器建立基于tcp传输协议的tcp连接,以及建立基于所述tcp连接之上的其它rtmp连接。5.根据权利要求1所述的媒体流传输方法,其特征在于,还包括:在所述rtmp服务器不支持建立所述quic连接或所述目标rtmp连接的情形下,将携带有所述quic标识的统一资源标识符转换为符合预设格式的统一资源标识符;响应于转换后的统一资源标识符,在所述用户设备和所述rtmp服务器之间建立连接。6.根据权利要求1至5任意一项所述的媒体流传输方法,其特征在于,还包括:预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待播放的rtmp数据。7.根据权利要求6所述的媒体流传输方法,其特征在于:所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。8.一种媒体流传输装置,其特征在于,用于用户设备中,所述装置包括:获取模块,用于获取用于访问rtmp服务器的统一资源标识符;确定模块,用于确定所述统一资源标识符是否携带有quic标识;及连接模块,用于响应于所述统一资源标识符携带有所述quic标识,与所述rtmp服务器建立基于quic传输协议的quic连接,以及建立基于所述quic连接之上的目标rtmp连接。9.一种媒体流传输方法,其特征在于,用于服务器中,所述方法包括:响应于用户设备提供的quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;及响应于用户设备基于所述quic连接传输的rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。
10.根据权利要求9所述的媒体流传输方法,其特征在于,还包括:预先配置quic协议栈,以及基于所述quic协议栈之上的rtmpq协议栈,其中:所述rtmpq协议栈还用于:将待发送的rtmp数据封装为rtmp数据包,将该封装的rtmp数据包提供给所述quic协议栈;所述quic协议栈还用于:将所述rtmpq协议栈提供的rtmp数据包封装为待发送的quic数据包。11.根据权利要求10所述的媒体流传输方法,其特征在于:所述quic协议栈用于:从接收到的quic数据包中解析出rtmp数据包,并将解析出的rtmp数据包提供给所述rtmpq协议栈;所述rtmpq协议栈用于:解析所述quic协议栈提供的rtmp数据包,以得到待推送的rtmp数据。12.一种媒体流传输装置,其特征在于,用于服务器中,所述装置包括:第一建立模块,用于:响应于用户设备提供的quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;及第二建立模块,用于:响应于用户设备基于所述quic连接传输的rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。13.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于实现权利要求1至7或9至11任一项所述的媒体流传输方法的步骤。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至7或9至11中任一项所述的媒体流传输方法的步骤。15.一种媒体流传输系统,其特征在于,包括用户设备和服务器,其中:所述用户设备,被配置为在统一资源标识符携带quic标识的情形下,向所述服务器发起quic连接请求;所述服务器,被配置为响应所述quic连接请求,和所述用户设备建立基于quic传输协议的quic连接;所述用户设备,被配置为响应于所述quic连接成功建立,基于所述quic连接发送rtmp连接请求;所述服务器,被配置为基于所述quic连接接收所述rtmp连接请求,并响应于所述rtmp连接请求,和所述用户设备建立基于所述quic连接之上的目标rtmp连接。16.根据权利要求15所述的媒体流传输系统,其特征在于:所述quic标识通过所述统一资源标识符中的uri scheme表示;其中,所述uri scheme包括“rtmp”及位于该“rtmp”后的一个或多个quic标识字符。17.根据权利要求15所述的媒体流传输系统,其特征在于:所述quic标识为预设字符串,该预设字符串位于所述统一资源标识符的查询字符串参数中。18.根据权利要求15所述的媒体流传输系统,其特征在于,所述用户设备,还被配置为:响应于所述统一资源标识符未携带所述quic标识,与所述服务器建立基于tcp传输协议的
tcp连接,以及建立基于所述tcp连接之上的其它rtmp连接。19.根据权利要求15所述的媒体流传输系统,其特征在于,所述用户设备,还被配置为:在所述服务器不支持建立所述quic连接或所述目标rtmp连接的情形下,将携带有所述quic标识的统一资源标识符转换为符合预设格式的统一资源标识符;响应于转换后的统一资源标识符,在所述用户设备和所述服务器之间建立连接。
技术总结
本申请提供了一种媒体流传输方法,用于用户设备中,所述方法包括:获取用于访问RTMP服务器的统一资源标识符;确定所述统一资源标识符是否携带有QUIC标识;及响应于所述统一资源标识符携带有所述QUIC标识,与所述RTMP服务器建立基于QUIC传输协议的QUIC连接,以及建立基于所述QUIC连接之上的目标RTMP连接。在本申请中,基于携带QUIC标识的统一资源标识符,建立QUIC连接以及基于QUIC连接之上的目标RTMP连接,从而将RTMP数据包封装为QUIC数据包,通过QUIC连接传输数据,从而提升传输的实时性。从而提升传输的实时性。从而提升传输的实时性。
技术研发人员:王盛
受保护的技术使用者:上海哔哩哔哩科技有限公司
技术研发日:2021.12.06
技术公布日:2022/3/8