CN116319701A - 用于音视频的流传输方法及装置、电子设备和介质 - Google Patents

用于音视频的流传输方法及装置、电子设备和介质 Download PDF

Info

Publication number
CN116319701A
CN116319701A CN202211658786.7A CN202211658786A CN116319701A CN 116319701 A CN116319701 A CN 116319701A CN 202211658786 A CN202211658786 A CN 202211658786A CN 116319701 A CN116319701 A CN 116319701A
Authority
CN
China
Prior art keywords
streaming
target live
target
live broadcast
audio
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211658786.7A
Other languages
English (en)
Inventor
李凯
张捷
唐皓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202211658786.7A priority Critical patent/CN116319701A/zh
Publication of CN116319701A publication Critical patent/CN116319701A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开提供了一种用于音视频的流传输方法,应用于流传输发送设备,该方法包括:获取初始网络状态信息,并配置目标直播协议报头信息单元,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量;基于初始网络状态信息,从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型;至少基于目标帧封装类型,将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及向流传输接收设备传送目标直播协议报头信息单元,并向流传输接收设备流传输一个或多个第一目标直播协议媒体信息单元。

Description

用于音视频的流传输方法及装置、电子设备和介质
技术领域
本公开涉及互联网技术领域,具体涉及一种用于音视频的流传输方法及装置、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
随着互联网技术的不断发展及流媒体技术的进步,网络直播越来越受到用户的关注。目前,主流的流媒体协议包括RTMP(Real Time Messaging Protocol,实时消息传输协议)和HLS(HTTP Live Streaming,HTTP实况流传输)。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
本公开提供了一种用于音视频的流传输方法及装置、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一方面,提供一种用于音视频的流传输方法,应用于流传输发送设备,该方法包括:获取初始网络状态信息,并配置目标直播协议报头信息单元,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量;基于初始网络状态信息,从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型;至少基于目标帧封装类型,将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及向流传输接收设备传送目标直播协议报头信息单元,并向流传输接收设备流传输一个或多个第一目标直播协议媒体信息单元。
根据本公开的另一方面,还提供一种用于音视频的流传输方法,应用于流传输接收设备,该方法包括:提供初始网络状态信息,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量,初始网络状态信息用于流传输发送设备从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型,并至少基于目标帧封装类型来将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及接收由流传输发送设备传送的目标直播协议报头信息单元和由流传输发送设备流传输的一个或多个第一目标直播协议媒体信息单元。
根据本公开的另一方面,还提供一种用于音视频的流传输装置,该装置包括:初始化模块,用于获取初始网络状态信息,并配置目标直播协议报头信息单元,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量;帧封装选择模块,用于基于初始网络状态信息,从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型;帧封装执行模块,用于至少基于目标帧封装类型,将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及传输模块,用于向流传输接收设备传送目标直播协议报头信息单元,并向流传输接收设备流传输一个或多个第一目标直播协议媒体信息单元。
根据本公开的另一方面,还提供一种用于音视频的流传输装置,该装置包括:
监视模块,用于提供初始网络状态信息,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量,初始网络状态信息用于流传输发送设备从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型,并至少基于目标帧封装类型来将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及接收模块,用于接收由流传输发送设备传送的目标直播协议报头信息单元和由流传输发送设备流传输的一个或多个第一目标直播协议媒体信息单元。
根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与该至少一个处理器通信连接的至少一个存储器,其中,该至少一个存储器存储有计算机程序,该计算机程序在被至少一个处理器执行时实现上述用于音视频的流传输方法。
根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,该计算机程序在被处理器执行时实现上述用于音视频的流传输方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,该计算机程序在被处理器执行时实现上述用于音视频的流传输方法。
根据本公开的一个或多个实施例,可以允许以不足一帧的方式进行音视频数据的封装,服务器端因而可以根据实时网络状况选择音视频数据的帧封装类型,当网络状况欠佳时,可将完整的一帧音视频切割成部分音视频帧进行封装并进行流传输,从而可以有效降低启动延迟。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1示出了根据本公开的实施例的可以在其中实施本文描述的各种方法的示例性系统的示意图;
图2示出了根据本公开的实施例的用于音视频的流传输方法的流程图;
图3示出了根据本公开的实施例的目标直播协议的示意性框图;
图4示出了根据本公开的实施例的多级服务器架构的示意性框图;
图5示出了根据本公开的实施例的流媒体发送设备与流媒体接收设备之间的示意性信令图;
图6示出了根据本公开的实施例的用于流传输第二目标直播协议媒体信息单元的方法的流程图;
图7示出了根据本公开的实施例的流媒体发送设备与流媒体接收设备之间的示意性信令图;
图8示出了根据本公开的实施例的用于音视频的流传输方法的流程图;
图9示出了根据本公开的实施例的用于音视频的流传输装置的结构框图;
图10示出了根据本公开的实施例的用于音视频的流传输装置的结构框图;并且
图11示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
随着互联网技术的不断发展及流媒体技术的进步,网络直播越来越受到用户的关注。目前,主流的流媒体协议包括RTMP(Real Time Messaging Protocol,实时消息传输协议)和HLS(HTTP Live Streaming,HTTP实况流传输)。然而,这两种主流的流媒体协议但都存在着不同问题。一方面,由于长久没有维护,RTMP标准不再更新,其兼容性较差且已不足以满足当前网络直播需求,无法满足对现有及未来的多种编码器的支持。另一方面,由于HLS是基于HTTP的短链接,会导致QPS(Queries-per-second,每秒查询率)非常高,从而消耗较多的算力,同时HLS要求三个媒体分片才能起播,所以启动延迟也比较高。因此,亟需一种具有低启动延迟且兼容性良好的流媒体直播协议,以满足用户对提升直播播放体验的需求。
有鉴于此,本公开的实施例提供了一种用于音视频的流传输方法,该方法可以应用于流传输发送设备。该方法基于所获取的初始网络状态信息来从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型,并按照目标帧封装类型来将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,以便流传输至流传输接收设备。该方法可以允许以不足一帧的方式进行音视频数据的封装,服务器端因而可以根据实时网络状况选择音视频数据的帧封装类型,当网络状况欠佳时,可将完整的一帧音视频切割成部分音视频帧进行封装并进行流传输,从而可以有效降低客户端处的启动延迟,有利于提升直播播放体验。
在具体描述本公开的实施例前,首先对下列术语进行解释。
直播流:直播流可以指直播场景下的音视频数据的传输,其能够作为一个稳定、连续的流媒体通过网络传输给观众观看。
直播拉流:直播拉流可以指通过直播云平台到用户指定的源站拉取直播流的过程。
回源拉流:回源拉流可以指用户发起请求到CDN(Content Delivery Network,内容分发网),当CDN没有所需内容时,需要向内容提供者发起请求,拉取直播内容的过程。
CDN:CDN是指内容分发网络,如上面所描述。
CDN服务商:CDN服务商可以指提供和/或维护内容分发网络的服务商。
直播源站:直播源站可以指用于CDN回源拉流并返回直播内容的站点。
HLS:HLS是指苹果公司对外提出的一种流媒体协议,可用于直播和点播。
RTMP:RTMP是指Adobe公司提出的一种流媒体协议,常用于直播。
P2P:P2P可以指一种通常出于网络加速和带宽节省的目的在用户之间使用的内容分享技术。
QPS:QPS可以指每秒查询率或每秒请求次数,一般用于表示用户对服务器的访问频率。
HTTP:HTTP是指超文本传输协议,一般用于浏览器访问。
RTT:RTT(round-trip time,往返时延)是指网络请求从起点到目的地然后再回到起点所花费的时长,通常可以不包括接收端的处理时间。
TCP:TCP(Transmission Control Protocol,传输控制协议)是互联网底层传输协议,是当前互联网传输基石,也是计算机编程常用的传输协议,一般在操作系统中实现,普通开发者可以直接调用。
CHUNK:CHUNK(分块)是指多个帧组成的一个容器单位,在现有fMP4协议下,该单位是播放器进行解封装的最小单位。
FRAGMENT:FRAGMENT(分片文件)是由多个CHUNK组成的一个音视频片段,通常对应一个文件,该单位是HLS传输中的最小音视频单位。
在本公开中,术语目标直播协议、音视频传输协议、流媒体协议、直播协议等可以可互换地使用。
下面将结合附图详细描述本公开的实施例。
图1示出了根据本公开的实施例可以将本文描述的各种方法和装置在其中实施的示例性系统100的示意图。参考图1,系统100包括一个或多个客户端设备101、102、103、104、105和106、服务器120以及将一个或多个客户端设备耦接到服务器120的一个或多个通信网络110。客户端设备101、102、103、104、105和106可以被配置为执行一个或多个应用程序。应当理解,尽管图1仅描绘了六种客户端设备,但是本公开可以支持任何数量的客户端设备。
在图1所示的系统中,服务器120可以包括一个或多个组件,以实现其执行的一个或多个操作,例如,在本公开的实施例中,该一个或多个操作可以包括上述用于音视频的流传输方法的一个或多个步骤。这些组件可以包括可由一个或多个处理器执行的软件组件、硬件组件或其组合。操作客户端设备101、102、103、104、105和/或106的用户可以依次利用一个或多个客户端应用程序来与服务器120进行交互以利用这些组件提供的服务。应当理解,各种不同的系统配置是可能的,其可以与系统100不同。因此,图1是用于实施本文所描述的各种方法的系统的一个示例,并且不旨在进行限制。
用户可以使用客户端设备101、102、103、104、105和/或106来发起与服务器120的通信。客户端设备可以提供使客户端设备的用户能够与客户端设备进行交互的接口。客户端设备还可以经由该接口向用户输出信息。
客户端设备101、102、103、104、105和/或106可以包括各种类型的计算机设备,例如便携式手持设备、通用计算机(诸如个人计算机和膝上型计算机)、工作站计算机、可穿戴设备、智能屏设备、自助服务终端设备、服务机器人、游戏系统、瘦客户端、各种消息收发设备、传感器或其他感测设备等。这些计算机设备可以运行各种类型和版本的软件应用程序和操作系统,例如MICROSOFT Windows、APPLE iOS、类UNIX操作系统、Linux或类Linux操作系统(例如GOOGLE Chrome OS);或包括各种移动操作系统,例如MICROSOFT WindowsMobile OS、iOS、Windows Phone、Android。便携式手持设备可以包括蜂窝电话、智能电话、平板电脑、个人数字助理(PDA)等。可穿戴设备可以包括头戴式显示器(诸如智能眼镜)和其他设备。游戏系统可以包括各种手持式游戏设备、支持互联网的游戏设备等。客户端设备能够执行各种不同的应用程序,例如各种与Internet相关的应用程序、通信应用程序(例如电子邮件应用程序)、短消息服务(SMS)应用程序,并且可以使用各种通信协议。
网络110可以是本领域技术人员熟知的任何类型的网络,其可以使用多种可用协议中的任何一种(包括但不限于TCP/IP、SNA、IPX等)来支持数据通信。仅作为示例,网络110可以是局域网(LAN)、以太网、广域网(WAN)、因特网、虚拟网络、虚拟专用网络(VPN)、内部网、外部网、红外网络、无线网络(例如蓝牙、WIFI)和/或这些和/或其他网络的任意组合。
服务器120可以包括一个或多个通用计算机、专用计算机(例如PC(个人计算机)服务器、UNIX服务器、中端服务器)、刀片式服务器、大型计算机、服务器群集或任何其他适当的布置和/或组合。服务器120可以包括运行虚拟操作系统的一个或多个虚拟机,或者涉及虚拟化的其他计算架构(例如可以被虚拟化以维护服务器的虚拟存储设备的逻辑存储设备的一个或多个灵活池)。在各种实施例中,服务器120可以运行提供下文所描述的功能的一个或多个服务或软件应用。
服务器120中的计算单元可以运行包括上述任何操作系统以及任何商业上可用的服务器操作系统的一个或多个操作系统。服务器120还可以运行各种附加服务器应用程序和/或中间层应用程序中的任何一个,包括HTTP服务器、FTP服务器、CGI服务器、JAVA服务器、数据库服务器等。
在一些实施方式中,服务器120可以包括一个或多个应用程序,以分析和合并从客户端设备101、102、103、104、105和/或106的用户接收的数据。服务器120还可以包括一个或多个应用程序,以经由客户端设备101、102、103、104、105和/或106的一个或多个显示设备来显示数据。
在一些实施方式中,服务器120可以为分布式系统的服务器,或者是结合了区块链的服务器。服务器120也可以是云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
系统100还可以包括一个或多个数据库130。在某些实施例中,这些数据库可以用于存储数据和其他信息。例如,数据库130中的一个或多个可用于存储诸如表示多个帧封装类型的数据结构。数据库130可以驻留在各种位置。例如,由服务器120使用的数据库可以在服务器120本地,或者可以远离服务器120且经由网络进行访问。数据库130可以是不同的类型。在某些实施例中,由服务器120使用的数据库例如可以是关系数据库。这些数据库中的一个或多个可以响应于命令而存储、更新和检索到数据库以及来自数据库的数据。
在某些实施例中,数据库130中的一个或多个还可以由应用程序使用来存储应用程序数据。由应用程序使用的数据库可以是不同类型的数据库,例如键值存储库,对象存储库或由文件系统支持的常规存储库。
图1的系统100可以以各种方式配置和操作,以使得能够应用根据本公开所描述的各种方法和装置。
图2示出了根据本公开的实施例的用于音视频的流传输方法200的流程图。根据本公开的一些实施例,方法200可以应用于流传输发送设备。如本文中所使用的,术语流传输发送设备是指将流媒体内容(其可以通过如上所述的直播拉流或回源拉流等方式获得)流传输至下游(例如,相对于流传输发送设备所对应的父级服务器而言的二级服务器、末级服务器,诸如客户端等流传输接收设备等)的实体。与之对应的,术语流传输接收设备是指从上游(例如,流传输发送设备)接收经流传输的流媒体内容的实体,所接收的经流传输的流媒体内容可以在末级服务器处被解码或在流传输接收设备处被解码,本公开对此不进行任何限制。
如图2所示,方法200可以包括:步骤S210、获取初始网络状态信息,并配置目标直播协议报头信息单元,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量;步骤S220、基于初始网络状态信息,从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型;步骤S230、至少基于目标帧封装类型,将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及步骤S240、向流传输接收设备传送目标直播协议报头信息单元,并向流传输接收设备流传输一个或多个第一目标直播协议媒体信息单元。
根据一些示例,初始网络状态信息可以由流传输传送设备从流传输接收设备处获取。根据另一些示例,初始网络状态信息也可以由流传输传送设备从除流传输接收设备以外的第三方(例如,网络运营商、传输音视频的传输网络的维护方等)获取。
根据一些示例,初始网络性能的度量可以包括诸如带宽、时延、带宽时延积、吞吐量、丢包率等用于表征流传输的初始化期间(例如,跨初始化过程的时间段、或初始化期间的某个(些)时刻等)的网络性能的指标。
根据一些示例,可将初始网络状态信息(例如,初始网络性能的度量)与相适配的目标帧封装类型之间的映射关系存储于数据库中。在流传输发送设备例如为参考图1所描述的服务器120的情形中,该数据库可以是如上所述的数据库130。在示例中,数据库可采取Redis(Remote Dictionary Server,远程字典服务器)数据库的形式。Redis是基于Key-Value的数据库。在该示例中,Key可以表示初始网络状态信息(例如,初始网络性能的度量),而Value可以表示与该初始网络状态信息(例如,初始网络性能的度量)相适配的目标帧封装类型。在基于该数据库来存储映射关系的情况下,由于数据存储在内存中,可以获得较高的读写速度。此外,Redis数据库还支持数据持久化和数据类型多样化,从而便于对所存储的初始网络状态信息与目标帧封装类型之间的映射关系进行备份并且满足由于网络状态发生改变而检索与经更新的网络状态信息(例如,当前网络性能的度量)相适配的另一目标帧封装类型的需要,这将在下文进行描述。当然,本公开对数据库的具体实现方式不进行任何限制,本领域技术人员可根据需要使用任何其他合适类型的数据库。
根据本公开的一些实施例,目标直播协议是BMT(BvcMediaTransport)直播协议。
根据一些示例,目标直播协议的基本信息单元可采取mp4 box的形式。下面的示例性代码示出了对目标直播协议的基本信息单元的示例性定义。
Figure BDA0004012825600000081
上述示例性代码示出了目标直播协议的基本信息单元的数据结构。根据一些示例,目标直播协议的所有信息单元都具有该通用的数据结构。可以看出,基本信息单元内的前4个字节为信息单元的总体大小,接下来的4个字节为信息单元的类型名称(一般而言是唯一的)。当size等于1时,说明该信息单元大小为超级大,即,4个字节的size无法表示该信息单元,此时会使用额外的8个字节去表示该信息单元;而当size等于0时,说明到该文件结尾处。如果boxtype等于uuid的话,则还会有额外的16个字节表示扩展类型。将理解的是,对上述示例性代码的解读可参照现有音视频传输协议(例如,MP4或fMP4协议等)的相关内容,本公开对此不进行赘述。
将理解的是,上述示例性代码仅仅是示例性的,而非旨在进行任何限制。本领域技术人员可在获悉本公开的构思后对上述示例性代码做出任何合适的增加、删除、修改、替换等操作。
根据一些示例,目标直播协议报头信息单元可以基于目标直播协议的基本信息单元进行搭建。下面的示例性代码示出了对目标直播协议报头信息单元(例如,BHIN(BvcHeader Information)box)的示例性定义。
Figure BDA0004012825600000091
根据一些示例,目标直播协议报头信息单元可以出现在直播流的最开始的地方,其可用于标识版本号和起始的编号和/或用于鉴定该直播流是否要用目标直播协议进行流传输。在目标直播协议是BMT直播协议的情况下,目标直播协议报头信息单元可以指示直播流是否为BMT流。
将理解的是,上述示例性代码仅仅是示例性的,而非旨在进行任何限制。本领域技术人员可在获悉本公开的构思后对上述示例性代码做出任何合适的增加、删除、修改、替换等操作。
根据一些示例,目标帧封装类型可以是若干个完整帧、一个完整帧、部分帧(例如,完整帧的1/2、1/3、1/4等)、或完整帧和部分帧的组合(例如,一个或多个完整帧加上部分帧)。
由此,借助于方法200,可以允许以不足一帧的方式进行音视频数据的封装,服务器端因而可以根据实时网络状况选择音视频数据的帧封装类型,当网络状况欠佳时,可将完整的一帧音视频切割成部分音视频帧进行封装并进行流传输,从而可以有效降低客户端处的启动延迟,有利于提升直播播放体验。
图3示出了根据本公开的实施例的目标直播协议300的示意性框图。
根据一些示例,目标直播协议300包括目标直播协议报头信息单元(示出为BHIN)以及一个或多个目标直播协议媒体信息单元(示出为BMIF,其可以是例如第一目标直播协议媒体信息单元)。根据一些示例,目标直播协议300还包括存放音视频元数据文件的信息单元(例如,示出为ftyp和moov)。关于ftyp和moov(其分别可被实现为ftyp box和moovbox)的解读可参照现有音视频传输协议(例如,MP4或fMP4协议等)的相关内容,本公开对此不进行赘述。
根据本公开的一些实施例,目标直播协议媒体信息单元可支持组帧操作,即,将若干个完整帧、一个完整帧、部分帧(例如,完整帧的1/2、1/3、1/4等)、或完整帧和部分帧的组合(例如,一个或多个完整帧加上部分帧)进行封装,以区别于现有流媒体协议中以CHUNK为最小封装单位对(若干)完整帧进行封装的实现。
将理解的是,图3中所示的目标直播协议媒体信息单元(示出为BMIF)的数目仅仅是示意性的。
根据一些示例,一组目标直播协议媒体信息单元可组成分块CHUNK,并且若干个分块CHUNK可组成分片文件FRAGMENT。
下面的示例性代码示出了对目标直播协议媒体信息单元(例如,BMIF box)的示例性定义。
Figure BDA0004012825600000101
Figure BDA0004012825600000111
如上所述的用于标识目标直播协议媒体信息单元(例如,第一目标直播协议媒体信息单元)的帧封装类型的字段可用frame_type进行定义。
根据一些示例,目标直播协议媒体信息单元可以是用于传输音视频内容的主要载体,其中,track id标识该目标直播协议媒体信息单元属于哪个轨道,frame_type标识帧封装类型。对于传输和播放两种操作而言,可以依赖该帧封装类型做丢帧或缓存等操作。chunk_flag用于标识该目标直播协议媒体信息单元是否为一个分块chunk的起点,而fragment_flag则标识该目标直播协议媒体信息单元是否为一个分片文件的起始。
根据本公开的一些实施例,一个或多个第一目标直播协议媒体信息单元中的每一者还包括:用于标识该第一目标直播协议媒体信息单元是否为音视频分块起点的分块标志;以及用于标识该第一目标直播协议媒体信息单元是否为音视频分片文件起点的分片文件标志,其中,多个音视频分块组成一个音视频分片文件。
根据本公开的一些实施例,目标直播协议媒体信息单元(例如,第一目标直播协议媒体信息单元)是主要存放音视频数据的结构,其支持各种灵活的组帧操作(例如,允许半帧封包)。在一些示例中,目标直播协议媒体信息单元(例如,第一目标直播协议媒体信息单元)的时间戳可采用偏移量的形式,从而有效降低信息单元的大小,减少带宽消耗。
将理解的是,上述示例性代码仅仅是示例性的,而非旨在进行任何限制。本领域技术人员可在获悉本公开的构思后对上述示例性代码做出任何合适的增加、删除、修改、替换等操作。
下表1示出了BMT直播协议与现有主流直播协议之间的性能对比。
Figure BDA0004012825600000112
/>
Figure BDA0004012825600000121
表1
BMT直播协议在封装消耗和数据封装层消耗带宽量等方面的性能指标均优于现有主流直播协议(例如,RTMP、CMAF(Common Media Application Format,公共媒体应用格式)等)。具体而言,从表中可见,BMT在上述两项性能指标上显著优于RTMP和CMAF协议。另外,尽管BMT协议与FLV(Flash Video)协议在上述两项性能指标方面的差距小于BMT协议与RTMP和CMAF协议的差距,但考虑到BMT协议兼容现有的fMP4标准,从而支持多种协议的转换,可扩展性非常强,本公开的BMT协议仍显著优于FLV协议。
图4示出了根据本公开的实施例的多级服务器架构400的示意性框图。如图所示,多级服务器架构400可包括父级服务器端、二级服务器端和末级服务器端。现有的主流直播协议在二级服务器处必须等待完整的一帧完全缓存后才能向末级服务器进行流媒体的分发。即,在二级服务器处分发时必须等待直至完整的一帧被缓存,才能向末级服务器进行分发。然而,归因于本公开的目标直播协议是取决于网络状况来确定目标直播协议媒体信息单元(例如,BMIF)的帧封装类型的(区别于以分块CHUNK作为最小解封装单位,目标直播协议媒体信息单元可以是完整帧的一部分),可不必等待收到完整的一帧即可向下游实体进行分发,从而有效降低启动延迟。例如,假设原本2个目标直播协议媒体信息单元组成一个完整的帧,二级服务器端可以仅将一个目标直播协议媒体信息单元先发往末级服务器,以降低末级服务器处的启动延迟。
将理解的是,图4中所示的多级服务器结构400仅仅是示意性的,其可包括介于父级服务器端与末级服务器端之间的更多或更少的中间服务器端。还将理解的是,图4所示的目标直播协议媒体信息单元的数目仅仅是示意性的,本公开对此不进行任何限制。
图5示出了根据本公开的实施例的流媒体发送设备与流媒体接收设备之间的示意性信令图500。
如图所示,客户端501向服务器端502发送目标直播协议请求信息单元(示出为BRIF 510,将在下文进行描述)。接着,服务器端502响应于接收到目标直播协议请求信息单元而向客户端501发送目标直播协议确收信息单元(示出为BAIF 520,将在下文进行描述)。紧接于此,服务器端502向客户端传送目标直播协议报头信息单元510(示出为BHIN 530)以及一个或多个目标直播协议媒体信息单元(示出为BMIF 540)。
将理解的是,图5所示的服务器端502可以是如上文描述的流传输发送设备,并且客户端501可以是如上文描述的流传输接收设备。
根据一些示例,本公开的目标直播协议(例如,BMT直播协议)可支持用HTTP协议进行流传输(即,BMT over HTTP)。例如,推流可以基于HTTP协议下的POST或PUT操作,而拉流可以基于HTTP协议下的GET操作。上述两种方式都可以通过HTTP参数携带业务信息,传输内容与上文参照图3所描绘的目标直播协议的示意性框图基本一致,即,无需额外的信息单元。
根据一些示例,本公开的目标直播协议(例如,BMT直播协议)可支持用TCP协议进行流传输(即,BMT over TCP)。由于TCP协议上未曾定义相关业务信息,因此需要额外的信息单元来定义推流或拉流方式及相关联的业务信息。
下面的示例性代码示出了对目标直播协议请求信息单元和目标直播协议请求信息单元(即,参考图5所描绘的BRIF 510和BAIF 520)的示例性定义。
BRIF的示例性定义为:
Figure BDA0004012825600000131
BRIF box用于客户端与服务器端进行交互使用,由客户端发送给服务器端,其中涉及版本号、请求模式、随机数、空间名、流名、期望时间戳、burl等字段。上述示例性代码对于本领域技术人员而言是容易理解的,本公开在此不再赘述。
BAIF的示例性定义为:
Figure BDA0004012825600000132
Figure BDA0004012825600000141
BAIF box用于客户端与服务器端进行交互使用,服务器端会在应答客户端的BRIF的请求时发送该box。code表示此次交互的状态码,当code等于1时,说明服务器端要求客户端重新对新的地址进行请求。Session_id是对BRIF box中字段的请求响应,服务器端会验证该字段并返回,以防止无效数据碰撞。上述示例性代码对于本领域技术人员而言是容易理解的,本公开在此不再赘述。
根据本公开的一些实施例,上述方法200还可包括:从流传输接收设备接收目标直播协议请求信息单元,目标直播协议请求单元包括用于标识请求模式的请求模式字段;响应于接收到目标直播协议请求信息单元并且请求模式字段指示请求模式为推流,向流传输接收设备传送目标直播协议确收信息单元,其中,目标直播协议确收信息单元是由流传输发送设备在传送目标直播协议报头信息单元之前传送的。
根据本公开的一些实施例,当流传输发送设备接收到来自于流传输接收设备的直播流请求(例如,请求流传输发送设备向其推流)时,可以将直播流的音视频数据与对流传输接收设备的请求的应答一起发送至流传输接收设备,从而有效减少两方的握手次数,从而降低启动延迟,并提高用户体验。
根据本公开的一些实施例,上述方法200还可包括:向流传输接收设备传送目标直播协议请求信息单元,目标直播协议请求单元包括用于标识请求模式的请求模式字段,并且请求模式为拉流;从流传输接收设备接收目标直播协议确收信息单元,其中,目标直播协议确收信息单元是由流传输发送设备在传送目标直播协议报头信息单元之前接收的。
根据本公开的一些实施例,当流传输接收设备收到流传输发送设备的拉流请求时,表示流传输发送设备期望流传输接收设备主动从其处拉流,于是当流传输接收设备向流传输发送设备发送准予该请求的确收信令时(例如,目标直播协议确收信息单元),紧接在发送确收信令之后,流传输接收设备可随即开始接收直播流(包括报头信息单元和媒体信息单元),从而有效减少两方的握手次数,降低启动延迟,并提高用户体验。
图6示出了根据本公开的实施例的用于流传输第二目标直播协议媒体信息单元的方法600的流程图。如图所示,方法600可以包括:步骤S610、在向流传输接收设备流传输一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续获取当前网络状态信息,其中,当前网络状态信息包括用于传输音视频的传输网络的当前网络性能的度量;步骤S620、响应于当前网络状态信息所指示的度量与初始网络状态所指示的度量相差超过预定阈值,从多个帧封装类型中选择与当前网络状态信息相适配的第二目标帧封装类型,第二目标帧封装类型与第一目标帧封装类型不同;步骤S630、至少基于第二目标帧封装类型,将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段;以及步骤S640、向流传输接收设备流传输一个或多个第二目标直播协议媒体信息单元。
根据本公开的一些实施例,方法600可允许服务器端(例如,流传输发送设备等)根据实时网络状况选择封装数据的大小,当网络状态较差时,可将较大的音视频帧切割成小的音视频帧进行发送,从而在一定程度上达成消除网络抖动的不利影响。
根据本公开的一些实施例,上述方法200或600可附加地包括:响应于完成流传输,向流传输接收设备传送目标直播协议完成信息单元,目标直播协议完成信息单元指示流传输过程的结束。由此,可减少下游实体(例如,末级服务器端或流传输接收设备等)处的不必要的等待时间。
图7示出了根据本公开的实施例的流媒体发送设备与流媒体接收设备之间的示意性信令图700。
如图所示,在服务器端702向客户端701发送目标直播协议报头信息单元(示出为BHIN 730)之后,服务器端702还向客户端701发送存放音视频元数据文件的信息单元(例如,示出为ftyp 732和moov 734)。紧接于此,服务器端702向客户端701流传输一个或多个目标直播协议媒体信息单元(示出为BMIF 740)。
将理解的是,图7所示的服务器端702可以是如上文描述的流传输发送设备,并且客户端701可以是如上文描述的流传输接收设备。
图8示出了根据本公开的实施例的用于音视频的流传输方法800的流程图。根据本公开的一些实施例,方法800可以应用于流传输接收设备。如图8所示,方法800可以包括:步骤S810、提供初始网络状态信息,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量,初始网络状态信息用于流传输发送设备从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型,并至少基于目标帧封装类型来将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及步骤S820、接收由流传输发送设备传送的目标直播协议报头信息单元和由流传输发送设备流传输的一个或多个第一目标直播协议媒体信息单元。
关于方法800的步骤的描述可参见上文关于图2所解说的应用于流传输发送设备的方法200的内容,不公开在此不进行赘述。
由此,借助于方法800,可以允许以不足一帧的方式进行音视频数据的封装,服务器端因而可以根据实时网络状况选择音视频数据的帧封装类型,当网络状况欠佳时,可将完整的一帧音视频切割成部分音视频帧进行封装。流传输接收设备可因而接收基于灵活的目标帧封装类型而被封装的直播流传输,从而可以有效降低客户端处的启动延迟,有利于提升直播播放体验。
根据本公开的一些实施例,一个或多个第一目标直播协议媒体信息单元中的每一者还包括:用于标识该第一目标直播协议媒体信息单元是否为音视频分块起点的分块标志;以及用于标识该第一目标直播协议媒体信息单元是否为音视频分片文件起点的分片文件标志,其中,多个音视频分块组成一个音视频分片文件。
根据本公开的一些实施例,目标直播协议媒体信息单元(例如,第一目标直播协议媒体信息单元)是主要存放音视频数据的结构,其支持各种灵活的组帧操作(例如,允许半帧封包)。在一些示例中,目标直播协议媒体信息单元(例如,第一目标直播协议媒体信息单元)的时间戳可采用偏移量的形式,从而有效降低信息单元的大小,减少带宽消耗。
根据本公开的一些实施例,上述方法800还可以包括:向流传输发送设备传送目标直播协议请求信息单元,目标直播协议请求单元包括用于标识请求模式的请求模式字段,并且请求模式为推流;从流传输发送设备接收目标直播协议确收信息单元,其中,目标直播协议确收信息单元是由流传输接收设备在接收目标直播协议报头信息单元之前接收的。
根据本公开的一些实施例,在流传输发送设备接收到来自于流传输接收设备的直播流请求(例如,请求流传输发送设备向其推流)之后,流传输接收设备可以从流传输发送设备接收后者对流传输接收设备的请求的应答连同直播流的音视频数据,从而有效减少两方的握手次数,从而降低启动延迟,并提高用户体验。
根据本公开的一些实施例,上述方法800还可以包括:从流传输发送设备接收目标直播协议请求信息单元,目标直播协议请求单元包括用于标识请求模式的请求模式字段;响应于接收到目标直播协议请求信息单元并且请求模式字段指示请求模式为拉流,向流传输发送设备传送目标直播协议确收信息单元,其中,目标直播协议确收信息单元是由流传输接收设备在接收目标直播协议报头信息单元之前传送的。
根据本公开的一些实施例,当流传输接收设备收到流传输发送设备的拉流请求时,表示流传输发送设备期望流传输接收设备主动从其处拉流,于是当流传输接收设备向流传输发送设备发送准予该请求的确收信令时(例如,目标直播协议确收信息单元),紧接在发送确收信令之后,流传输接收设备可随即开始接收直播流(包括报头信息单元和媒体信息单元),从而有效减少两方的握手次数,降低启动延迟,并提高用户体验。
根据本公开的一些实施例,上述方法800还可以包括:在接收由流传输发送设备流传输的一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续提供当前网络状态信息,其中,当前网络状态信息包括用于传输音视频的传输网络的当前网络性能的度量,当前网络状态信息用于流传输发送设备响应于当前网络信息所指示的度量与初始网络状态所指示的度量相差超过预定阈值,从多个帧封装类型中选择与当前网络状态信息相适配的第二目标帧封装类型,第二目标帧封装类型与第一目标帧封装类型不同,并至少基于第二目标帧封装类型来将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段;以及接收由流传输发送设备流传输的一个或多个第二目标直播协议媒体信息单元。
由此,根据本公开的一些实施例,可允许服务器端(例如,流传输发送设备等)根据实时网络状况选择封装数据的大小,当网络状态较差时,可将较大的音视频帧切割成小的音视频帧进行发送,从而在一定程度上达成消除网络抖动的不利影响。
根据本公开的一些实施例,上述方法800可附加地包括:在流传输完成时,从流传输发送设备接收目标直播协议完成信息单元,目标直播协议完成信息单元指示流传输过程的结束。由此,可减少下游实体(例如,末级服务器端或流传输接收设备等)处的不必要的等待时间。
图9示出了根据本公开的实施例的用于音视频的流传输装置900的结构框图。如图所示,装置900可以包括:初始化模块910,用于获取初始网络状态信息,并配置目标直播协议报头信息单元,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量;帧封装选择模块920,用于基于初始网络状态信息,从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型;帧封装执行模块930,用于至少基于目标帧封装类型,将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及传输模块940,用于向流传输接收设备传送目标直播协议报头信息单元,并向流传输接收设备流传输一个或多个第一目标直播协议媒体信息单元。
根据本公开的一些实施例,上述装置900能够允许以不足一帧的方式进行音视频数据的封装,服务器端因而可以根据实时网络状况选择音视频数据的帧封装类型,当网络状况欠佳时,可将完整的一帧音视频切割成部分音视频帧进行封装并进行流传输,从而可以有效降低客户端处的启动延迟,有利于提升直播播放体验。
根据本公开的一些实施例,装置900可以附加地包括:监视模块950,用于在向流传输接收设备流传输一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续获取当前网络状态信息,其中,当前网络状态信息包括用于传输音视频的传输网络的当前网络性能的度量,其中,帧封装选择模块还用于响应于当前网络状态信息所指示的度量与初始网络状态所指示的度量相差超过预定阈值,从多个帧封装类型中选择与当前网络状态信息相适配的第二目标帧封装类型,第二目标帧封装类型与第一目标帧封装类型不同,其中,帧封装执行模块还用于至少基于第二目标帧封装类型,将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段,并且其中,传输模块还用于向流传输接收设备流传输一个或多个第二目标直播协议媒体信息单元。
图10示出了根据本公开的实施例的用于音视频的流传输装置1000的结构框图。如图所示,装置1000可以包括:监视模块1010,用于提供初始网络状态信息,其中,初始网络状态信息包括用于传输音视频的传输网络的初始网络性能的度量,初始网络状态信息用于流传输发送设备从多个帧封装类型中选择与初始网络状态信息相适配的目标帧封装类型,并至少基于目标帧封装类型来将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及接收模块1020,用于接收由流传输发送设备传送的目标直播协议报头信息单元和由流传输发送设备流传输的一个或多个第一目标直播协议媒体信息单元。
根据本公开的一些实施例,上述装置1000能够允许以不足一帧的方式进行音视频数据的封装,服务器端因而可以根据实时网络状况选择音视频数据的帧封装类型,当网络状况欠佳时,可将完整的一帧音视频切割成部分音视频帧进行封装。流传输接收设备可因而接收基于灵活的目标帧封装类型而被封装的直播流传输,从而可以有效降低客户端处的启动延迟,有利于提升直播播放体验。
根据本公开的一些实施例,监视模块还用于在接收由流传输发送设备流传输的一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续提供当前网络状态信息,其中,当前网络状态信息包括用于传输音视频的传输网络的当前网络性能的度量,当前网络状态信息用于流传输发送设备响应于当前网络信息所指示的度量与初始网络状态所指示的度量相差超过预定阈值,从多个帧封装类型中选择与当前网络状态信息相适配的第二目标帧封装类型,第二目标帧封装类型与第一目标帧封装类型不同,并至少基于第二目标帧封装类型来将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段,并且其中,接收模块还用于接收由流传输发送设备流传输的一个或多个第二目标直播协议媒体信息单元。
应当理解,图9-10中所示装置900、1000的各个模块可以与参考图2和图8描述的方法200和800中的各个步骤相对应。由此,上面针对方法200和800等描述的操作、特征和优点同样适用于装置900-1000及其所包括的单元。为了简洁起见,某些操作、特征和优点在此不再赘述。
根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的至少一个存储器;其中所述至少一个存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现上述用于音视频的流传输方法。
根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现上述用于音视频的流传输方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现上述用于音视频的流传输方法。
参见图11,现将描述可以作为本公开的服务器或客户端的电子设备1100的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备可以是不同类型的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图11所示,电子设备1100可以包括能够通过系统总线1130彼此通信的至少一个处理器1110、工作存储器1120、输入单元1140、显示单元1150、扬声器1160、存储单元1170、通信单元1180以及其它输出单元1190。
处理器1110可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器1110可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。处理器1110可以被配置成获取并且执行存储在工作存储器1120、存储单元1170或者其他计算机可读介质中的计算机可读指令,诸如操作系统1120a的程序代码、应用程序1120b的程序代码等。
工作存储器1120和存储单元1170是用于存储指令的计算机可读存储介质的示例,指令由处理器1110执行来实施前面所描述的各种功能。工作存储器1120可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,存储单元1170可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。工作存储器1120和存储单元1170在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器1110作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
输入单元1160可以是能向电子设备1100输入信息的任何类型的设备,输入单元1160可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示单元1150、扬声器1160以及其它输出单元1190,其它输出单元1190可以但不限于包括视频/音频输出终端、振动器和/或打印机。通信单元1180允许电子设备1100通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、802.11设备、Wi-Fi设备、WiMAX设备、蜂窝通信设备和/或类似物。
工作寄存器1120中的应用程序1120b可以被加载执行上文所描述的各个方法和处理,例如图2中的步骤S210-S240、图6中的步骤S610-S640、图8中的步骤S810-S820。例如,在一些实施例中,上文描述的方法200、方法600和/或方法800等可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1170。在一些实施例中,计算机程序的部分或者全部可以经由存储单元1170和/或通信单元1180而被载入和/或安装到电子设备1100上。当计算机程序被加载并由处理器1110执行时,可以执行上文描述的方法200、方法600和/或方法800等的一个或多个步骤。备选地,在其他实施例中,处理器1110可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法200、方法600和/或方法800等。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。

Claims (19)

1.一种用于音视频的流传输方法,应用于流传输发送设备,所述方法包括:
获取初始网络状态信息,并配置目标直播协议报头信息单元,其中,所述初始网络状态信息包括用于传输所述音视频的传输网络的初始网络性能的度量;
基于所述初始网络状态信息,从多个帧封装类型中选择与所述初始网络状态信息相适配的目标帧封装类型;
至少基于所述目标帧封装类型,将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,所述一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及
向流传输接收设备传送所述目标直播协议报头信息单元,并向所述流传输接收设备流传输所述一个或多个第一目标直播协议媒体信息单元。
2.根据权利要求1所述的方法,其中,所述一个或多个第一目标直播协议媒体信息单元中的每一者还包括:
用于标识该第一目标直播协议媒体信息单元是否为音视频分块起点的分块标志;以及
用于标识该第一目标直播协议媒体信息单元是否为音视频分片文件起点的分片文件标志,
其中,多个音视频分块组成一个音视频分片文件。
3.根据权利要求1或2所述的方法,还包括:
从所述流传输接收设备接收目标直播协议请求信息单元,所述目标直播协议请求单元包括用于标识请求模式的请求模式字段;
响应于接收到所述目标直播协议请求信息单元并且所述请求模式字段指示所述请求模式为推流,向所述流传输接收设备传送目标直播协议确收信息单元,
其中,所述目标直播协议确收信息单元是由所述流传输发送设备在传送所述目标直播协议报头信息单元之前传送的。
4.根据权利要求1或2所述的方法,还包括:
向所述流传输接收设备传送目标直播协议请求信息单元,所述目标直播协议请求单元包括用于标识请求模式的请求模式字段,并且所述请求模式为拉流;
从所述流传输接收设备接收目标直播协议确收信息单元,
其中,所述目标直播协议确收信息单元是由所述流传输发送设备在传送所述目标直播协议报头信息单元之前接收的。
5.根据前述权利要求中任一项所述的方法,还包括:
在向所述流传输接收设备流传输所述一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续获取当前网络状态信息,其中,所述当前网络状态信息包括用于传输所述音视频的所述传输网络的当前网络性能的度量;
响应于所述当前网络状态信息所指示的度量与所述初始网络状态所指示的度量相差超过预定阈值,从所述多个帧封装类型中选择与所述当前网络状态信息相适配的第二目标帧封装类型,所述第二目标帧封装类型与所述第一目标帧封装类型不同;
至少基于所述第二目标帧封装类型,将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,所述一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段;以及
向所述流传输接收设备流传输所述一个或多个第二目标直播协议媒体信息单元。
6.根据前述权利要求中任一项所述的方法,还包括:
响应于完成所述流传输,向所述流传输接收设备传送目标直播协议完成信息单元,所述目标直播协议完成信息单元指示流传输过程的结束。
7.一种用于音视频的流传输方法,应用于流传输接收设备,所述方法包括:
提供初始网络状态信息,其中,所述初始网络状态信息包括用于传输所述音视频的传输网络的初始网络性能的度量,所述初始网络状态信息用于流传输发送设备从多个帧封装类型中选择与所述初始网络状态信息相适配的目标帧封装类型,并至少基于所述目标帧封装类型来将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,所述一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及
接收由所述流传输发送设备传送的目标直播协议报头信息单元和由所述流传输发送设备流传输的所述一个或多个第一目标直播协议媒体信息单元。
8.根据权利要求7所述的方法,其中,所述一个或多个第一目标直播协议媒体信息单元中的每一者还包括:
用于标识该第一目标直播协议媒体信息单元是否为音视频分块起点的分块标志;以及
用于标识该第一目标直播协议媒体信息单元是否为音视频分片文件起点的分片文件标志,
其中,多个音视频分块组成一个音视频分片文件。
9.根据权利要求7或8所述的方法,还包括:
向所述流传输发送设备传送目标直播协议请求信息单元,所述目标直播协议请求单元包括用于标识请求模式的请求模式字段,并且所述请求模式为推流;
从所述流传输发送设备接收目标直播协议确收信息单元,
其中,所述目标直播协议确收信息单元是由所述流传输接收设备在接收所述目标直播协议报头信息单元之前接收的。
10.根据权利要求7或8所述的方法,还包括:
从所述流传输发送设备接收目标直播协议请求信息单元,所述目标直播协议请求单元包括用于标识请求模式的请求模式字段;
响应于接收到所述目标直播协议请求信息单元并且所述请求模式字段指示所述请求模式为拉流,向所述流传输发送设备传送目标直播协议确收信息单元,
其中,所述目标直播协议确收信息单元是由所述流传输接收设备在接收所述目标直播协议报头信息单元之前传送的。
11.根据权利要求7-10中任一项所述的方法,还包括:
在接收由所述流传输发送设备流传输的所述一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续提供当前网络状态信息,其中,所述当前网络状态信息包括用于传输所述音视频的所述传输网络的当前网络性能的度量,所述当前网络状态信息用于所述流传输发送设备响应于所述当前网络信息所指示的度量与所述初始网络状态所指示的度量相差超过预定阈值,从所述多个帧封装类型中选择与所述当前网络状态信息相适配的第二目标帧封装类型,所述第二目标帧封装类型与所述第一目标帧封装类型不同,并至少基于所述第二目标帧封装类型来将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,所述一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段;以及
接收由所述流传输发送设备流传输的所述一个或多个第二目标直播协议媒体信息单元。
12.根据权利要求7-11中任一项所述的方法,还包括:
在所述流传输完成时,从所述流传输发送设备接收目标直播协议完成信息单元,所述目标直播协议完成信息单元指示流传输过程的结束。
13.一种用于音视频的流传输装置,所述装置包括:
初始化模块,用于获取初始网络状态信息,并配置目标直播协议报头信息单元,其中,所述初始网络状态信息包括用于传输所述音视频的传输网络的初始网络性能的度量;
帧封装选择模块,用于基于所述初始网络状态信息,从多个帧封装类型中选择与所述初始网络状态信息相适配的目标帧封装类型;
帧封装执行模块,用于至少基于所述目标帧封装类型,将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,所述一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及
传输模块,用于向流传输接收设备传送所述目标直播协议报头信息单元,并向所述流传输接收设备流传输所述一个或多个第一目标直播协议媒体信息单元。
14.根据权利要求13所述的装置,还包括:
监视模块,用于在向所述流传输接收设备流传输所述一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续获取当前网络状态信息,其中,所述当前网络状态信息包括用于传输所述音视频的所述传输网络的当前网络性能的度量,
其中,所述帧封装选择模块还用于响应于所述当前网络状态信息所指示的度量与所述初始网络状态所指示的度量相差超过预定阈值,从所述多个帧封装类型中选择与所述当前网络状态信息相适配的第二目标帧封装类型,所述第二目标帧封装类型与所述第一目标帧封装类型不同,
其中,所述帧封装执行模块还用于至少基于所述第二目标帧封装类型,将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,所述一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段,并且
其中,所述传输模块还用于向所述流传输接收设备流传输所述一个或多个第二目标直播协议媒体信息单元。
15.一种用于音视频的流传输装置,所述装置包括:
监视模块,用于提供初始网络状态信息,其中,所述初始网络状态信息包括用于传输所述音视频的传输网络的初始网络性能的度量,所述初始网络状态信息用于流传输发送设备从多个帧封装类型中选择与所述初始网络状态信息相适配的目标帧封装类型,并至少基于所述目标帧封装类型来将待传输的音视频流封装进一个或多个第一目标直播协议媒体信息单元中,所述一个或多个第一目标直播协议媒体信息单元中的每一者包括用于标识该第一目标直播协议媒体信息单元的帧封装类型的字段;以及
接收模块,用于接收由所述流传输发送设备传送的目标直播协议报头信息单元和由所述流传输发送设备流传输的所述一个或多个第一目标直播协议媒体信息单元。
16.根据权利要求15所述的装置,
其中,所述监视模块还用于在接收由所述流传输发送设备流传输的所述一个或多个第一目标直播协议媒体信息单元期间,以预设时间间隔持续提供当前网络状态信息,其中,所述当前网络状态信息包括用于传输所述音视频的所述传输网络的当前网络性能的度量,所述当前网络状态信息用于所述流传输发送设备响应于所述当前网络信息所指示的度量与所述初始网络状态所指示的度量相差超过预定阈值,从所述多个帧封装类型中选择与所述当前网络状态信息相适配的第二目标帧封装类型,所述第二目标帧封装类型与所述第一目标帧封装类型不同,并至少基于所述第二目标帧封装类型来将待传输的音视频流封装进一个或多个第二目标直播协议媒体信息单元中,所述一个或多个第二目标直播协议媒体信息单元中的每一者包括用于标识该第二目标直播协议媒体信息单元的帧封装类型的字段,并且
其中,所述接收模块还用于接收由所述流传输发送设备流传输的所述一个或多个第二目标直播协议媒体信息单元。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的至少一个存储器,
其中,所述至少一个存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据权利要求1-12中任一项所述的方法。
18.一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据权利要求1-12中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据权利要求1-12中任一项所述的方法。
CN202211658786.7A 2022-12-22 2022-12-22 用于音视频的流传输方法及装置、电子设备和介质 Pending CN116319701A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211658786.7A CN116319701A (zh) 2022-12-22 2022-12-22 用于音视频的流传输方法及装置、电子设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211658786.7A CN116319701A (zh) 2022-12-22 2022-12-22 用于音视频的流传输方法及装置、电子设备和介质

Publications (1)

Publication Number Publication Date
CN116319701A true CN116319701A (zh) 2023-06-23

Family

ID=86815627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211658786.7A Pending CN116319701A (zh) 2022-12-22 2022-12-22 用于音视频的流传输方法及装置、电子设备和介质

Country Status (1)

Country Link
CN (1) CN116319701A (zh)

Similar Documents

Publication Publication Date Title
US20220394316A1 (en) Message sending method and device, readable medium and electronic device
US9253100B2 (en) Asynchronous virtual machine replication
US10594606B2 (en) Wired data-connection aggregation
CN108848060B (zh) 一种多媒体文件处理方法、处理系统及计算机可读存储介质
US20140165119A1 (en) Offline download method, multimedia file download method and system thereof
US8856385B1 (en) Image display method and apparatus
US9166881B1 (en) Methods and apparatus for adaptive bandwidth-based communication management
WO2022111027A1 (zh) 视频获取方法、电子设备及存储介质
CN113285931B (zh) 流媒体的传输方法、流媒体服务器及流媒体系统
WO2020026018A1 (zh) 文件的下载方法、装置、设备/终端/服务器及存储介质
US20240089538A1 (en) Port-connected television upgrader device
US20200112768A1 (en) Network-based media device upgrading system
US11838589B2 (en) Port-connected television upgrader device
CN109788251B (zh) 视频处理方法、装置及存储介质
CN113079386B (zh) 一种视频在线播放方法、装置、电子设备及存储介质
CN114245175A (zh) 视频转码方法、装置、电子设备及存储介质
US10944631B1 (en) Network request and file transfer prioritization based on traffic elasticity
WO2023226757A1 (zh) 视频缓存方法、装置、设备及存储介质
CN112650755A (zh) 数据存储方法、查询数据的方法、数据库、以及可读介质
CN111404842A (zh) 数据传输方法、装置及计算机存储介质
CN116319701A (zh) 用于音视频的流传输方法及装置、电子设备和介质
CN115988577A (zh) 数据发送方法、装置、存储介质及电子设备
CN113132480B (zh) 一种数据传输方法、装置和系统
US11323499B2 (en) Bandwidth efficient streaming and synching multimedia content at a desired quality of experience
JP2023031248A (ja) エッジコンピューティングネットワーク、データ伝送方法、装置、機器、及び記憶媒体

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination