CN113141522B - 资源传输方法、装置、计算机设备及存储介质 - Google Patents
资源传输方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN113141522B CN113141522B CN202010054760.6A CN202010054760A CN113141522B CN 113141522 B CN113141522 B CN 113141522B CN 202010054760 A CN202010054760 A CN 202010054760A CN 113141522 B CN113141522 B CN 113141522B
- Authority
- CN
- China
- Prior art keywords
- timestamp
- frame
- target
- audio
- parameter
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/23439—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2387—Stream processing in response to a playback request from an end-user, e.g. for trick-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/239—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
- H04N21/2393—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26258—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/442—Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
- H04N21/44209—Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/472—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
- H04N21/47217—End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for controlling playback functions for recorded or on-demand content, e.g. using progress bars, mode or play-point indicators or bookmarks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
Abstract
本公开关于一种资源传输方法、装置、计算机设备及存储介质,属于通信技术领域。本公开通过响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,由于该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置,从而可以基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧,从该起始帧开始发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳,这样能够从起始帧开始进行帧级别的媒体流传输,无需对多媒体资源进行分片传输,大大降低了资源传输过程的延时,提升了资源传输的实时性,提升了资源传输效率。
Description
技术领域
本公开涉及通信技术领域,特别涉及一种资源传输方法、装置、计算机设备及存储介质。
背景技术
随着通信技术的发展,用户可以随时随地在终端上浏览音视频资源,目前,在服务器向终端传输音视频资源(俗称为“拉流阶段”)时,可以采用基于分片的媒体传输方式。
基于分片的媒体传输方式包括常见的DASH(Dynamic Adaptive Streaming overHTTP,MPEG制定的基于HTTP的自适应流媒体传输标准,其中,MPEG的英文全称为MovingPicture Experts Group,中文全称为动态图像专家组)、HLS(HTTP Live Streaming,苹果公司制定的基于HTTP的自适应流媒体传输标准)等,服务器将音视频资源切分成一段一段的音视频片段,每个音视频片段都可以转码成不同的码率,终端在播放音视频资源时,分别访问音视频资源所切分成的各个音视频片段的网址,不同的音视频片段之间可以对应于相同或不同的码率,使得终端能够方便地在不同码率的音视频资源中进行切换,这种过程也称为基于终端自身带宽情况自适应调整码率。
在上述过程中,由于以音视频片段为单位进行资源传输,导致服务器总是需要等待一个完整的音视频片段到达之后,才能将整个音视频片段传输到终端,从而基于分片的媒体传输方式的延时高,也即是说,资源传输过程的延时高、实时性差。
发明内容
本公开提供一种资源传输方法、装置、计算机设备及存储介质,以至少解决相关技术中资源传输过程的延时高、实时性差的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种资源传输方法,包括:
响应于多媒体资源的帧获取请求,获取所述多媒体资源的拉取位置参数,所述帧获取请求用于请求传输所述多媒体资源的媒体帧,所述拉取位置参数用于表示所述多媒体资源的媒体帧的起始拉取位置;
基于所述多媒体资源的拉取位置参数,确定所述多媒体资源的起始帧;
从所述起始帧开始发送所述多媒体资源的媒体帧,其中,所述媒体帧的时间戳大于或等于所述起始帧的时间戳。
在一种可能实施方式中,所述基于所述多媒体资源的拉取位置参数,确定所述多媒体资源的起始帧包括:
获取所述多媒体资源的音频参数,所述音频参数用于表示所述媒体帧是否为音频帧;
基于所述音频参数和所述拉取位置参数,确定目标时间戳;
基于所述目标时间戳,确定所述多媒体资源的起始帧。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数为默认值,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数为默认值,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数等于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数等于0,且所述音频参数为真,将最大音频时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数小于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数小于0,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数大于0,且所述音频参数为默认值或所述音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数大于0,且所述音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数大于0,且缓存区中未发生时间戳回退时,将所述拉取位置参数确定为所述目标时间戳。
在一种可能实施方式中,所述基于所述目标时间戳,确定所述多媒体资源的起始帧包括:
若所述当前有效缓存区中存在目标媒体帧,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
在一种可能实施方式中,所述基于所述目标时间戳,确定所述多媒体资源的起始帧包括:
若所述当前有效缓存区中不存在目标媒体帧,进入等待状态,直到所述目标媒体帧写入所述当前有效缓存区时,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
在一种可能实施方式中,所述将所述拉取位置参数确定为所述目标时间戳之后,所述方法还包括:
若所述当前有效缓存区中不存在目标媒体帧,且所述目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
在一种可能实施方式中,所述方法还包括:
若缓存区中的媒体帧序列中媒体帧的时间戳呈非单调递增,确定所述缓存区发生时间戳回退;否则,确定所述缓存区未发生时间戳回退,其中,所述媒体帧序列为所述缓存区中已缓存的多个媒体帧所构成的序列。
在一种可能实施方式中,所述方法还包括:
若所述缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述关键帧序列为所述缓存区中已缓存的多个关键帧所构成的序列;
若所述缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述音频帧序列为所述缓存区中已缓存的多个音频帧所构成的序列。
在一种可能实施方式中,所述确定所述缓存区发生时间戳回退之后,所述方法还包括:
将最后一个单调递增阶段所包含的各个媒体帧确定为当前有效缓存区内的资源。
在一种可能实施方式中,所述基于所述目标时间戳,确定所述多媒体资源的起始帧包括:
将当前有效缓存区中时间戳最接近所述目标时间戳的媒体帧确定为所述起始帧。
在一种可能实施方式中,若当前有效缓存区中包括视频资源,所述最大时间戳为最大视频时间戳;若当前有效缓存区中不包括视频资源,所述最大时间戳为最大音频时间戳。
在一种可能实施方式中,所述响应于多媒体资源的帧获取请求,获取所述多媒体资源的拉取位置参数包括:
若所述帧获取请求携带拉取位置参数,解析所述帧获取请求得到所述拉取位置参数;
若所述帧获取请求缺省拉取位置参数,将所述拉取位置参数配置为默认值。
在一种可能实施方式中,所述从所述起始帧开始发送所述多媒体资源的媒体帧包括:
基于所述帧获取请求,解析得到所述多媒体资源的地址信息;
从所述起始帧开始发送所述地址信息所指示的多媒体资源的媒体帧。
根据本公开实施例的第二方面,提供一种资源传输装置,包括:
获取单元,被配置为执行响应于多媒体资源的帧获取请求,获取所述多媒体资源的拉取位置参数,所述帧获取请求用于请求传输所述多媒体资源的媒体帧,所述拉取位置参数用于表示所述多媒体资源的媒体帧的起始拉取位置;
第一确定单元,被配置为执行基于所述多媒体资源的拉取位置参数,确定所述多媒体资源的起始帧;
发送单元,被配置为执行从所述起始帧开始发送所述多媒体资源的媒体帧,其中,所述媒体帧的时间戳大于或等于所述起始帧的时间戳。
在一种可能实施方式中,所述获取单元还被配置为执行:获取所述多媒体资源的音频参数,所述音频参数用于表示所述媒体帧是否为音频帧;
所述第一确定单元包括:
第一确定子单元,被配置为执行基于所述音频参数和所述拉取位置参数,确定目标时间戳;
第二确定子单元,被配置为执行基于所述目标时间戳,确定所述多媒体资源的起始帧。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数为默认值,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数为默认值,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数等于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数等于0,且所述音频参数为真,将最大音频时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数小于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数小于0,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数大于0,且所述音频参数为默认值或所述音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数大于0,且所述音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为所述目标时间戳。
在一种可能实施方式中,所述第一确定子单元被配置为执行:
若所述拉取位置参数大于0,且缓存区中未发生时间戳回退时,将所述拉取位置参数确定为所述目标时间戳。
在一种可能实施方式中,所述第二确定子单元被配置为执行:
若所述当前有效缓存区中存在目标媒体帧,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
在一种可能实施方式中,所述第二确定子单元被配置为执行:
若所述当前有效缓存区中不存在目标媒体帧,进入等待状态,直到所述目标媒体帧写入所述当前有效缓存区时,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
在一种可能实施方式中,所述发送单元还被配置为执行:
若所述当前有效缓存区中不存在目标媒体帧,且所述目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
在一种可能实施方式中,所述装置还包括:
第二确定单元,被配置为执行若缓存区中的媒体帧序列中媒体帧的时间戳呈非单调递增,确定所述缓存区发生时间戳回退;否则,确定所述缓存区未发生时间戳回退,其中,所述媒体帧序列为所述缓存区中已缓存的多个媒体帧所构成的序列。
在一种可能实施方式中,所述第二确定单元还被配置为执行:
若所述缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述关键帧序列为所述缓存区中已缓存的多个关键帧所构成的序列;
若所述缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述音频帧序列为所述缓存区中已缓存的多个音频帧所构成的序列。
在一种可能实施方式中,所述装置还包括:
第三确定单元,被配置为执行将最后一个单调递增阶段所包含的各个媒体帧确定为当前有效缓存区内的资源。
在一种可能实施方式中,所述第二确定子单元被配置为执行:
将当前有效缓存区中时间戳最接近所述目标时间戳的媒体帧确定为所述起始帧。
在一种可能实施方式中,若当前有效缓存区中包括视频资源,所述最大时间戳为最大视频时间戳;若当前有效缓存区中不包括视频资源,所述最大时间戳为最大音频时间戳。
在一种可能实施方式中,所述获取单元被配置为执行:
若所述帧获取请求携带拉取位置参数,解析所述帧获取请求得到所述拉取位置参数;
若所述帧获取请求缺省拉取位置参数,将所述拉取位置参数配置为默认值。
在一种可能实施方式中,所述发送单元被配置为执行:
基于所述帧获取请求,解析得到所述多媒体资源的地址信息;
从所述起始帧开始发送所述地址信息所指示的多媒体资源的媒体帧。
根据本公开实施例的第三方面,提供一种计算机设备,包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行上述第一方面以及第一方面的可能实施方式中任一项的资源传输方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的至少一条指令由计算机设备的一个或多个处理器执行时,使得计算机设备能够执行上述第一方面以及第一方面的可能实施方式中任一项的资源传输方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,所述一条或多条指令可以由计算机设备的一个或多个处理器执行,使得计算机设备能够执行上述第一方面以及第一方面的可能实施方式中任一项的资源传输方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,由于该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置,从而可以基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧,从该起始帧开始发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳,这样能够从起始帧开始进行帧级别的媒体流传输,无需对多媒体资源进行分片传输,也就不必在等待一个完整的资源片段到达之后才进行资源传输,因此大大降低了资源传输过程的延时,提升了资源传输的实时性,提升了资源传输效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种资源传输方法的实施环境示意图;
图2是本公开实施例提供的一种FAS框架的原理性示意图;
图3是根据一示例性实施例示出的一种资源传输方法的流程图;
图4是根据一示例性实施例示出的一种资源传输方法的交互流程图;
图5是本公开实施例提供的一种确定目标时间戳的原理性示意图;
图6是根据一示例性实施例示出的一种资源传输装置的逻辑结构框图;
图7是本公开实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开所涉及的用户信息可以为经用户授权或者经过各方充分授权的信息。
以下,对本公开所涉及的术语进行解释。
一、FLV(Flash Video)
FLV是一种流媒体格式,FLV流媒体格式是随着Flash MX(一种动画制作软件)的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件(也即在线浏览视频)成为可能,它的出现有效地解决了视频文件导入Flash后导出的SWF(一种Flash的专用文件格式)文件体积庞大,以致不能在网络上很好的使用等问题。
二、流媒体(Streaming Media)
流媒体采用流式传输方法,是指将一连串的多媒体资源压缩后,通过网络发送资源包,从而在网上即时传输多媒体资源以供观赏的一种技术与过程,此技术使得资源包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件,从而仅能进行离线观看多媒体资源。流式传输可传送现场多媒体资源或预存于服务器上的多媒体资源,当观众用户在收看这些多媒体资源时,多媒体资源在送达观众用户的观众终端后可以由特定播放软件进行播放。
三、FAS(FLV Adaptive Streaming,基于FLV的自适应流媒体传输标准)
FAS是本公开所提出的流式资源传输标准(或称为资源传输协议),与传统的基于分片的媒体传输方式不同,FAS标准能够达到帧级别的多媒体资源传输,服务器无需等待一个完整的视频片段到达之后才能向终端发送资源包,而是在解析终端的帧获取请求之后,确定拉取位置参数,进而根据拉取位置参数确定多媒体资源的起始帧,从起始帧开始将多媒体资源的媒体帧逐帧发送至终端。需要说明的是,每个帧获取请求可以对应于某一码率,当终端自身的网络带宽情况发生变化时,可以适应性调整对应的码率,重新发送与调整后的码率对应的帧获取请求,从而能够达到自适应调整多媒体资源码率的效果。FAS标准能够实现帧级传输、降低端到端延迟,只有码率发生切换时才需要发送新的帧获取请求,极大减小请求数量,降低资源传输过程的通信开销。
四、直播与点播
直播:多媒体资源是实时录制的,主播用户通过主播终端将媒体流“推流”(指基于流式传输方式推送)到服务器上,观众用户在观众终端上触发进入主播用户的直播界面之后,将媒体流从服务器“拉流”(指基于流式传输方式拉取)到观众终端,观众终端解码并播放多媒体资源,从而实时地进行视频播放。
点播:也称为Video On Demand(VOD),多媒体资源预存在服务器上,服务器能够根据观众用户的要求来提供观众用户指定的多媒体资源,具体地,观众终端向服务器发送点播请求,服务器查询到点播请求所指定的多媒体资源之后,将多媒体资源发送至观众终端,也即是说,观众用户能够选择性地播放某个特定的多媒体资源。
直观地来讲,点播的内容可以任意控制播放进度,而直播则不然,直播的内容播放速度取决于主播用户的实时直播进度。
图1是根据一示例性实施例示出的一种资源传输方法的实施环境示意图,参见图1,在该实施环境中可以包括至少一个终端101和服务器102,其中服务器102也即是一种计算机设备,下面进行详述:
该至少一个终端101,用于进行多媒体资源传输,在每个终端上可以安装有媒体编解码组件以及媒体播放组件,该媒体编解码组件用于在接收多媒体资源(例如分片传输的资源包、帧级传输的媒体帧)之后进行多媒体资源的解码,该媒体播放组件用于在解码多媒体资源之后进行多媒体资源的播放。
按照用户身份的不同,该至少一个终端101可以划分为主播终端以及观众终端,主播终端对应于主播用户,观众终端对应于观众用户,需要说明的是,对同一个终端而言,该终端即可以是主播终端,也可以是观众终端,比如,用户在录制直播时该终端为主播终端,用户在观看直播时该终端为观众终端。
该至少一个终端101和服务器102可以通过有线网络或无线网络相连。
该服务器102,用于提供待传输的多媒体资源,服务器102可以包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。可选地,服务器102可以承担主要计算工作,至少一个终端101可以承担次要计算工作;或者,服务器102承担次要计算工作,至少一个终端101承担主要计算工作;或者,至少一个终端101和服务器102两者之间采用分布式计算架构进行协同计算。
在一个示例性场景中,该服务器102可以是集群式的CDN(Content DeliveryNetwork,内容分发网络)服务器,CDN服务器包括中心平台以及部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使得用户所在终端能够依靠当地的边缘服务器来就近获取所需内容(即多媒体资源),从而降低网络拥塞,提升终端访问的响应速度和命中率。
换言之,CDN服务器在终端与中心平台之间增加了一个缓存机制,该缓存机制也即是部署在不同地理位置的边缘服务器(比如WEB服务器),在性能优化时,中心平台会根据终端与边缘服务器的距离远近,调度与终端之间距离最近的边缘服务器来向终端提供服务,能够更加有效地向终端发布内容。
本公开实施例所涉及的多媒体资源,包括但不限于:视频资源、音频资源、图像资源或者文本资源中至少一项,本公开实施例不对多媒体资源的类型进行具体限定。比如,该多媒体资源为网络主播的直播视频流,或者为预存在服务器上的历史点播视频,或者为电台主播的直播音频流,或者为预存在服务器上的历史点播音频。
可选地,至少一个终端101中每个终端的设备类型包括但不限于:电视机、智能手机、智能音箱、车载终端、平板电脑、电子书阅读器、MP3(Moving Picture Experts GroupAudio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机或者台式计算机中的至少一种。以下实施例,以终端包括智能手机来进行举例说明。
本领域技术人员可以知晓,上述至少一个终端101的数量可以仅为一个,或者至少一个终端101的数量为几十个或几百个,或者更多数量。本公开实施例对至少一个终端101的数量和设备类型不加以限定。
图2是本公开实施例提供的一种FAS框架的原理性示意图,请参考图2,本公开实施例提供一种FAS(基于流式的多码率自适应)框架,在该框架内,至少一个终端101与服务器102之间通过FAS协议进行多媒体资源传输。
以任一终端为例进行说明,在终端上可以安装有应用程序(亦称为FAS客户端),该应用程序用于浏览多媒体资源,例如,该应用程序可以为短视频应用、直播应用、视频点播应用、社交应用、购物应用等,本公开实施例不对应用程序的类型进行具体限定。
用户可以在终端上启动应用程序,显示资源推送界面(例如应用程序的首页或者功能界面),在该资源推送界面中包括至少一个多媒体资源的缩略信息,该缩略信息包括标题、简介、发布者、海报、预告片或者精彩片段中至少一项,响应于用户对任一多媒体资源的缩略信息的触控操作,终端可以从资源推送界面跳转至资源播放界面,在该资源播放界面中包括该多媒体资源的播放选项,响应于用户对该播放选项的触控操作,终端从服务器中下载该多媒体资源的媒体描述文件(Media Presentation Description,MPD),基于该媒体描述文件,确定多媒体资源的地址信息,向服务器发送携带该地址信息的帧获取请求(或称为FAS请求),使得服务器基于本公开实施例所提供的FAS请求的处理规范,对该帧获取请求进行解析和响应,服务器定位到该多媒体资源的媒体帧(连续的媒体帧可以构成媒体流)之后,向终端返回该多媒体资源的媒体帧(也即向终端返回媒体流)。终端接收到媒体流之后,调用媒体编解码组件对媒体流进行解码,得到解码后的媒体流,调用媒体播放组件播放解码后的媒体流。
需要说明的是,由于服务器在对多媒体资源进行转码之后,可能会形成多种码率的多媒体资源,此时服务器可以为不同码率的多媒体资源分配不同的地址信息,将各种码率的多媒体资源的地址信息均记录在MPD中,终端下载MPD之后,可以在不同时刻向服务器发送携带不同地址信息的帧获取请求,那么服务器会以不同的码率返回对应的多媒体资源的媒体帧。
在上述过程中,通过不同的地址信息来指定不同的码率,此外由于不同的拉取位置参数能够指定多媒体资源的不同起始拉取位置,那么在帧获取请求中规定了起始拉取位置和码率(若缺省,则服务器会配置默认值)之后,若在播放过程中需要进行码率切换,终端只需要再次发送新的帧获取请求,服务器能够随时地从起始帧开始按照另一码率向终端发送媒体流,也即终端能够动态地从任一起始帧开始拉取另一码率的媒体流,这样保证了FAS框架的动态切换码率机制。
在一个示例性场景中,终端在启播(开始播放)时确定本次所欲请求多媒体资源的目标码率,在MPD中索引到目标码率的多媒体资源的目标地址信息,向服务器发送携带目标地址信息的帧获取请求,从而能够在帧获取请求中指定终端本次所欲请求多媒体资源的目标码率,服务器按照目标码率返回多媒体资源的媒体帧。
在上述场景中,当终端当前的网络带宽情况发生波动的时候,终端可以基于自适应策略,适应性调整与当前网络带宽情况相匹配的待切换码率,从MPD中索引到待切换码率的多媒体资源的待切换地址信息,终端可以断开当前码率的媒体流传输链接,向服务器发送携带待切换地址信息的帧获取请求,服务器按照待切换码率返回多媒体资源的媒体帧,建立基于待切换码率的媒体流传输链接,从而完成一次自适应码率的无缝切换。
在一些实施例中,终端也可以不断开当前码率的媒体流传输链接,而是直接重新发起携带待切换地址信息的帧获取请求,建立基于待切换码率的媒体流传输链接(用于传输新的媒体流),将原有的媒体流作为备用流,一旦新的媒体流出现传输异常,那么可以继续播放备用流,从而能够在播放过程中动态调整媒体流的码率,优化了终端的播放效果。
在上述FAS框架中,能够达到以任一起始帧为起始拉取位置的、帧级别的媒体流传输,服务器无需对多媒体资源进行分片传输,大大降低了资源传输过程的延时,提升了资源传输的实时性,提升了资源传输效率。此外,提供了一种自适应调整码率的机制,能够在多媒体资源的播放过程中,自适应地进行无缝的码率切换,优化了资源传输过程的处理逻辑。在以下实施例中,将对FAS框架内服务器的FAS请求处理规范进行详细介绍。
图3是根据一示例性实施例示出的一种资源传输方法的流程图,参见图3,该资源传输方法应用于计算机设备,以计算机设备为上述实施环境涉及的FAS框架中的服务器为例进行说明。
在步骤301中,服务器响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,该帧获取请求用于请求传输该多媒体资源的媒体帧,该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置。
在步骤302中,服务器基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧。
在步骤303中,服务器从该起始帧开始发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳。
本公开实施例提供的方法,通过响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,由于该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置,从而可以基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧,从该起始帧开始发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳,这样能够从起始帧开始进行帧级别的媒体流传输,无需对多媒体资源进行分片传输,也就不必在等待一个完整的资源片段到达之后才进行资源传输,因此大大降低了资源传输过程的延时,提升了资源传输的实时性,提升了资源传输效率。
在一种可能实施方式中,基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧包括:
获取该多媒体资源的音频参数,该音频参数用于表示该媒体帧是否为音频帧;
基于该音频参数和该拉取位置参数,确定目标时间戳;
基于该目标时间戳,确定该多媒体资源的起始帧。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数为默认值,且该音频参数为默认值或该音频参数为假,将最大时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数为默认值,且该音频参数为真,将最大音频时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数等于0,且该音频参数为默认值或该音频参数为假,将最大时间戳确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数等于0,且该音频参数为真,将最大音频时间戳确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数小于0,且该音频参数为默认值或该音频参数为假,将最大时间戳减去该拉取位置参数的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数小于0,且该音频参数为真,将最大音频时间戳减去该拉取位置参数的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数大于0,且该音频参数为默认值或该音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数大于0,且该音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为该目标时间戳。
在一种可能实施方式中,基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数大于0,且缓存区中未发生时间戳回退时,将该拉取位置参数确定为该目标时间戳。
在一种可能实施方式中,基于该目标时间戳,确定该多媒体资源的起始帧包括:
若该当前有效缓存区中存在目标媒体帧,将该目标媒体帧确定为该起始帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
在一种可能实施方式中,基于该目标时间戳,确定该多媒体资源的起始帧包括:
若该当前有效缓存区中不存在目标媒体帧,进入等待状态,直到该目标媒体帧写入该当前有效缓存区时,将该目标媒体帧确定为该起始帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
在一种可能实施方式中,将该拉取位置参数确定为该目标时间戳之后,该方法还包括:
若该当前有效缓存区中不存在目标媒体帧,且该目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
在一种可能实施方式中,该方法还包括:
若缓存区中的媒体帧序列中媒体帧的时间戳呈非单调递增,确定该缓存区发生时间戳回退;否则,确定该缓存区未发生时间戳回退,其中,该媒体帧序列为该缓存区中已缓存的多个媒体帧所构成的序列。
在一种可能实施方式中,该方法还包括:
若该缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,其中,该关键帧序列为该缓存区中已缓存的多个关键帧所构成的序列;
若该缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,其中,该音频帧序列为该缓存区中已缓存的多个音频帧所构成的序列。
在一种可能实施方式中,确定该缓存区发生时间戳回退之后,该方法还包括:
将最后一个单调递增阶段所包含的各个媒体帧确定为当前有效缓存区内的资源。
在一种可能实施方式中,基于该目标时间戳,确定该多媒体资源的起始帧包括:
将当前有效缓存区中时间戳最接近该目标时间戳的媒体帧确定为该起始帧。
在一种可能实施方式中,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳。
在一种可能实施方式中,响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数包括:
若该帧获取请求携带拉取位置参数,解析该帧获取请求得到该拉取位置参数;
若该帧获取请求缺省拉取位置参数,将该拉取位置参数配置为默认值。
在一种可能实施方式中,从该起始帧开始发送该多媒体资源的媒体帧包括:
基于该帧获取请求,解析得到该多媒体资源的地址信息;
从该起始帧开始发送该地址信息所指示的多媒体资源的媒体帧。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
图4是根据一示例性实施例示出的一种资源传输方法的交互流程图,如图4所示,该资源传输方法可以应用于上述实施环境涉及的FAS框架中,该实施例包括以下步骤。
在步骤401中,终端向服务器发送多媒体资源的帧获取请求,该帧获取请求用于请求传输该多媒体资源的媒体帧。
其中,终端上可以安装有应用程序,该应用程序用于浏览多媒体资源,例如,该应用程序可以包括短视频应用、直播应用、视频点播应用、社交应用或者购物应用中至少一项,本公开实施例不对应用程序的类型进行具体限定。
本公开实施例所涉及的多媒体资源,包括但不限于:视频资源、音频资源、图像资源或者文本资源中至少一项,本公开实施例不对多媒体资源的类型进行具体限定。比如,该多媒体资源为网络主播的直播视频流,或者为预存在服务器上的历史点播视频,或者为电台主播的直播音频流,或者为预存在服务器上的历史点播音频。
在上述过程中,用户可以在终端上启动应用程序,该应用程序显示资源推送界面,例如该资源推送界面可以是应用程序的首页或者功能界面,本公开实施例不对资源推送界面的类型进行具体限定。在该资源推送界面中可以包括至少一个多媒体资源的缩略信息,该缩略信息包括多媒体资源的标题、简介、海报、预告片或者精彩片段中至少一项。用户在浏览资源推送界面的过程中,可以点击感兴趣的多媒体资源的缩略信息,响应于用户对该多媒体资源的缩略信息的触控操作,终端可以从资源推送界面跳转至资源播放界面。
在该资源播放界面中可以包括播放区域和评论区域,在播放区域内可以包括该多媒体资源的播放选项,在评论区域内可以包括其他用户针对该多媒体资源的观看评论。用户在想要观看多媒体资源时,可以点击资源播放界面中的播放选项,终端响应于用户对播放选项的触控操作,从服务器中下载该多媒体资源的MPD,然后终端确定目标码率,从该MPD中获取该目标码率的多媒体资源的目标地址信息,生成携带目标地址信息的帧获取请求(FAS请求),向服务器发送携带目标地址信息的帧获取请求。
在一些实施例中,MPD文件格式可以为JSON(JavaScript Object Notation,JS对象简谱),也可以为其他脚本格式,本公开实施例不对MPD文件格式进行具体限定。
在一个示例性场景中,MPD文件中可以包括版本号(@version)和媒体描述集合(@adaptationSet),还可以包括服务类型(@type)、用于表示是否打开自适应功能的功能选项(@hideAuto)或者用于表示是否在启播时默认打开自适应功能的功能选项(@autoDefaultSelect)中至少一项,本公开实施例不对MPD文件承载的内容进行具体限定。
其中,版本号可以包括该媒体描述文件的版本号或者资源传输标准(FAS标准)的版本号中至少一项。
其中,该媒体描述集合用于表示多媒体资源的元信息,该媒体描述集合可以包括多个媒体描述元信息,每个媒体描述元信息对应于一种码率的多媒体资源,每个媒体描述元信息可以包括该媒体描述元信息所对应码率的多媒体资源的画面组长度(@gopDuration)以及属性信息(@representation)。
画面组(Group Of Pictures,GOP)长度是指两个关键帧(Intra-coded picture,帧内编码图像帧,也称为“I帧”)之间的距离。
每个属性信息可以包括多媒体资源的标识信息(@id,独一无二的标识符)、多媒体资源的编码方式(@codec,遵从的编解码标准)、多媒体资源所支持的码率(@bitrate,资源传输时单位时间内传送的数据位数)以及该码率的多媒体资源的地址信息(@url,某一码率的多媒体资源对外提供的URL或域名,URL是指统一资源定位符,英文全称为:UniformResource Locator),当然,每个属性信息还可以包括多媒体资源的质量类型(@qualityType,包括分辨率、帧率等质量评价指标)、多媒体资源的隐藏选项(@hiden,用于表示某一码率的多媒体资源是否外显,也即用户是否能够手动该码率的多媒体资源)、用于表示多媒体资源是否相对于自适应功能可见的功能选项(@enableAdaptive,指自适应功能能否选中某一码率的多媒体资源)或者默认播放功能选项(@defaultSelect,指是否在启播时默认播放某一码率的多媒体资源)中至少一项。
其中,服务类型用于指定多媒体资源的业务类型,包括直播或者点播中至少一项。
在确定目标码率时,终端可以向用户提供码率选择列表,用户在点击码率选择列表中任一数值时,触发生成携带该数值的码率选择指令,终端响应于码率选择指令,将该码率选择指令所携带的数值确定为目标码率。
在一些实施例中,终端还可以通过自适应功能,将目标码率调整为与当前的网络带宽信息对应的码率,在进行自适应调整的过程中,除了当前的网络带宽信息之外,还可以结合终端的播放状态信息,动态选择播放效果最佳的目标码率,从而在多媒体资源的卡顿率、清晰度以及平滑性之间取得折中。
在一些实施例中,上述帧获取请求中除了携带目标地址信息之外,还可以携带音频参数或者拉取位置参数中至少一项,分别在下述步骤402和403进行介绍。当然,上述帧获取请求中也可以不携带音频参数以及拉取位置参数,此时两种参数均缺省,服务器会分配配置两种参数的默认值,将在下述步骤404中进行详述。
在步骤402中,服务器响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置。
其中,该拉取位置参数(@fasSpts)用于指示服务器具体从哪帧开始发送媒体流,拉取位置参数的数据类型可以为int64_t类型,当然,也可以为其他数据类型,本公开实施例不对拉取位置参数的数据类型进行具体限定。在帧获取请求中,拉取位置参数可以等于0、大于0、小于0或者缺省,在不同的取值情况下会对应于服务器不同的处理逻辑,将在下述步骤404中进行详述。
在一些实施例中,若该帧获取请求携带拉取位置参数,服务器可以解析该帧获取请求得到该拉取位置参数,这种情况下终端在帧获取请求中指定了拉取位置参数,服务器可以直接对帧获取请求的@fasSpts字段进行解析,得到拉取位置参数。
在一些实施例中,若该帧获取请求缺省拉取位置参数,服务器将该拉取位置参数配置为默认值,这种情况下终端并未在帧获取请求中指定拉取位置参数,那么服务器为其配置默认值,令@fasSpts=defaultSpts。这里的默认值可以由服务器根据业务场景自行配置,比如,在直播业务场景下,可以将defaultSpts设置为0,在点播业务场景下,可以将defaultSpts设置为上一次结束观看时历史媒体帧的PTS(Presentation Time Stamp,显示时间戳),若缓存中未记录历史媒体帧的PTS,那么将defaultSpts设置为首个媒体帧的PTS。
在步骤403中,服务器获取该多媒体资源的音频参数,该音频参数用于表示该多媒体资源的媒体帧是否为音频帧。
其中,该音频参数(@onlyAudio)用于指示媒体流的拉取模式,若设定为true,表示服务器传输至终端的媒体帧为音频帧,俗称为“纯音频模式”,否则,若设定为false,表示服务器传输至终端的媒体帧为音视频帧,俗称为“非纯音频模式”。在帧获取请求中,音频参数可以为真、假或者缺省,在不同的取值情况下会对应于服务器不同的处理逻辑,将在下述步骤404中进行详述。
在一些实施例中,若该帧获取请求携带音频参数,服务器可以解析该帧获取请求得到该音频参数,这种情况下终端在帧获取请求中指定了音频参数,服务器可以直接对帧获取请求的@onlyAudio字段进行解析,得到音频参数。
在一些实施例中,若该帧获取请求缺省音频参数,服务器将该音频参数配置为默认值,这种情况下终端并未在帧获取请求中指定音频参数,那么服务器为其配置默认值。这里的默认值可以由服务器根据业务场景自行配置,比如,在提供视频业务时,将默认值设置为假,也即令@onlyAudio=false,或者,在仅提供音频业务时,将默认值设置为真,也即令@onlyAudio=true。需要说明的是,在本公开实施例中,仅以默认值为假(false)为例进行说明,根据默认值的不同,服务端的处理逻辑可以进行适应性调整,后文不做赘述。
在步骤404中,服务器基于该音频参数和该拉取位置参数,确定目标时间戳。
在一些实施例中,在确定目标时间戳之前,服务器可以通过执行下述步骤404A-404B来刷新当前有效缓存区:
404A、若缓存区中的媒体帧序列中媒体帧的时间戳呈非单调递增,服务器确定该缓存区发生时间戳回退。
否则,若缓存区中的媒体帧序列中媒体帧的时间戳呈单调递增,那么服务器可以确定该缓存区未发生时间戳回退。其中,媒体帧序列为缓存区中已缓存的多个媒体帧所构成的序列。
上述时间戳回退现象是指缓存区内的媒体帧并非按照时间戳单调递增的顺序进行存放,此时缓存区中存在冗余的媒体帧,这种现象通常容易发生在直播业务场景中,主播终端推流到服务器的过程中,由于网络波动、延时等原因,先发送的媒体帧有可能反而较晚到达服务器,致使缓存区内媒体帧序列中媒体帧的时间戳呈非单调递增,引发时间戳回退现象,另外,为了避免丢包问题,主播终端通常还会将各个媒体帧进行多次发送,这种冗余多发机制也会致使缓存区内媒体帧序列中媒体帧的时间戳呈非单调递增,引发时间戳回退现象。
在确定媒体帧序列中媒体帧的时间戳是否呈非单调递增时,服务器只需要从时间戳最小的媒体帧开始,按照缓存区内媒体帧序列的存放顺序,遍历是否存在媒体帧的时间戳大于下一媒体帧的时间戳,若存在任一媒体帧的时间戳大于下一媒体帧的时间戳,确定媒体帧序列中媒体帧的时间戳呈非单调递增,确定缓存区发生时间戳回退,否则,若所有媒体帧的时间戳均小于或等于下一媒体帧的时间戳,确定媒体帧序列中媒体帧的时间戳呈单调递增,确定缓存区未发生时间戳回退。
例如,假设缓存区内媒体帧序列中媒体帧的时间戳分别为[1001,1002,1003,1004,1005…],省略部分的媒体帧的时间戳呈递增,此时媒体帧序列中媒体帧的时间戳呈单调递增,缓存区未发生时间戳回退现象。又比如,假设缓存区内媒体帧序列中媒体帧的时间戳分别为[1001,1002,1003,1001,1002,1003,1004…],省略部分的媒体帧的时间戳呈递增,此时由于第3个媒体帧的时间戳(PTS3=1003)大于第4个媒体帧的时间戳(PTS4=1001),媒体帧序列中媒体帧的时间戳呈非单调递增,缓存区发生时间戳回退现象。
在一些实施例中,可以对视频资源和音频资源进行分别讨论:对视频资源而言,判断媒体帧序列中媒体帧的时间戳是否呈非单调递增时,可以仅考虑视频资源的关键帧(I帧)序列中关键帧的时间戳是否呈非单调递增;对音频资源而言,判断媒体帧序列中媒体帧的时间戳是否呈非单调递增时,可以考虑音频资源的音频帧序列中音频帧的时间戳是否呈非单调递增。
也即是说,若该缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,其中,该关键帧序列为缓存区中已缓存的多个关键帧所构成的序列;若该缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,其中,该音频帧序列为缓存区中已缓存的多个音频帧所构成的序列。
这是由于I帧的编解码不需要参考其他图像帧,仅利用本帧信息即可实现,而相对地,P帧(Predictive-coded picture,预测编码图像帧)和B帧(Bidirectionallypredicted picture,双向预测编码图像帧)的编解码均需要参考其他图像帧,仅利用本帧信息无法完成编解码。对视频资源而言,是在I帧解码完成之后,基于I帧来进行P帧和B帧的解码,那么即使各个I帧对应的P帧和B帧呈非单调递增,只要保证I帧序列(仅考虑I帧的PTS序列)呈单调递增,那么可以认为缓存区未发生时间戳回退,反之,一旦I帧序列呈非单调递增,那么可以确定缓存区发生时间戳回退。当然,如果缓存区里没有视频资源,那么直接对所有音频帧的PTS序列进行遍历判断即可,这里不做赘述。
在一些实施例中,由于时间戳回退现象可能不止发生一次,也即是说,在媒体帧序列中媒体帧的时间戳里可以划分出多个单调递增阶段,在每个阶段内部的媒体帧的时间戳呈单调递增,但是在不同阶段之间的媒体帧的时间戳呈非单调递增,这时缓存区中存在很多冗余无效的媒体帧,服务器可以通过执行下述步骤404B在缓存区中确定当前有效缓存区。
404B、服务器将最后一个单调递增阶段所包含的各个媒体帧确定为当前有效缓存区内的资源。
在上述过程中,服务器从媒体帧序列中确定最后一个单调递增阶段中首个媒体帧,将媒体帧序列中从上述首个媒体帧开始到具有最大时间戳的媒体帧(相当于最新的媒体帧)之间的所有媒体帧确定为当前有效缓存区,这样可以保证当前有效缓存区内的媒体帧呈单调递增。
例如,假设缓存区内媒体帧序列中媒体帧的时间戳分别为[1001,1002,1003,1001,1002,1003,1004…],省略部分的媒体帧的时间戳呈递增,此时缓存区发生时间戳回退,可以看出最后一个单调递增阶段的首个媒体帧为第4个媒体帧,那么将从第4个媒体帧开始到最新的媒体帧之间的所有媒体帧确定为当前有效缓存区。又比如,假设缓存区内媒体帧序列中媒体帧的时间戳分别为[1001,1002,1003,1001,1002,1003,1001…],省略部分的媒体帧的时间戳呈递增,缓存区发生时间戳回退,可以看出最后一个单调递增阶段的首个媒体帧为第7个媒体帧,那么将从第7个媒体帧开始到最新的媒体帧之间的所有媒体帧确定为当前有效缓存区。
在一些实施例中,可以对视频资源和音频资源进行分别讨论:若缓存区内包括视频资源,对视频资源而言,服务器可以以视频资源的I帧作为计算点,从最后一个单调递增阶段的首个关键帧到最新的视频帧之间的所有媒体帧作为当前有效缓存区,其中,最新的视频帧的时间戳可以表示为latestVideoPts;若缓存区内不包括视频资源,对音频资源而言,服务器可以以音频帧作为计算点,从最后一个单调递增阶段的首个音频帧到最新的音频帧之间的所有媒体帧作为当前有效缓存区,其中,最新的音频帧的时间戳可以表示为latestAudioPts。
可选地,更新当前有效缓存区的操作可以是定时触发的,也可以由技术人员手动触发,当然,还可以每当接收到帧获取请求时进行一次更新,这种方式称为“被动触发”,本公开实施例不对更新当前有效缓存区的触发条件进行具体限定。
通过上述步骤404A-404B,能够及时发现缓存区内的时间戳回退现象,并基于针对时间戳回退现象进行处理,更新当前有效缓存区,避免在后续传输媒体帧的过程中出现异常。
图5是本公开实施例提供的一种确定目标时间戳的原理性示意图,请参考图5,示出了服务器在不同拉取位置参数以及音频参数的取值情况下,分别具有不同的处理逻辑,以下,将对服务器的处理逻辑进行介绍,由于拉取位置参数的取值情况可以分为四种:默认值、等于0、小于0以及大于0,下面针对这四种情况进行分别说明。
情况一、拉取位置参数为默认值
1):若拉取位置参数为默认值,且音频参数为默认值或音频参数为假,服务器将最大时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为目标时间戳。
其中,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳latestVideoPts;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳latestAudioPts。
上述过程是指帧获取请求中@fasSpts(拉取位置参数)缺省的情况下,服务器会为拉取位置参数配置默认值,令@fasSpts=defaultSpts。此时,如果帧获取请求中@onlyAudio(音频参数)也缺省,服务器会为音频参数配置默认值(音频参数的默认值为false),令@onlyAudio=false,或者,帧获取请求自身的@onlyAudio字段携带false值,也即帧获取请求指定@onlyAudio=false,此时服务器的处理规则如下:
若当前有效缓存区中包括视频资源,服务器将latestVideoPts–|defaultSpts|所得的数值确定为目标时间戳;若当前有效缓存区中不包括视频资源,服务器将latestAudioPts–|defaultSpts|所得的数值确定为目标时间戳。
2):若拉取位置参数为默认值,且音频参数为真,将最大音频时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为目标时间戳。
上述过程是指帧获取请求中@fasSpts(拉取位置参数)缺省的情况下,服务器会为拉取位置参数配置默认值,令@fasSpts=defaultSpts。此时,如果帧获取请求的@onlyAudio字段携带true值,也即帧获取请求指定@onlyAudio=true(纯音频模式,仅传输音频流),此时服务器的处理规则如下:服务器将latestAudioPts–|defaultSpts|所得的数值确定为目标时间戳。
情况二、拉取位置参数等于0
1):若拉取位置参数等于0,且音频参数为默认值或音频参数为假,将最大时间戳确定为目标时间戳。
其中,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳latestVideoPts;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳latestAudioPts。
上述过程是指帧获取请求中@fasSpts字段携带0值(@fasSpts=0)的情况下,此时,如果帧获取请求中@onlyAudio(音频参数)也缺省,服务器会为音频参数配置默认值(音频参数的默认值为false),令@onlyAudio=false,或者,帧获取请求中@onlyAudio字段携带false值(帧获取请求指定@onlyAudio=false),此时服务器的处理规则如下:
若当前有效缓存区中包括视频资源,服务器将latestVideoPts确定为目标时间戳;若当前有效缓存区中不包括视频资源,服务器将latestAudioPts确定为目标时间戳。
2):若拉取位置参数等于0,且音频参数为真,将最大音频时间戳确定为目标时间戳。
上述过程是指帧获取请求中@fasSpts字段携带0值(@fasSpts=0)的情况下,如果帧获取请求中@onlyAudio字段携带true值(帧获取请求指定@onlyAudio=true),也即是纯音频模式、仅传输音频流,此时服务器的处理规则如下:服务器将latestAudioPts确定为目标时间戳。
情况三、拉取位置参数小于0
1):若拉取位置参数小于0,且音频参数为默认值或音频参数为假,将最大时间戳减去该拉取位置参数的绝对值所得的数值确定为目标时间戳。
其中,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳latestVideoPts;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳latestAudioPts。
上述过程是指帧获取请求中@fasSpts字段携带小于0的值(@fasSpts<0)的情况下,此时,如果帧获取请求中@onlyAudio(音频参数)也缺省,服务器会为音频参数配置默认值(音频参数的默认值为false),令@onlyAudio=false,或者,帧获取请求中@onlyAudio字段携带false值(帧获取请求指定@onlyAudio=false),此时服务器的处理规则如下:
若当前有效缓存区中包括视频资源,服务器将latestVideoPts-|@fasSpts|确定为目标时间戳;若当前有效缓存区中不包括视频资源,服务器将latestAudioPts-|@fasSpts|确定为目标时间戳。
2):若拉取位置参数小于0,且音频参数为真,将最大音频时间戳减去该拉取位置参数的绝对值所得的数值确定为目标时间戳。
上述过程是指帧获取请求中@fasSpts字段携带小于0的值(@fasSpts<0)的情况下,此时,如果帧获取请求中@onlyAudio字段携带true值(帧获取请求指定@onlyAudio=true),也即是纯音频模式、仅传输音频流,此时服务器的处理规则如下:服务器将latestAudioPts-|@fasSpts|确定为目标时间戳。
情况四、拉取位置参数大于0
1):若拉取位置参数大于0,且音频参数为默认值或音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为目标时间戳。
其中,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳latestVideoPts;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳latestAudioPts。
上述过程是指帧获取请求中@fasSpts字段携带大于0的值(@fasSpts>0)的情况下,此时,如果帧获取请求中@onlyAudio(音频参数)也缺省,服务器会为音频参数配置默认值(音频参数的默认值为false),令@onlyAudio=false,或者,帧获取请求中@onlyAudio字段携带false值(帧获取请求指定@onlyAudio=false),此时服务器的处理规则如下:
在缓存区中发生时间戳回退时,a)若当前有效缓存区中包括视频资源,服务器将latestVideoPts确定为目标时间戳;b)若当前有效缓存区中不包括视频资源,服务器将latestAudioPts确定为目标时间戳。
2):若拉取位置参数大于0,且音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为目标时间戳。
上述过程是指帧获取请求中@fasSpts字段携带大于0的值(@fasSpts>0)的情况下,此时,如果帧获取请求中@onlyAudio字段携带true值(帧获取请求指定@onlyAudio=true),也即是纯音频模式、仅传输音频流,服务器的处理规则如下:服务器将latestAudioPts确定为目标时间戳。
3):若拉取位置参数大于0,且音频参数为默认值或音频参数为假,在缓存区中未发生时间戳回退时,将该拉取位置参数确定为目标时间戳。
上述过程是指帧获取请求中@fasSpts字段携带大于0的值(@fasSpts>0)的情况下,此时,如果帧获取请求中@onlyAudio(音频参数)也缺省,服务器会为音频参数配置默认值(音频参数的默认值为false),令@onlyAudio=false,或者,帧获取请求中@onlyAudio字段携带false值(帧获取请求指定@onlyAudio=false),此时服务器的处理规则如下:在缓存区中未发生时间戳回退时,服务器将@fasSpts确定为目标时间戳。
4):若拉取位置参数大于0,且音频参数为真,在缓存区中未发生时间戳回退时,将该拉取位置参数确定为目标时间戳。
上述过程是指帧获取请求中@fasSpts字段携带大于0的值(@fasSpts>0)的情况下,此时,如果帧获取请求中@onlyAudio字段携带true值(帧获取请求指定@onlyAudio=true),也即是纯音频模式、仅传输音频流,服务器的处理规则如下:在缓存区中未发生时间戳回退时,服务器将@fasSpts确定为目标时间戳。
针对上述情况3)和4)的讨论,可以看出,若拉取位置参数大于0(@fasSpts>0),且缓存区中未发生时间戳回退时,不论音频参数为真、为假还是默认值,服务器均将拉取位置参数确定为目标时间戳。
在上述各个情况中,服务器判断是否发生时间戳回退的操作可以参见上述步骤404A,服务器更新当前有效缓存区的操作可以参见上述步骤404B,这里不做赘述。
在上述基础上,服务器在拉取位置参数的不同取值情况下,均能够执行对应的处理逻辑,从而确定出目标时间戳,该目标时间戳用于在下述步骤405中确定多媒体资源的起始帧。
在步骤405中,服务器基于该目标时间戳,确定该多媒体资源的起始帧。
在一些实施例中,服务器可以通过下述方式一确定起始帧:
方式一、服务器将当前有效缓存区中时间戳最接近该目标时间戳的媒体帧确定为起始帧。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,将视频资源中时间戳最接近该目标时间戳的关键帧(I帧)确定为起始帧;若当前有效缓存区中不包括视频资源,将时间戳最接近该目标时间戳的音频帧确定为起始帧。
可选地,在音频参数为真的情况下,服务器可以直接将时间戳最接近该目标时间戳的音频帧确定为起始帧。
具体地,可以包括下述几种示例性场景:
A):@fasSpts=defaultSpts,@onlyAudio缺省或@onlyAudio=false时,请参考上述步骤404情况一中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts–|defaultSpts|,服务器将PTS最接近latestVideoPts–|defaultSpts|的I帧作为起始帧;此外,若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts–|defaultSpts|,服务器将PTS最接近latestAudioPts–|defaultSpts|的音频帧作为起始帧。
B):@fasSpts=defaultSpts,@onlyAudio=true时,请参考上述步骤404情况一中的示例2),目标时间戳为latestAudioPts–|defaultSpts|,服务器将PTS最接近latestAudioPts–|defaultSpts|的音频帧作为起始帧。
C):@fasSpts=0,@onlyAudio缺省或@onlyAudio=false时,请参考上述步骤404情况二中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts,服务器将PTS最接近latestVideoPts的I帧作为起始帧;若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧作为起始帧。
D):@fasSpts=0,@onlyAudio=true时,请参考上述步骤404情况二中的示例2),目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧作为起始帧。
E):@fasSpts<0,@onlyAudio缺省或@onlyAudio=false时,请参考上述步骤404情况三中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts-|@fasSpts|,服务器将PTS最接近latestVideoPts-|@fasSpts|的I帧作为起始帧;反之,若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts-|@fasSpts|,服务器将PTS最接近latestAudioPts-|@fasSpts|的音频帧作为起始帧。
F):@fasSpts<0,@onlyAudio=true时,请参考上述步骤404情况三中的示例2),目标时间戳为latestAudioPts-|@fasSpts|,服务器可以将PTS最接近latestAudioPts-|@fasSpts|的音频帧作为起始帧。
G):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中发生时间戳回退时,请参考上述步骤404情况四中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts,服务器将PTS最接近latestVideoPts的I帧(最新的I帧)作为起始帧;若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧(最新的音频帧)作为起始帧。
H):@fasSpts>0,@onlyAudio=true,缓存区中发生时间戳回退时,请参考上述步骤404情况四中的示例2),目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧(最新的音频帧)作为起始帧。
以此类推,在@fasSpts>0时,针对上述步骤404情况四中的其余示例性讨论,在确定目标时间戳之后,服务器也可以通过上述方式一,将当前有效缓存区中时间戳最接近该目标时间戳的媒体帧确定为起始帧,这里不进行一一枚举。
在一些实施例中,在@fasSpts>0时,除了上述方式一之外,服务器还可以通过下述方式二来确定媒体帧:
方式二、若该当前有效缓存区中存在目标媒体帧,服务器将该目标媒体帧确定为起始帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,目标媒体帧是指视频资源内的I帧;若当前有效缓存区中不包括视频资源,目标媒体帧是指音频帧。
可选地,在音频参数为真的情况下,目标媒体帧是指音频帧。
具体地,可以包括下述几种示例性场景:
I):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中未发生时间戳回退时,请参考上述步骤404情况四中的示例3),此时目标时间戳为@fasSpts,若当前有效缓存区中包括视频资源,服务器可以从PTS最小的I帧开始,沿着PTS增大的方向逐个遍历,直到查询到第一个PTS≥@fasSpts的I帧(目标媒体帧),说明当前有效缓存区中存在目标媒体帧,服务器将上述目标媒体帧确定为起始帧;若当前有效缓存区内不包括视频资源,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,直到查询到第一个PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中存在目标媒体帧,服务器将上述目标媒体帧确定为起始帧。
J):@fasSpts>0,@onlyAudio=true,缓存区中未发生时间戳回退时,请参考上述步骤404情况四中的示例4),此时目标时间戳为@fasSpts,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,直到查询到第一个PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中存在目标媒体帧,服务器将上述目标媒体帧确定为起始帧。
上述方式二中,提供了在当前有效缓存区中能够查询到目标媒体帧时,服务器如何确定起始帧,然而,在一些实施例中,有可能在当前有效缓存区内并未查询到目标媒体帧,这种情况通常会出现在直播业务场景中,观众终端所指定拉取@fasSpts的帧获取请求先到达了服务器,而@fasSpts所对应的媒体帧(直播视频帧)还在推流阶段的传输过程中,此时服务器还可以通过下述方式三来确定起始帧。
方式三、若该当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,直到该目标媒体帧写入该当前有效缓存区时,将该目标媒体帧确定为起始帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,目标媒体帧是指视频资源内的I帧;若当前有效缓存区中不包括视频资源,目标媒体帧是指音频帧。
可选地,在音频参数为真的情况下,目标媒体帧是指音频帧。
具体地,可以包括下述几种示例性场景:
K):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中未发生时间戳回退时,请参考上述步骤404情况四中的示例3),此时目标时间戳为@fasSpts,若当前有效缓存区中包括视频资源,服务器可以从PTS最小的I帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的I帧之后查询不到满足PTS≥@fasSpts的I帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,等待第一个PTS≥@fasSpts的I帧(目标媒体帧)被写入当前有效缓存区时,将目标媒体帧确定为起始帧;若当前有效缓存区内不包括视频资源,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的音频帧之后查询不到满足PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,等待第一个PTS≥@fasSpts的音频帧(目标媒体帧)被写入当前有效缓存区时,将目标媒体帧确定为起始帧。
L):@fasSpts>0,@onlyAudio=true,缓存区中未发生时间戳回退时,请参考上述步骤404情况四中的示例4),此时目标时间戳为@fasSpts,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的音频帧之后查询不到满足PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,等待第一个PTS≥@fasSpts的音频帧(目标媒体帧)被写入当前有效缓存区时,将目标媒体帧确定为起始帧。
上述方式三中,提供了在当前有效缓存区中查询不到目标媒体帧时,服务器如何确定起始帧,在一些实施例中,有可能会由于异常情况的出现,导致帧获取请求中携带的@fasSpts是一个较大的异常值,若基于上述方式三进行处理,会导致很长的等待时间,在大数据场景下如果存在并发的帧获取请求发生异常情况,这些帧获取请求都会进入一个阻塞的等待状态,占用服务器的处理资源,那么会对服务器的性能造成极大的损失。
有鉴于此,服务器还可以设置一个超时阈值,从而通过下述方式四,基于超时阈值来确定是否需要返回拉取失败信息,一方面避免能够避免终端长时间的等待,一方面还能够避免由于等待而造成服务器的性能损失,下面对方式四进行详述。
方式四、若该当前有效缓存区中不存在目标媒体帧,且目标时间戳与最大时间戳之间的差值大于超时阈值,服务器发送拉取失败信息,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳latestVideoPts;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳latestAudioPts。
可选地,在音频参数为真的情况下,该最大时间戳为最大音频时间戳latestAudioPts。
假设超时阈值为timeoutPTS,超时阈值可以是任一大于或等于0的数值,超时阈值可以是一个服务器预设的数值,也可以由技术人员基于业务场景进行个性化的配置,本公开实施例不对超时阈值的获取方式进行具体限定,具体地,可以包括下述几种示例性场景:
M):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中未发生时间戳回退时,请参考上述步骤404情况四中的示例3),此时目标时间戳为@fasSpts,若当前有效缓存区中包括视频资源,服务器可以从PTS最小的I帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的I帧之后查询不到满足PTS≥@fasSpts的I帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器判断@fasSpts与latestVideoPts之间的差值是否大于timeoutPTS,若@fasSpts–latestVideoPts>timeoutPTS,服务器向终端发送拉取失败信息,否则,若@fasSpts–latestVideoPts≤timeoutPTS,服务器可以进入等待状态,也即是对应于上述方式三中示例K)对应情况下所执行的操作;若当前有效缓存区内不包括视频资源,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的音频帧之后查询不到满足PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器可以判断@fasSpts与latestAudioPts之间的差值是否大于timeoutPTS,若@fasSpts–latestAudioPts>timeoutPTS,服务器向终端发送拉取失败信息,否则,若@fasSpts–latestAudioPts≤timeoutPTS,服务器可以进入等待状态,也即是对应于上述方式三中示例K)对应情况下所执行的操作。
N):@fasSpts>0,@onlyAudio=true,缓存区中未发生时间戳回退时,请参考上述步骤404情况四中的示例4),此时目标时间戳为@fasSpts,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的音频帧之后查询不到满足PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器可以判断@fasSpts与latestAudioPts之间的差值是否大于timeoutPTS,若@fasSpts–latestAudioPts>timeoutPTS,服务器向终端发送拉取失败信息,否则,若@fasSpts–latestAudioPts≤timeoutPTS,服务器可以进入等待状态,也即是对应于上述方式三中示例L)对应情况下所执行的操作。
在上述方式三和方式四相结合,可以提供一种在@fasSpts>0且当前有效缓存区中不存在目标媒体帧时的异常处理逻辑,若目标时间戳与最大时间戳之间的差值小于或等于超时阈值,服务器通过方式三进入等待状态(等待处理模式),直到目标媒体帧到达时,将目标媒体帧确定为起始帧,否则,若目标时间戳与最大时间戳之间的差值大于超时阈值,服务器通过方式四发送拉取失败信息(错误处理模式),这时服务器是判定帧获取请求出错的,因此直接向终端返回拉取失败信息,该拉取失败信息可以是一个错误码的形式。
在上述步骤403-405中,服务器基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧,正是由于在帧获取请求中携带了拉取位置参数,使得服务器能够方便的确定在响应该帧获取请求的过程中,到底从哪个媒体帧开始以目标码率进行媒体帧的传输,提高了资源传输过程的灵活性,进一步地,在需要动态码率切换的场景下,只需要在帧获取请求中更换携带的地址信息(@url字段)以及拉取位置参数(@fasSpts字段),就可以实现从任一个指定的起始帧开始以新的码率进行媒体帧的传输,从而能够实现自适应地码率切换,能够优化终端的播放效果,改善用户的观看体验。
在步骤406中,服务器从该起始帧开始向终端发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳。
在上述步骤406中,服务器可以基于该帧获取请求,解析得到该多媒体资源的地址信息,从该起始帧开始发送该地址信息所指示的多媒体资源的媒体帧,可选地,由于帧获取请求所携带的地址信息与目标码率相对应,那么服务器可以从起始帧开始以目标码率来发送媒体流。
在上述过程中,服务器可以像流水一样源源不断的向终端发送媒体帧,可以形象地称为“媒体流传输”,基于FAS框架的媒体流传输不仅能够达到帧级传输,能够降低资源传输过程的延时,提升资源传输过程的实时性,还支持自适应调整码率,能够优化终端的播放效果,改善用户的观看体验。
在一个示例性场景中,若服务器为CDN服务器,那么该目标地址信息可以是一个域名,终端可以向CDN服务器的中心平台发送帧获取请求,中心平台调用DNS(Domain NameSystem,域名系统,本质上是一个域名解析库)对域名进行解析,可以得到域名对应的CNAME(别名)记录,基于终端的地理位置信息对CNAME记录再次进行解析,可以得到一个距离终端最近的边缘服务器的IP(Internet Protocol,网际互连协议)地址,这时中心平台将帧获取请求导向至上述边缘服务器,由边缘服务器响应于帧获取请求,以目标码率向终端提供多媒体资源的媒体帧,从而能够使得终端就近访问目标码率的多媒体资源,这样可以使得CDN服务器整体的负载较为均衡,那么CDN系统的性能也就更加稳定。
在一些实施例中,本公开实施例提供一种CDN服务器内部回源机制,在CDN系统中,有可能边缘服务器中无法提供帧获取请求所指定的多媒体资源,此时边缘服务器可以向上级节点设备回源拉取媒体流。
那么边缘服务器可以向上级节点设备发送回源拉取请求,上级节点设备响应于回源拉取请求,向边缘服务器返回对应的媒体流,再由边缘服务器向终端发送对应的媒体流。
在上述过程中,边缘服务器在获取回源拉取请求时,若终端发送的帧获取请求中携带@fasSpts字段,边缘服务器可以直接将帧获取请求确定为回源拉取请求,将回源拉取请求转发至上级节点设备,反之,若终端发送的帧获取请求中缺省@fasSpts字段,边缘服务器需要为@fasSpts字段配置默认值defaultSpts,进而在帧获取请求嵌入@fasSpts字段,将@fasSpts字段内所存储的数值置为defaultSpts,得到回源拉取请求。
可选地,该上级节点设备可以是第三方源站服务器,此时回源拉取请求必须携带@fasSpts字段,可选地,该上级节点设备也可以是CDN系统内部的节点服务器(比如中心平台或者分布式数据库系统的节点设备),若帧获取请求中携带@fasSpts字段,那么可以按照@fasSpts字段的实际值进行回源,否则,依据默认值@fasSpts=defaultSpts进行回源,本公开实施例不对边缘服务器的回源方式进行具体限定。
在步骤407中,终端接收多媒体资源的媒体帧,播放多媒体资源的媒体帧。
在上述过程中,若终端接收到多媒体资源的媒体帧(连续接收到的媒体帧即可构成媒体流),为了保证播放流畅性,终端可以将该媒体帧存入缓存区中,调用媒体编解码组件对媒体帧进行解码,得到解码后的媒体帧,调用媒体播放组件按照PTS从小到大的顺序来对缓存区内的媒体帧进行播放。
在解码过程中,终端可以从媒体描述文件的@codec字段中确定多媒体资源的编码方式,根据编码方式确定对应的解码方式,从而按照确定的解码方式对媒体帧进行解码。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本公开实施例提供的方法,通过响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,由于该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置,从而可以基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧,从该起始帧开始发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳,这样能够从起始帧开始进行帧级别的媒体流传输,无需对多媒体资源进行分片传输,也就不必在等待一个完整的资源片段到达之后才进行资源传输,因此大大降低了资源传输过程的延时,提升了资源传输的实时性,提升了资源传输效率。
图6是根据一示例性实施例示出的一种资源传输装置的逻辑结构框图。参照图6,该装置包括获取单元601、第一确定单元602以及发送单元603,下面进行介绍。
获取单元601,被配置为执行响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,该帧获取请求用于请求传输该多媒体资源的媒体帧,该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置;
第一确定单元602,被配置为执行基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧;
发送单元603,被配置为执行从该起始帧开始发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳。
本公开实施例提供的装置,通过响应于多媒体资源的帧获取请求,获取该多媒体资源的拉取位置参数,由于该拉取位置参数用于表示该多媒体资源的媒体帧的起始拉取位置,从而可以基于该多媒体资源的拉取位置参数,确定该多媒体资源的起始帧,从该起始帧开始发送该多媒体资源的媒体帧,其中,该媒体帧的时间戳大于或等于该起始帧的时间戳,这样能够从起始帧开始进行帧级别的媒体流传输,无需对多媒体资源进行分片传输,也就不必在等待一个完整的资源片段到达之后才进行资源传输,因此大大降低了资源传输过程的延时,提升了资源传输的实时性,提升了资源传输效率。
在一种可能实施方式中,该获取单元601还被配置为执行:获取该多媒体资源的音频参数,该音频参数用于表示该媒体帧是否为音频帧;
基于图6的装置组成,该第一确定单元602包括:
第一确定子单元,被配置为执行基于该音频参数和该拉取位置参数,确定目标时间戳;
第二确定子单元,被配置为执行基于该目标时间戳,确定该多媒体资源的起始帧。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数为默认值,且该音频参数为默认值或该音频参数为假,将最大时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数为默认值,且该音频参数为真,将最大音频时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数等于0,且该音频参数为默认值或该音频参数为假,将最大时间戳确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数等于0,且该音频参数为真,将最大音频时间戳确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数小于0,且该音频参数为默认值或该音频参数为假,将最大时间戳减去该拉取位置参数的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数小于0,且该音频参数为真,将最大音频时间戳减去该拉取位置参数的绝对值所得的数值确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数大于0,且该音频参数为默认值或该音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数大于0,且该音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为该目标时间戳。
在一种可能实施方式中,该第一确定子单元被配置为执行:
若该拉取位置参数大于0,且缓存区中未发生时间戳回退时,将该拉取位置参数确定为该目标时间戳。
在一种可能实施方式中,该第二确定子单元被配置为执行:
若该当前有效缓存区中存在目标媒体帧,将该目标媒体帧确定为该起始帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
在一种可能实施方式中,该第二确定子单元被配置为执行:
若该当前有效缓存区中不存在目标媒体帧,进入等待状态,直到该目标媒体帧写入该当前有效缓存区时,将该目标媒体帧确定为该起始帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
在一种可能实施方式中,该发送单元603还被配置为执行:
若该当前有效缓存区中不存在目标媒体帧,且该目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
在一种可能实施方式中,基于图6的装置组成,该装置还包括:
第二确定单元,被配置为执行若缓存区中的媒体帧序列中媒体帧的时间戳呈非单调递增,确定该缓存区发生时间戳回退;否则,确定该缓存区未发生时间戳回退,其中,该媒体帧序列为该缓存区中已缓存的多个媒体帧所构成的序列。
在一种可能实施方式中,该第二确定单元还被配置为执行:
若该缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,其中,该关键帧序列为该缓存区中已缓存的多个关键帧所构成的序列;
若该缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,其中,该音频帧序列为该缓存区中已缓存的多个音频帧所构成的序列。
在一种可能实施方式中,基于图6的装置组成,该装置还包括:
第三确定单元,被配置为执行将最后一个单调递增阶段所包含的各个媒体帧确定为当前有效缓存区内的资源。
在一种可能实施方式中,该第二确定子单元被配置为执行:
将当前有效缓存区中时间戳最接近该目标时间戳的媒体帧确定为该起始帧。
在一种可能实施方式中,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳。
在一种可能实施方式中,该获取单元601被配置为执行:
若该帧获取请求携带拉取位置参数,解析该帧获取请求得到该拉取位置参数;
若该帧获取请求缺省拉取位置参数,将该拉取位置参数配置为默认值。
在一种可能实施方式中,该发送单元603被配置为执行:
基于该帧获取请求,解析得到该多媒体资源的地址信息;
从该起始帧开始发送该地址信息所指示的多媒体资源的媒体帧。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该资源传输方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是本公开实施例提供的一种计算机设备的结构示意图,该计算机设备可以是FAS框架中的服务器,该计算机设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)701和一个或一个以上的存储器702,其中,该存储器702中存储有至少一条程序代码,该至少一条程序代码由该处理器701加载并执行以实现上述各个实施例提供的资源传输方法。当然,该计算机设备700还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备700还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括至少一条指令的存储介质,例如包括至少一条指令的存储器,上述至少一条指令可由计算机设备中的处理器执行以完成上述实施例中资源传输方法。可选地,上述存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以包括ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由计算机设备的处理器执行,以完成上述各个实施例提供的资源传输方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (40)
1.一种资源传输方法,所述方法应用于FAS框架中,其特征在于,包括:
响应于多媒体资源的帧获取请求,获取所述多媒体资源的拉取位置参数,所述帧获取请求用于请求传输所述多媒体资源的媒体帧,所述拉取位置参数用于表示所述多媒体资源的媒体帧的起始拉取位置,所述帧获取请求携带从所述多媒体资源的MPD中获取的目标码率的多媒体资源的目标地址信息;
基于所述多媒体资源的拉取位置参数和当前有效缓存区内的资源的最大时间戳,确定所述多媒体资源的起始帧,所述当前有效缓存区内的资源为基于缓存区中的媒体帧序列中媒体帧的时间戳呈非单调递增确定所述缓存区发生时间戳回退时,最后一个单调递增阶段所包含的各个媒体帧;
从所述起始帧开始发送所述多媒体资源的媒体帧,其中,所述媒体帧的时间戳大于或等于所述起始帧的时间戳。
2.根据权利要求1所述的资源传输方法,其特征在于,所述基于所述多媒体资源的拉取位置参数和当前有效缓存区内的资源的最大时间戳,确定所述多媒体资源的起始帧包括:
获取所述多媒体资源的音频参数,所述音频参数用于表示所述媒体帧是否为音频帧;
基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳;
基于所述目标时间戳,确定所述多媒体资源的起始帧。
3.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数为默认值,且所述音频参数为默认值或所述音频参数为假,将所述最大时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
4.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数为默认值,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
5.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数等于0,且所述音频参数为默认值或所述音频参数为假,将所述最大时间戳确定为所述目标时间戳。
6.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数等于0,且所述音频参数为真,将最大音频时间戳确定为所述目标时间戳。
7.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数小于0,且所述音频参数为默认值或所述音频参数为假,将所述最大时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
8.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数小于0,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
9.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数大于0,且所述音频参数为默认值或所述音频参数为假,在缓存区中发生时间戳回退时,将所述最大时间戳确定为所述目标时间戳。
10.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数大于0,且所述音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为所述目标时间戳。
11.根据权利要求2所述的资源传输方法,其特征在于,所述基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳包括:
若所述拉取位置参数大于0,且缓存区中未发生时间戳回退时,将所述拉取位置参数确定为所述目标时间戳。
12.根据权利要求11所述的资源传输方法,其特征在于,所述基于所述目标时间戳,确定所述多媒体资源的起始帧包括:
若所述当前有效缓存区中存在目标媒体帧,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
13.根据权利要求11所述的资源传输方法,其特征在于,所述基于所述目标时间戳,确定所述多媒体资源的起始帧包括:
若所述当前有效缓存区中不存在目标媒体帧,进入等待状态,直到所述目标媒体帧写入所述当前有效缓存区时,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
14.根据权利要求11所述的资源传输方法,其特征在于,所述将所述拉取位置参数确定为所述目标时间戳之后,所述方法还包括:
若所述当前有效缓存区中不存在目标媒体帧,且所述目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
15.根据权利要求1所述的资源传输方法,其特征在于,所述方法还包括:
若所述缓存区中的媒体帧序列中媒体帧的时间戳呈单调递增,确定所述缓存区未发生时间戳回退。
16.根据权利要求1所述的资源传输方法,其特征在于,所述方法还包括:
若所述缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述关键帧序列为所述缓存区中已缓存的多个关键帧所构成的序列;
若所述缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述音频帧序列为所述缓存区中已缓存的多个音频帧所构成的序列。
17.根据权利要求2至11任一项所述的资源传输方法,其特征在于,所述基于所述目标时间戳,确定所述多媒体资源的起始帧包括:
将所述当前有效缓存区中时间戳最接近所述目标时间戳的媒体帧确定为所述起始帧。
18.根据权利要求1所述的资源传输方法,其特征在于,所述响应于多媒体资源的帧获取请求,获取所述多媒体资源的拉取位置参数包括:
若所述帧获取请求携带拉取位置参数,解析所述帧获取请求得到所述拉取位置参数;
若所述帧获取请求缺省拉取位置参数,将所述拉取位置参数配置为默认值。
19.根据权利要求1所述的资源传输方法,其特征在于,所述从所述起始帧开始发送所述多媒体资源的媒体帧包括:
基于所述帧获取请求,解析得到所述多媒体资源的地址信息;
从所述起始帧开始发送所述地址信息所指示的多媒体资源的媒体帧。
20.一种资源传输装置,所述装置应用于FAS框架中,其特征在于,包括:
获取单元,被配置为执行响应于多媒体资源的帧获取请求,获取所述多媒体资源的拉取位置参数,所述帧获取请求用于请求传输所述多媒体资源的媒体帧,所述拉取位置参数用于表示所述多媒体资源的媒体帧的起始拉取位置,所述帧获取请求携带从所述多媒体资源的MPD中获取的目标码率的多媒体资源的目标地址信息;
第一确定单元,被配置为执行基于所述多媒体资源的拉取位置参数和当前有效缓存区内的资源的最大时间戳,确定所述多媒体资源的起始帧,所述当前有效缓存区内的资源为基于缓存区中的媒体帧序列中媒体帧的时间戳呈非单调递增确定所述缓存区发生时间戳回退时,最后一个单调递增阶段所包含的各个媒体帧;
发送单元,被配置为执行从所述起始帧开始发送所述多媒体资源的媒体帧,其中,所述媒体帧的时间戳大于或等于所述起始帧的时间戳。
21.根据权利要求20所述的资源传输装置,其特征在于,所述获取单元还被配置为执行:获取所述多媒体资源的音频参数,所述音频参数用于表示所述媒体帧是否为音频帧;
所述第一确定单元包括:
第一确定子单元,被配置为执行基于所述音频参数、所述拉取位置参数及所述最大时间戳,确定目标时间戳;
第二确定子单元,被配置为执行基于所述目标时间戳,确定所述多媒体资源的起始帧。
22.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数为默认值,且所述音频参数为默认值或所述音频参数为假,将所述最大时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
23.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数为默认值,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。
24.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数等于0,且所述音频参数为默认值或所述音频参数为假,将所述最大时间戳确定为所述目标时间戳。
25.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数等于0,且所述音频参数为真,将最大音频时间戳确定为所述目标时间戳。
26.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数小于0,且所述音频参数为默认值或所述音频参数为假,将所述最大时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
27.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数小于0,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。
28.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数大于0,且所述音频参数为默认值或所述音频参数为假,在缓存区中发生时间戳回退时,将所述最大时间戳确定为所述目标时间戳。
29.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数大于0,且所述音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为所述目标时间戳。
30.根据权利要求21所述的资源传输装置,其特征在于,所述第一确定子单元被配置为执行:
若所述拉取位置参数大于0,且缓存区中未发生时间戳回退时,将所述拉取位置参数确定为所述目标时间戳。
31.根据权利要求30所述的资源传输装置,其特征在于,所述第二确定子单元被配置为执行:
若所述当前有效缓存区中存在目标媒体帧,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
32.根据权利要求30所述的资源传输装置,其特征在于,所述第二确定子单元被配置为执行:
若所述当前有效缓存区中不存在目标媒体帧,进入等待状态,直到所述目标媒体帧写入所述当前有效缓存区时,将所述目标媒体帧确定为所述起始帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
33.根据权利要求30所述的资源传输装置,其特征在于,所述发送单元还被配置为执行:
若所述当前有效缓存区中不存在目标媒体帧,且所述目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
34.根据权利要求20所述的资源传输装置,其特征在于,所述装置还包括:
第二确定单元,被配置为执行若缓存区中的媒体帧序列中媒体帧的时间戳呈单调递增,确定所述缓存区未发生时间戳回退。
35.根据权利要求34所述的资源传输装置,其特征在于,所述第二确定单元还被配置为执行:
若所述缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述关键帧序列为所述缓存区中已缓存的多个关键帧所构成的序列;
若所述缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,其中,所述音频帧序列为所述缓存区中已缓存的多个音频帧所构成的序列。
36.根据权利要求21至30任一项所述的资源传输装置,其特征在于,所述第二确定子单元被配置为执行:
将当前有效缓存区中时间戳最接近所述目标时间戳的媒体帧确定为所述起始帧。
37.根据权利要求20所述的资源传输装置,其特征在于,所述获取单元被配置为执行:
若所述帧获取请求携带拉取位置参数,解析所述帧获取请求得到所述拉取位置参数;
若所述帧获取请求缺省拉取位置参数,将所述拉取位置参数配置为默认值。
38.根据权利要求20所述的资源传输装置,其特征在于,所述发送单元被配置为执行:
基于所述帧获取请求,解析得到所述多媒体资源的地址信息;
从所述起始帧开始发送所述地址信息所指示的多媒体资源的媒体帧。
39.一种计算机设备,其特征在于,包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行所述指令,以实现如权利要求1至权利要求19中任一项所述的资源传输方法。
40.一种计算机可读存储介质,其特征在于,当所述存储介质中的至少一条指令由计算机设备的一个或多个处理器执行时,使得所述计算机设备能够执行如权利要求1至权利要求19中任一项所述的资源传输方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010054760.6A CN113141522B (zh) | 2020-01-17 | 2020-01-17 | 资源传输方法、装置、计算机设备及存储介质 |
PCT/CN2020/131552 WO2021143360A1 (zh) | 2020-01-17 | 2020-11-25 | 资源传输方法及计算机设备 |
EP20913803.1A EP3941070A4 (en) | 2020-01-17 | 2020-11-25 | RESOURCE TRANSFER METHOD AND COMPUTER DEVICE |
US17/517,973 US20220060532A1 (en) | 2020-01-17 | 2021-11-03 | Method for transmitting resources and electronic device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010054760.6A CN113141522B (zh) | 2020-01-17 | 2020-01-17 | 资源传输方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113141522A CN113141522A (zh) | 2021-07-20 |
CN113141522B true CN113141522B (zh) | 2022-09-20 |
Family
ID=76809554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010054760.6A Active CN113141522B (zh) | 2020-01-17 | 2020-01-17 | 资源传输方法、装置、计算机设备及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220060532A1 (zh) |
EP (1) | EP3941070A4 (zh) |
CN (1) | CN113141522B (zh) |
WO (1) | WO2021143360A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113596499B (zh) * | 2021-07-29 | 2023-03-24 | 北京达佳互联信息技术有限公司 | 直播数据处理方法、装置、计算机设备及介质 |
CN113837719A (zh) * | 2021-09-15 | 2021-12-24 | 携程旅游网络技术(上海)有限公司 | 计算机办公地点的获取方法、系统、电子设备和介质 |
CN114697303B (zh) * | 2022-03-16 | 2023-11-03 | 北京金山云网络技术有限公司 | 一种多媒体数据处理方法、装置、电子设备及存储介质 |
CN116489342B (zh) * | 2023-06-20 | 2023-09-15 | 中央广播电视总台 | 确定编码延时的方法、装置、及电子设备、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106686445A (zh) * | 2015-11-05 | 2017-05-17 | 北京中广上洋科技股份有限公司 | 对多媒体文件进行按需跳转的方法 |
CN110493324A (zh) * | 2019-07-29 | 2019-11-22 | 咪咕视讯科技有限公司 | 下载方法、下载器及计算机可读存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2158747B1 (en) * | 2007-06-20 | 2016-11-23 | Telefonaktiebolaget LM Ericsson (publ) | Method and arrangement for improved media session management |
US20110096828A1 (en) * | 2009-09-22 | 2011-04-28 | Qualcomm Incorporated | Enhanced block-request streaming using scalable encoding |
CN102761524B (zh) * | 2011-04-27 | 2017-06-23 | 中兴通讯股份有限公司 | 一种流媒体存储、播放方法及相应系统 |
CN102957672A (zh) * | 2011-08-25 | 2013-03-06 | 中国电信股份有限公司 | 自适应播放flv媒体流的方法、客户端和系统 |
US9905269B2 (en) * | 2014-11-06 | 2018-02-27 | Adobe Systems Incorporated | Multimedia content duration manipulation |
US10999613B1 (en) * | 2017-02-19 | 2021-05-04 | Look At Me, Inc | System and method for intelligent delivery of segmented media streams |
US10638192B2 (en) * | 2017-06-19 | 2020-04-28 | Wangsu Science & Technology Co., Ltd. | Live streaming quick start method and system |
US20190104326A1 (en) * | 2017-10-03 | 2019-04-04 | Qualcomm Incorporated | Content source description for immersive media data |
CN110072123B (zh) * | 2018-01-24 | 2022-04-15 | 中兴通讯股份有限公司 | 一种视频的恢复播放方法、视频播放终端及服务器 |
CN108540819B (zh) * | 2018-04-12 | 2020-04-03 | 腾讯科技(深圳)有限公司 | 直播数据处理方法、装置、计算机设备和存储介质 |
CN108737908B (zh) * | 2018-05-21 | 2021-11-30 | 腾讯科技(深圳)有限公司 | 一种媒体播放方法、装置及存储介质 |
CN110545491B (zh) * | 2018-05-29 | 2021-08-10 | 北京字节跳动网络技术有限公司 | 一种媒体文件的网络播放方法、装置及存储介质 |
US11082752B2 (en) * | 2018-07-19 | 2021-08-03 | Netflix, Inc. | Shot-based view files for trick play mode in a network-based video delivery system |
-
2020
- 2020-01-17 CN CN202010054760.6A patent/CN113141522B/zh active Active
- 2020-11-25 WO PCT/CN2020/131552 patent/WO2021143360A1/zh active Application Filing
- 2020-11-25 EP EP20913803.1A patent/EP3941070A4/en not_active Withdrawn
-
2021
- 2021-11-03 US US17/517,973 patent/US20220060532A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106686445A (zh) * | 2015-11-05 | 2017-05-17 | 北京中广上洋科技股份有限公司 | 对多媒体文件进行按需跳转的方法 |
CN110493324A (zh) * | 2019-07-29 | 2019-11-22 | 咪咕视讯科技有限公司 | 下载方法、下载器及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113141522A (zh) | 2021-07-20 |
EP3941070A1 (en) | 2022-01-19 |
EP3941070A4 (en) | 2022-06-01 |
US20220060532A1 (en) | 2022-02-24 |
WO2021143360A1 (zh) | 2021-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113141522B (zh) | 资源传输方法、装置、计算机设备及存储介质 | |
CA2965484C (en) | Adaptive bitrate streaming latency reduction | |
US10368075B2 (en) | Clip generation based on multiple encodings of a media stream | |
US9112938B2 (en) | Adaptive playback with look-ahead | |
US9721254B2 (en) | Method and apparatus for providing streaming media programs and targeted advertisements using multiple advertisement version segments | |
US8683071B2 (en) | Method and apparatus for supporting time shift playback in adaptive HTTP streaming transmission solution | |
US9344517B2 (en) | Downloading and adaptive streaming of multimedia content to a device with cache assist | |
US11838563B2 (en) | Switching between transmitting a preauthored video frame and a composited video frame | |
US10791366B2 (en) | Fast channel change in a video delivery network | |
US11109092B2 (en) | Synchronizing processing between streams | |
CN113141514B (zh) | 媒体流传输方法、系统、装置、设备及存储介质 | |
US11647252B2 (en) | Identification of elements in a group for dynamic element replacement | |
US10104143B1 (en) | Manifest segmentation | |
US11765421B2 (en) | Client based storage of remote element resolutions | |
US11356739B2 (en) | Video playback method, terminal apparatus, and storage medium | |
CN112243136B (zh) | 内容播放方法、视频存储方法和设备 | |
EP3210383A1 (en) | Adaptive bitrate streaming latency reduction | |
US11856242B1 (en) | Synchronization of content during live video stream | |
US11496803B2 (en) | Video stream switching service | |
EP4195626A1 (en) | Streaming media content as media stream to a client system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |