CN113141514B - 媒体流传输方法、系统、装置、设备及存储介质 - Google Patents

媒体流传输方法、系统、装置、设备及存储介质 Download PDF

Info

Publication number
CN113141514B
CN113141514B CN202010054830.8A CN202010054830A CN113141514B CN 113141514 B CN113141514 B CN 113141514B CN 202010054830 A CN202010054830 A CN 202010054830A CN 113141514 B CN113141514 B CN 113141514B
Authority
CN
China
Prior art keywords
media
frame
target
code rate
media stream
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
Application number
CN202010054830.8A
Other languages
English (en)
Other versions
CN113141514A (zh
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.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information 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 Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority to CN202010054830.8A priority Critical patent/CN113141514B/zh
Priority to EP20913499.8A priority patent/EP3968647A4/en
Priority to PCT/CN2020/138855 priority patent/WO2021143479A1/zh
Publication of CN113141514A publication Critical patent/CN113141514A/zh
Priority to US17/542,841 priority patent/US20220095002A1/en
Application granted granted Critical
Publication of CN113141514B publication Critical patent/CN113141514B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management 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/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/613Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2183Cache memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing 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/23805Controlling the feeding rate to the network, e.g. by controlling the video pump
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/239Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
    • H04N21/2393Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management 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/262Content 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/26258Content 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing 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/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • H04N21/44004Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving video buffer management, e.g. video decoder buffer or video display buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6402Address allocation for clients
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64746Control signals issued by the network directed to the server or the client
    • H04N21/64761Control signals issued by the network directed to the server or the client directed to the server
    • H04N21/64769Control signals issued by the network directed to the server or the client directed to the server for rate control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network 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/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6581Reference data, e.g. a movie identifier for ordering a movie or a product identifier in a home shopping application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8455Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/83Generation or processing of protective or descriptive data associated with content; Content structuring
    • H04N21/845Structuring of content, e.g. decomposing content into time segments
    • H04N21/8456Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

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是本公开实施例提供的一种确定目标时间戳的原理性示意图;
图8是根据一示例性实施例示出的一种媒体流传输装置的框图;
图9是根据一示例性实施例示出的一种媒体流传输装置的框图;
图10是本公开实施例提供的一种终端的框图;
图11是本公开实施例提供的一种服务器的框图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与本公开的一些方面相一致的装置和方法的例子。
本公开所涉及的用户信息可以为经用户授权或者经过各方充分授权的信息。
以下,对本公开所涉及的术语进行解释。
一、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,该实施环境可以包括至少一个终端和服务器,下面进行详述:
该至少一个终端,用于进行媒体流传输,在每个终端上可以安装有媒体编解码组件以及媒体播放组件,该媒体编解码组件用于在接收媒体流(例如分片传输的资源包、帧级传输的媒体帧)之后进行媒体流的解码,该媒体播放组件用于在解码媒体流之后进行媒体流的播放。
按照用户身份的不同,该至少一个终端可以划分为主播终端以及观众终端,主播终端对应于主播用户,观众终端对应于观众用户,需要说明的是,对同一个终端而言,该终端即可以是主播终端,也可以是观众终端,比如,用户在录制直播时该终端为主播终端,用户在观看直播时该终端为观众终端。
该至少一个终端和服务器可以通过有线网络或无线网络相连。
该服务器,用于提供待传输的媒体流,服务器可以包括一台服务器、多台服务器、云计算平台或者虚拟化中心中的至少一种。可选地,服务器可以承担主要计算工作,至少一个终端可以承担次要计算工作;或者,服务器承担次要计算工作,至少一个终端承担主要计算工作;或者,至少一个终端和服务器两者之间采用分布式计算架构进行协同计算。
在一个示例性场景中,该服务器可以是集群式的CDN(Content DeliveryNetwork,内容分发网络)服务器,CDN服务器包括中心平台以及部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使得用户所在终端能够依靠当地的边缘服务器来就近获取所需内容(即媒体流),从而降低网络拥塞,提升终端访问的响应速度和命中率。
换言之,CDN服务器在终端与中心平台之间增加了一个缓存机制,该缓存机制也即是部署在不同地理位置的边缘服务器(比如WEB服务器),在性能优化时,中心平台会根据终端与边缘服务器的距离远近,调度与终端之间距离最近的边缘服务器来向终端提供服务,能够更加有效地向终端发布内容。
本公开实施例所涉及的媒体流,包括但不限于:视频资源、音频资源、图像资源或者文本资源中至少一项,本公开实施例不对媒体流的类型进行具体限定。比如,该媒体流为网络主播的直播视频流,或者为预存在服务器上的历史点播视频,或者为电台主播的直播音频流,或者为预存在服务器上的历史点播音频。
可选地,至少一个终端中每个终端的设备类型包括但不限于:电视机、智能手机、智能音箱、车载终端、平板电脑、电子书阅读器、MP3(Moving Picture Experts GroupAudio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机或者台式计算机中的至少一种。以下实施例,以终端包括智能手机来进行举例说明。
本领域技术人员可以知晓,上述至少一个终端的数量可以仅为一个,或者至少一个终端的数量为几十个或几百个,或者更多数量。本公开实施例对至少一个终端的数量和设备类型不加以限定。
以上介绍了本公开实施例的实施环境,以下对本公开实施例的方法流程进行示例性说明。
图2是本公开实施例提供的一种FAS框架的原理性示意图,请参考图2,本公开实施例提供一种FAS(基于流式的多码率自适应)框架,在该框架内,至少一个终端101与服务器102之间通过FAS协议进行多媒体资源传输。
以任一终端为例进行说明,在终端上可以安装有应用程序(亦称为FAS客户端),该应用程序用于浏览多媒体资源,例如,该应用程序可以为短视频应用、直播应用、视频点播应用、社交应用、购物应用等,本公开实施例不对应用程序的类型进行具体限定。
用户可以在终端上启动应用程序,显示资源推送界面(例如应用程序的首页或者功能界面),在该资源推送界面中包括至少一个多媒体资源的缩略信息,该缩略信息包括标题、简介、发布者、海报、预告片或者精彩片段中至少一项,响应于用户对任一多媒体资源的缩略信息的触控操作,终端可以从资源推送界面跳转至资源播放界面,在该资源播放界面中包括该多媒体资源的播放选项,响应于用户对该播放选项的触控操作,终端从服务器中下载该多媒体资源的媒体描述文件(Media Presentation Description,MPD),基于该媒体描述文件,确定目标码率的多媒体资源的目标地址信息,向服务器发送携带目标地址信息的帧获取请求(或称为FAS请求),使得服务器基于一定的规范(FAS请求的处理规范)来处理该帧获取请求,服务器定位到该多媒体资源的媒体帧(连续的媒体帧可以构成媒体流)之后,以目标码率向终端返回该多媒体资源的媒体帧(也即以目标码率向终端返回媒体流)。终端接收到媒体流之后,调用媒体编解码组件对媒体流进行解码,得到解码后的媒体流,调用媒体播放组件播放解码后的媒体流。
在一些直播场景下,终端所请求的媒体流通常为主播用户实时推流到服务器的直播视频流,这时服务器可以在接收到主播用户的直播视频流之后,对该直播视频流进行转码,得到多种码率的直播视频流,为不同码率的直播视频流分配不同的地址信息,记录在媒体描述文件中,从而能够针对携带不同地址信息的帧获取请求,以不同的码率返回对应的直播视频流。
进一步地,提供一种自适应调整码率的机制,当终端当前的网络带宽情况发生变化时,适应性调整与当前网络带宽情况相匹配的待切换码率。比如,在需要切换码率时,终端可以断开当前码率的媒体流传输链接,向服务器发送携带待切换码率所对应待切换地址信息的帧获取请求,建立基于待切换码率的媒体流传输链接,当然,终端也可以不断开当前码率的媒体流传输链接,而是直接重新发起携带待切换地址信息的帧获取请求,建立基于待切换码率的媒体流传输链接(用于传输新的媒体流),将原有的媒体流作为备用流,一旦新的媒体流出现传输异常,那么可以继续播放备用流,从而能够在播放过程中动态调整媒体流的码率,优化了终端的播放效果。
在上述FAS框架中,能够达到帧级别的媒体流传输,无需对多媒体资源进行分片传输,大大降低了资源传输过程的延时,提升了资源传输的实时性,提升了资源传输效率。
图3是根据一示例性实施例示出的一种媒体流传输方法的流程图,该方法可以应用于终端,包括以下步骤。
在步骤S31中,响应于对媒体流的帧获取指令,从该媒体流的媒体描述文件包括的多种码率的该媒体流的地址信息中,确定目标码率的该媒体流的目标地址信息;
在步骤S32中,确定该目标码率对应的待获取媒体帧在该媒体流中的起始位置;
在步骤S33中,向服务器发送携带有该目标地址信息和起始位置的帧获取请求,该帧获取请求用于指示该服务器以该目标码率返回该媒体流中从该起始位置开始的媒体帧。
本公开通过响应于对媒体流的帧获取指令,从媒体流的媒体描述文件包括的多种码率的媒体流的地址信息中,确定目标码率的媒体流的目标地址信息,进而确定目标码率对应的待获取媒体帧在媒体流中的起始位置,再向服务器发送携带有目标地址信息和起始位置的帧获取请求,可以指示服务器以目标码率传输媒体流中从起始位置开始的媒体帧,无需对媒体流进行分片传输,实现了媒体流的帧级传输,大大降低了媒体流传输过程的延迟,提高了媒体流的传输效率和实时性。
可选地,该帧获取指令由对媒体流的播放操作触发;
该确定该目标码率对应的待获取媒体帧在该媒体流中的起始位置,包括:
将该媒体流中该播放操作的操作时间产生的媒体帧所在位置确定为该起始位置;或,
将该帧获取指令中所选定的媒体帧在该媒体流中的位置确定为该起始位置;或,
将该媒体流的第一个媒体帧所在位置确定为该起始位置。
可选地,该帧获取指令在该媒体流的播放状态信息满足码率切换条件时触发;
该响应于对媒体流的帧获取指令,从该媒体流的媒体描述文件包括的多种码率的该媒体流的地址信息中,确定目标码率的该媒体流的目标地址信息,包括:
在接收该媒体流中任一媒体帧时,获取该媒体流的播放状态信息;
响应于该播放状态信息符合该码率切换条件,从该媒体流的媒体描述文件包括的多种码率的该媒体流的地址信息中,确定目标码率的该媒体流的目标地址信息;
该确定该目标码率对应的待获取媒体帧在该媒体流中的起始位置,包括:
根据该任一媒体帧在该媒体流中的位置,确定该目标码率对应的待获取媒体帧在该媒体流中的起始位置。
可选地,该响应于该播放状态信息符合该码率切换条件,从该媒体流的媒体描述文件包括的多种码率的该媒体流的地址信息中,确定目标码率的该媒体流的目标地址信息,包括:
响应于该播放状态信息符合该码率切换条件,根据该播放状态信息和当前码率,确定目标码率;
响应于该目标码率与该当前码率不相等,执行该从该媒体流的媒体描述文件包括的多种码率的该媒体流的地址信息中,确定目标码率的该媒体流的目标地址信息的步骤。
可选地,该播放状态信息包括第一缓存量,该第一缓存量为当前对该媒体流已缓存且未播放的缓存量;
该响应于该播放状态信息符合码率切换条件,根据该播放状态信息以及当前码率,确定目标码率,包括:
响应于该第一缓存量大于第一缓存量阈值,根据该播放状态信息以及当前码率,确定目标码率;或,
响应于该第一缓存量小于第二缓存量阈值,根据该播放状态信息以及当前码率,确定目标码率,该第二缓存量阈值小于该第一缓存量阈值。
可选地,该根据该播放状态信息以及当前码率,确定目标码率,包括:
获取多个候选码率;
根据该多个候选码率与该当前码率之间的关系、该播放状态信息以及该媒体流中该任一媒体帧在该任一媒体帧所在媒体帧组中的位置,获取每个候选码率对应的第二缓存量;
根据该每个候选码率对应的第二缓存量与第一缓存量阈值或第二缓存量阈值的关系,从该多个候选码率中,确定目标码率;
其中,该每个候选码率对应的第二缓存量为将码率切换至候选码率后,该任一媒体帧所在媒体帧组传输结束时对该媒体流已缓存但未播放的缓存量。
可选地,该帧获取请求还包括第一扩展参数或者第二扩展参数中至少一项,该第一扩展参数用于表示该媒体帧是否为音频帧,该第二扩展参数用于表示从该第二扩展参数所指示的目标时间戳开始传输该媒体流中的媒体帧。
可选地,该媒体描述文件包括版本号和媒体描述集合,其中,该版本号包括该媒体描述文件的版本号或者资源传输标准的版本号中至少一项,该媒体描述集合包括多个媒体描述元信息,每个媒体描述元信息对应于一种码率的媒体流,每个媒体描述元信息包括该媒体描述元信息所对应码率的媒体流的画面组长度以及属性信息。
图4是根据一示例性实施例示出的一种媒体流传输方法的流程图,该方法可以应用于服务器,包括以下步骤。
在步骤S41中,接收帧获取请求,该帧获取请求携带有目标码率的媒体流的目标地址信息和该目标码率对应的待获取媒体帧在该媒体流中的起始位置;
在步骤S42中,响应于该帧获取请求,从该目标地址信息对应的地址,获取从该起始位置开始的媒体帧;
在步骤S43中,以该目标码率,向终端传输从该起始位置开始的媒体帧。
本公开通过接收帧获取请求,响应于该帧获取请求,从目标码率的媒体流的目标地址信息对应的地址,获取该帧获取请求所指示的从起始位置开始的媒体帧进行传输,该传输过程实现了媒体流的帧级传输,无需对媒体流进行分片传输,大大降低了媒体流传输过程的延迟,提高了媒体流的传输效率和实时性。
可选地,该从该目标地址信息对应的地址,获取从该起始位置开始的媒体帧,包括:
基于该起始位置,确定目标时间戳;
基于该目标时间戳,确定并获取从该起始位置开始的媒体帧。
可选地,该起始位置为拉取位置参数,该基于该起始位置,确定目标时间戳,包括:基于音频参数和拉取位置参数,确定目标时间戳。
可选地,该基于该音频参数和该拉取位置参数,确定目标时间戳包括:
若该拉取位置参数为默认值,且该音频参数为默认值或该音频参数为假,将最大时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为该目标时间戳;或,
若该拉取位置参数为默认值,且该音频参数为真,将最大音频时间戳减去该拉取位置参数的默认值的绝对值所得的数值确定为该目标时间戳;或,
若该拉取位置参数等于0,且该音频参数为默认值或该音频参数为假,将最大时间戳确定为该目标时间戳;或,
若该拉取位置参数等于0,且该音频参数为真,将最大音频时间戳确定为该目标时间戳;或,
若该拉取位置参数小于0,且该音频参数为默认值或该音频参数为假,将最大时间戳减去该拉取位置参数的绝对值所得的数值确定为该目标时间戳;或,
若该拉取位置参数小于0,且该音频参数为真,将最大音频时间戳减去该拉取位置参数的绝对值所得的数值确定为该目标时间戳;或,
若该拉取位置参数大于0,且该音频参数为默认值或该音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为该目标时间戳;或,
若该拉取位置参数大于0,且该音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为该目标时间戳;或,
若该拉取位置参数大于0,且缓存区中未发生时间戳回退时,将该拉取位置参数确定为该目标时间戳。
可选地,该方法还包括:
若缓存区中媒体帧序列中媒体帧的时间戳呈非单调递增,确定该缓存区发生时间戳回退;否则,确定该缓存区未发生时间戳回退,所述媒体帧序列为所述缓存区缓存的多个媒体帧所组成的序列。
可选地,该方法还包括:
若该缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,所述关键帧序列为缓存的多个关键帧组成的序列;
若该缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定该媒体帧序列呈非单调递增,所述音频帧序列为缓存的多个音频帧组成的序列。
可选地,该基于该目标时间戳,确定并获取从该起始位置开始的媒体帧,包括:
若当前有效缓存区中存在目标媒体帧,将该目标媒体帧确定为该从该起始位置开始的媒体帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳;或,
若该当前有效缓存区中不存在目标媒体帧,进入等待状态,直到该目标媒体帧写入该当前有效缓存区时,将该目标媒体帧确定为该从该起始位置开始的媒体帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳;或,
若该当前有效缓存区中不存在目标媒体帧,且该目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
以上从终端和服务器单侧介绍了本公开实施例提供的方法实施例,以下通过另一个方法实施例从终端和服务器之间进行交互的角度出发,对本公开实施例进行示例性说明。
图5是根据一示例性实施例示出的一种媒体流传输方法的流程图,参见图5,该方法包括以下步骤。
在步骤S51中,终端接收媒体流中的任一媒体帧时,获取媒体流的播放状态信息。
在本公开实施例中,提供了一种媒体流传输方法,终端可以接收帧获取指令,响应于该帧获取指令,确定目标码率的媒体流的目标地址信息以及待获取媒体帧的起始位置,从而向服务器发送请求以指示服务器发送按照目标码率发送相应的媒体帧,以实现媒体流的帧级传输。
其中,该帧获取指令可以包括两种触发方式,该两种触发方式对应的应用场景不同,在第一种触发方式中,该帧获取指令在所述媒体流的播放状态信息满足码率切换条件时触发。也即是,在根据该媒体流的播放状态信息确定需要切换码率时,可以触发该帧获取指令,重新向服务器发送请求,以请求切换后的目标码率的媒体帧。这种触发方式对应的内容可以参见步骤S51和步骤S52。
在第二种触发方式中,该帧获取指令可以由对媒体流的播放操作触发,例如,该播放操作可以是用户首次对媒体流进行的播放操作,也可以为播放暂停后重新启动播放的操作。具体地,终端可以向用户提供码率选择列表,用户可以在码率选择列表中,选择一个码率作为目标码率。用户可以手动点击码率选择列表中任一数值,相应地,终端可以将该数值对应的码率确定为目标码率。用户对媒体流的播放操作可以发生在终端播放媒体流的过程中,相应地,用户在使用终端获取媒体流的过程中,可以随时手动切换传输码率。该播放操作也可以发生在终端第一次获取到媒体流之前,相应地,用户使用终端开始获取媒体流之前,可以先在终端提供的码率选择列表中确定目标码率,终端再响应对应触发的媒体流的帧获取指令。当然,该目标码率还可以为一个默认值,本公开实施例对此不作限定。
下面针对上述第一种触发方式进行详细说明。
其中,终端可以与服务器通过有线网络或无线网络相连,该服务器可以用于提供多种码率的媒体流。媒体流可以包括若干媒体帧,该媒体帧可以为音频帧,也可以为图像帧,该若干媒体帧可以通过对原始媒体资源采样得到。终端可以从服务器源源不断地获取的媒体流中的若干媒体帧,再播放获取的媒体帧,实现媒体流的传输和播放。终端在传输该媒体流中的任一媒体帧时,可以获取该媒体流的播放状态信息,该播放状态信息可以用于判断是否需要切换媒体流的传输码率。
终端上可以安装有应用程序,该应用程序用于浏览媒体流,例如,该应用程序可以包括短视频应用、直播应用、视频点播应用、社交应用或者购物应用中至少一项,本公开实施例不对应用程序的类型进行具体限定。
本公开实施例所涉及的媒体流,包括但不限于:视频资源、音频资源、图像资源或者文本资源中至少一项,本公开实施例不对媒体流的类型进行具体限定。比如,该媒体流为网络主播的直播视频流,或者为预存在服务器上的历史点播视频,或者为电台主播的直播音频流,或者为预存在服务器上的历史点播音频。
在上述过程中,用户可以在终端上启动应用程序,该应用程序显示资源推送界面,例如该资源推送界面可以是应用程序的首页或者功能界面,本公开实施例不对资源推送界面的类型进行具体限定。在该资源推送界面中可以包括至少一个媒体流的缩略信息,该缩略信息包括媒体流的标题、简介、海报、预告片或者精彩片段中至少一项。用户在浏览资源推送界面的过程中,可以点击感兴趣的媒体流的缩略信息,响应于用户对该媒体流的缩略信息的触控操作,终端可以从资源推送界面跳转至资源播放界面。
在步骤S52中,终端响应于播放状态信息符合码率切换条件,根据播放状态信息以及当前码率,确定目标码率。
其中,终端在播放媒体流时,可以获取媒体流的播放状态信息,该播放状态信息可以用于判断是否需要切换媒体流的码率,当播放状态信息符合码率切换条件时,终端可以对此作出响应,确定并将码率切换为可优化媒体流的播放效果的目标码率。
通过自适应功能,将码率调整为与当前的网络带宽信息对应的码率,在进行自适应调整的过程中,除了当前的网络带宽信息之外,还可以结合终端的播放状态信息,动态选择播放效果最佳的目标码率,从而在媒体流的卡顿率、清晰度以及平滑性之间取得折中。
在一种可能实现方式中,终端确定目标码率后,可以获取该目标码率对应的媒体流的地址信息,即目标地址信息,相应地,终端可以触发帧获取指令,该帧获取指令可以用于指示终端从媒体流的媒体描述文件包括的多种码率的媒体流的地址信息中,确定目标码率的媒体流的目标地址信息,为后续根据目标地址信息传输媒体流提供基础。下面对该码率切换判断和目标码率的获取过程进行详细说明。
在一种可能的实现方式中,播放状态信息可以包括第一缓存量,第一缓存量为当前对媒体流已缓存且未播放的缓存量。终端可以响应于第一缓存量大于第一缓存量阈值,根据播放状态信息以及当前码率,确定目标码率;或,第一缓存量小于第二缓存量阈值,根据播放状态信息以及当前码率,确定目标码率,第二缓存量阈值小于第一缓存量阈值。
其中,终端在得到媒体流的媒体帧后,可以将得到的媒体帧存入缓存,等到需要播放媒体帧时,可以对缓存的媒体帧进行解码并按时间顺序播放。该第一缓存量可以通过已缓存且未播放的媒体流的时长来度量。例如,终端已缓存1000毫秒(ms),播放了400ms,则第一缓存量为600ms。
针对该码率切换条件的不同,上述播放状态信息符合码率切换条件时,根据播放状态信息以及当前码率,确定目标码率,可以包括两种情况:
情况一、响应于第一缓存量大于第一缓存量阈值,终端可以根据播放状态信息以及当前码率,确定目标码率,该目标码率大于或等于当前码率。
在情况一中,第一缓存量大于第一缓存量阈值,说明当前终端对媒体流已缓存且未播放的缓存量能够保证媒体流的流畅播放,而媒体流的码率越大,媒体流越清晰,因此可以考虑增大媒体流的下载码率,以增强媒体流的清晰度。
情况二、响应于第一缓存量小于第二缓存量阈值,终端可以根据播放状态信息以及当前码率,确定目标码率,该目标码率小于或等于当前码率。
其中,第二缓存量阈值小于第一缓存量阈值,该第一缓存阈值和该第二缓存阈值可以是预先设定的缓存量阈值,也可以是临时设定的缓存量阈值。
在情况二中,第一缓存量小于第二缓存量阈值时,可以代表当前终端对媒体流已缓存且未播放的缓存量可能无法保证媒体流的流畅播放,而媒体流的码率越小,在相同时间内,终端能够缓存的媒体流越多,增加了缓存也就能够使媒体流的播放更加流畅,因此可以考虑减小媒体流的下载码率,以避免媒体流的播放卡顿。
第一缓存量与第一缓存量阈值、第二缓存量阈值之间的关系除了上述两种情况中所示的关系外,还可以具有一种可能情况:第一缓存量小于或等于第一缓存量阈值,且大于或等于第二缓存量阈值。此时可以说明当前终端对媒体流已缓存且未播放的缓存量符合媒体流的播放要求,且可能刚好符合要求,此时可以不改变媒体流的下载码率,保证媒体流的下载和播放的稳定性。
例如,第一缓存量阈值可以用qh表示,第二缓存量阈值可以用ql表示,第一缓存量可以用qc表示。当qc>qh时,媒体流播放发生卡顿的概率很小,此时可以考虑增大媒体流的码率,提升媒体流播放的清晰度,当qc<qh时,媒体流播放发生卡顿的概率很大,此时可以考虑降低媒体流的码率,避免媒体流播放时发生卡顿。
在一种可能的实现方式中,通过两个阈值的设置,将第一缓存量与第一缓存阈值和第二缓存阈值进行对比,以此来判断是否对媒体流的码率进行切换,能够快速获知媒体流当前的播放效果。该第一缓存量大于第一缓存量阈值或小于第二缓存量阈值时,终端可以执行码率切换的步骤,并通过自适应调整码率以优化播放效果。但考虑到切换码率后,终端以目标码率接收媒体流不一定能够保证媒体流的正常播放,在确定目标码率时,可以通过第二缓存量阈值与两个阈值进行对比,以此来判断码率切换后媒体流的播放情况是否会得到改善,从而能够最大程度地优化媒体流的播放效果。
在一种可能的实现方式中,该目标码率的确定过程可以为对多个候选码率对应的播放效果进行判断,从而从多个候选码率中获取播放效果最好的候选码率作为目标码率。具体地,终端可以获取多个候选码率,根据多个候选码率与当前码率之间的关系、播放状态信息以及媒体流中任一媒体帧在该任一媒体帧所在媒体帧组中的位置,获取每个候选码率对应的第二缓存量,根据每个候选码率对应的第二缓存量与第一缓存量阈值或第二缓存量阈值的关系,从多个候选码率中,确定目标码率。
其中,服务器中可以缓存有多种码率的媒体流,该多个候选码率即为服务器能够提供的媒体流的多种码率。媒体流可以包括多个媒体帧组,每个媒体帧组的长度可以根据业务需求进行预设,也可以由技术人员临时设置,本公开对此不做限定。每个媒体帧组可以包括多个媒体帧,多个媒体帧可以按时间顺序进行排列。媒体流中任一媒体帧在该任一媒体帧所在媒体帧组中的位置可以通过终端从该媒体帧组的第一帧播放至该任一媒体帧所需的时长来表示。每个候选码率对应的第二缓存量可以代表将码率切换至该候选码率后,终端对任一媒体帧所在媒体帧组传输结束时,已缓存但未播放的媒体流能够播放的时长。通过将每个候选码率对应的第二缓存量与第一缓存量阈值和第二缓存量阈值进行对比,能够判断码率切换后的播放效果,以此筛选出可以作为目标码率的候选码率。
例如,服务器中可以缓存有n种码率的媒体流,多个候选码率可以包括r1,r2,…rn。该任一媒体帧所在的媒体帧组的长度可以为D,从该媒体帧组的第一帧播放至该任一媒体帧所需的时长可以为d,可以用d表示该任一媒体帧在媒体帧组中的位置。另外,可以用qn表示第n个候选码率对应的第二缓存量。其中,D,d为正数,n为正整数。
通过获取多个候选码率,并根据多个候选码率与当前码率之间的关系、播放状态信息以及媒体流中任一媒体帧在该任一媒体帧所在媒体帧组中的位置,获取每个候选码率对应的第二缓存量,再根据每个码率对应的第二缓存量与第一缓存量阈值和第二缓存量阈值之间的关系确定目标码率,提供了一种确定目标码率的方法,为实现终端的码率切换提供了基础。
在一种可能的实现方式中,该第二缓存量的获取过程可以为:终端可以根据媒体流中任一媒体帧在任一媒体帧所在媒体帧组中的位置,获取任一媒体帧所在媒体帧组传输结束时对媒体流的缓存增加量,根据多个候选码率与当前码率之间的关系对应的继续缓存任一媒体帧所在媒体帧组时的缓存位置,确定当前到基于多个候选码率对任一媒体帧所在媒体帧组传输结束时的过程中媒体流的播放量,根据播放状态信息包括的当前对媒体流已缓存且未播放的第一缓存量、缓存增加量和播放量,获取每个候选码率对应的第二缓存量。
其中,任一媒体帧在该任一媒体帧所在媒体帧组中的位置可以通过终端从该媒体帧组的第一帧播放至该任一媒体帧所需的时长来表示,例如,单位可以为ms。终端从获取该任一媒体帧的时刻,到对该任一媒体帧所在的媒体帧组的传输结束的时刻之间的时间段内,缓存的媒体流能够播放的时间即为缓存增加量。而终端获取该缓存增加量对应的媒体流是需要时间的,获取该缓存增加量对应的媒体流时,终端仍然在播放缓存的媒体流,在这段时间内,终端播放的媒体流的时长即为播放量。终端能够根据第一缓存量、缓存增加量和播放量,获取每个候选码率对应的第二缓存量。多个候选码率对应的第二缓存量能够表示终端切换至多个候选码率完成对当前正在传输的媒体帧组的传输时,已缓存且未播放的媒体流能够播放的时长。
例如,可以用以下公式表示第二数据缓存量:
qn=qc+D-d-qb
其中,qc为第一缓存量,qb为播放量,qn为第n个候选码率对应的第二缓存量。D为该任一媒体帧所在的媒体帧组的长度,d为从该媒体帧组的第一帧播放至该任一媒体帧所需的时长,相应的,D-d可以表示缓存增加量。
通过获取缓存增加量和播放量,再结合获取的第一缓存量,能够得到每个候选码率的第二缓存量,提供了一种获得第二缓存量的方法,为后续根据第二缓存量与第一缓存量阈值和第二缓存量阈值的关系确定目标码率提供了基础。
在一种可能的实现方式中,在获取播放量时,还可以参考当前网络状态信息,来判断缓存完该任一媒体帧所在媒体帧组所需时间,并判断这段时间会播放多少缓存量。具体地,终端可以根据多个候选码率与当前码率之间的关系,确定继续缓存任一媒体帧所在媒体帧组时的缓存位置,获取当前网络状态信息,根据当前网络状态信息、缓存位置、媒体帧组的长度以及多个候选码率,确定当前到基于多个候选码率对任一媒体帧所在媒体帧组传输结束时的过程中媒体流的播放量。
其中,上述播放量为终端获取缓存增加量对应的媒体流的时间段内,播放的媒体流的时长,可见该播放量与终端获取缓存增加量对应的媒体流的速度有关,即与终端的网络状态有关。相应的,终端可以获取当前网络信息,该当前网络信息可以包括与当前时刻相近的一段时长内,终端的平均带宽。终端继续缓存任一媒体帧所在媒体帧组时的缓存位置与候选码率和当前码率之间的关系有关,当候选码率与当前码率相同时,终端无需切换码率,可以从该任一媒体帧的下一帧继续缓存该任一媒体帧所在的媒体帧组。当候选码率与当前码率不同时,为了防止终端对获取的媒体帧进行解码的过程中发生错误,终端可以从该任一媒体帧所在的媒体帧组的第一帧开始,缓存该任一媒体帧所在的媒体帧组。确定了终端继续缓存该任一媒体帧所在的媒体帧组时的缓存位置后,终端能够结合获取的当前网络状态信息,媒体帧组的长度以及多个候选码率,确定多个候选码率对该媒体帧组传输结束时的过程中的播放量。
例如,可以用以下公式表示第二数据缓存量:
当rn=rc时,qn=qc+D-d-(D-d)*rc*8/B
当rn≠rc时,qn=qc+D-d-D*rn*8/B
其中,rc为当前码率,rn为第n个候选码率,qn为第n个候选码率对应的第二缓存量,qc为第一缓存量,D为该任一媒体帧所在的媒体帧组的长度,d为从该媒体帧组的第一帧播放至该任一媒体帧所需的时长,B为终端在与当前时刻相近的一段时长内的平均带宽,D-d可以表示缓存增加量。当候选码率与当前码率相同时,终端无需切换码率,可以从该任一媒体帧的下一帧继续缓存该任一媒体帧所在的媒体帧组,相应的,(D-d)*rc*8/B可以表示播放量。当候选码率与当前码率不同时,终端可以从该任一媒体帧所在的媒体帧组的第一帧开始,缓存该任一媒体帧所在的媒体帧组,相应的,D*rn*8/B可以表示播放量。
其中,对于平均带宽,还可以利用以下公式得到终端在与当前时刻相近的一段时长内的平均带宽B:
B=S*8/T
其中,S为终端在与当前时刻相近的一段时长内下载的媒体流的数据量,T为与当前时刻相近的一段时长,例如,T可以取500毫秒。
通过确定继续缓存任一媒体帧所在的媒体帧组时的缓存位置,获取当前网络状态信息,结合媒体帧组的长度和多个候选码率,确定当前到基于多个候选码率对任一媒体帧所在媒体帧组传输结束时的过程中媒体流的播放量,提供了一种得到播放量的方法,使得终端能够更精确地得到第二缓存量。
在一种可能的实现方式中,对于上述情况一,终端可以响应于多个候选码率对应的第二缓存量中至少一个第二缓存量大于第一缓存量阈值,将该至少一个第二缓存量对应的候选码率中,最大的候选码率确定为目标码率。终端也可以响应于多个候选码率对应的第二缓存量中不包括大于第一缓存量阈值的第二缓存量,将当前码率确定为目标码率。
其中,对于上述情况一,第一缓存量大于第一缓存量阈值,也就是说,当前终端对媒体流已缓存且未播放的缓存量能够保证媒体流的流畅播放,此时可以考虑增大媒体流的载码率,以增强媒体流的清晰度。
当多个候选码率对应的第二缓存量中至少一个第二缓存量大于第一缓存量阈值时,该至少一个第二缓存量对应的至少一个候选码率能够保证媒体流的正常播放,相应的,终端可以将至少一个第二缓存量对应的候选码率中,最大的候选码率确定为目标码率,且该候选码率可以大于当前码率,这样,可以在保证媒体流能够正常播放的同时,增强媒体流的清晰度。
当多个候选码率对应的第二缓存量中不包括大于第一缓存量阈值的第二缓存量时,说明多个候选码率中,没有能够在保证媒体流的正常播放的同时,增强媒体流的清晰度的码率,因此终端可以将当前码率确定为目标码率,以当前码率继续缓存媒体流。
例如,当前码率可以用rc表示,目标码率用r表示,第n个候选码率可以用rn表示,第n个候选码率对应的第二缓存量可以用qn表示,第一缓存量阈值可以用qh表示。如果对于任意的rn>rc,不存在qn>qh,则取r=rc。如果对于任意的rn>rc,存在qn>qh,则取满足qn>qh的rn中,最大的rn作为目标码率。
通过将至少一个大于第一缓存量阈值的第二缓存量对应的候选码率中,最大的候选码率确定为目标码率,或将当前码率确定为目标码率,能够在保证媒体流的正常播放的同时,增强媒体流的清晰度,最大程度地优化了媒体流的播放的效果。
在一种可能的实现方式中,对于上述情况一,当多个候选码率对应的第二缓存量中至少一个第二缓存量大于第一缓存量阈值时,终端可以将该至少一个第二缓存量对应的大于当前码率的候选码率中,最小的候选码率确定为目标码率。
其中,该至少一个第二缓存量对应的大于当前码率的候选码率中的每个候选码率均可以在保证媒体流能够正常播放的同时,增强媒体流的清晰度,选择其中最小的码率作为目标码率,可以避免因目标码率与当前码率的差距过大,而导致媒体流的获取发生卡顿,影响媒体流的正常播放的情况发生。
在一种可能的实现方式中,对于上述情况二,终端可以响应于多个候选码率对应的第二缓存量中至少一个第二缓存量大于第二缓存量阈值,将至少一个第二缓存量对应的候选码率中,最大的候选码率确定为目标码率。终端也可以响应于多个候选码率对应的第二缓存量中不包括大于第二缓存量阈值的第二缓存量,将多个候选码率对应的第二缓存量中,最大的第二缓存量对应的候选码率确定为目标码率。
其中,对于上述情况二,第一缓存量小于第二缓存量阈值,也就是说,当前终端对媒体流已缓存且未播放的缓存量不能保证媒体流的流畅播放,此时可以考虑减小媒体流的下载码率,以避免媒体流的播放卡顿。当多个候选码率对应的第二缓存量中至少一个第二缓存量大于第二缓存量阈值时,该至少一个第二缓存量对应的至少一个候选码率能够保证媒体流的正常播放,相应的,终端可以将至少一个第二缓存量对应的候选码率中,最大的候选码率确定为目标码率,这样,可以在保证媒体流的正常播放的同时,尽量保证媒体流的清晰度不会降低太多。当多个候选码率对应的第二缓存量中不包括大于第二缓存量阈值的第二缓存量时,说明多个候选码率中,没有能够保证媒体流的正常播放的码率,因此终端可以将多个候选码率对应的第二缓存量中,最大的第二缓存量对应的候选码率确定为目标码率,这样能够尽量保证媒体流的正常播放。
例如,当前码率可以用rc表示,目标码率用r表示,第n个候选码率可以用rn表示,第n个候选码率对应的第二缓存量可以用qn表示,第二缓存量阈值可以用ql表示。如果对于任意的rn,不存在qn≥ql,则取最大的qn对应的rn作为目标码率。如果对于任意的rn,存在qn≥ql,则取满足qn≥ql的rn中,最大的rn作为目标码率。
通过将至少一个大于第二缓存量阈值的第二缓存量对应的候选码率中,最大的候选码率确定为目标码率,或将多个候选码率对应的第二缓存量中,最大的第二缓存量对应的候选码率确定为目标码率,能够尽量保证媒体流可以正常播放,且媒体流的清晰度不会降低太多,最大程度地优化了媒体流的播放的效果。
需要说明的是,上述步骤S52可以为本公开实施例的可选步骤,在一种可能的实现方式中,目标码率也可以为预设的码率,或者为码率选择指令中所指示的码率,例如,用户可以选择切换码率,并指定目标码率。相应地,终端可以根据该目标码率,执行下述步骤S53所述的步骤,本公开对获取目标码率的方式不做限定。
上述均以播放状态信息包括第一缓存量为例进行说明,在另一种可能的实现方式中,播放状态信息可以包括媒体流播放过程中的卡顿信息或丢帧率中至少一项,相应地,播放状态信息符合码率切换条件可以为卡顿信息或丢帧率中任一项满足码率切换条件。
其中,卡顿信息可以包括播放媒体流的目标时间段内的卡顿次数、上一次卡顿的时间或上一次的卡顿时长中至少一项。相应地,码率切换条件可以包括多种情况,例如:卡顿次数大于次数阈值,上一次卡顿时间与当前时刻之间的时长小于间隔阈值和卡顿时长大于时长阈值,或者上一次卡顿时长大于时长阈值等,在这些情况下,终端可以考虑降低码率。当然,码率切换条件也可以包括卡顿次数小于次数阈值,上一次卡顿时间与当前时刻之间的时长大于间隔阈值和卡顿时长小于时长阈值,上一次卡顿时长小于时长阈值,在这些情况下,终端可以考虑提高码率。
对于丢帧率,相应地,码率切换条件可以包括丢帧率大于第一丢帧率阈值,码率切换条件也可以为丢帧率小于第二丢帧率阈值,第二丢帧率阈值小于第一丢帧率阈值。在一种可能实现方式中,该丢帧率还可以为目标时间段内的丢帧率,例如,过去一分钟内的丢帧率,通过一段时间内的丢帧率来判断这段时间的媒体流传输情况,从而来判断是否需要调整码率。
通过播放状态信息包括的卡顿信息或丢帧率,提供了一种根据卡顿信息或丢帧率,确定当前是否符合码率切换条件的方法,使得终端能够根据更多的判断条件切换媒体流的码率,提高了该码率切换方法的适用性。且码率切换条件考虑到多方面因素,切换后能够的码率更能够适应真实的传输情况,媒体流的传输情况和播放情况能够得到更好的优化。
需要说明的是,上述步骤S52中终端根据播放状态信息以及当前码率,确定目标码率的步骤可以为本公开实施例的可选步骤。在一种可能的实现方式中,目标码率可以为预设的码率,相应地,当播放状态信息满足码率切换条件时,终端可以直接将预设的码率确定为目标码率,进而触发帧获取指令,以执行下述步骤S53。本公开对确定目标码率的方法不做限定。
在步骤S53中,终端接收对媒体流的帧获取指令。
通过上述内容可知,该帧获取指令有两种触发方式:第一种触发方式中,帧获取指令可以在播放状态信息满足码率切换条件时触发,或,第二种触发方式中,帧获取指令由对媒体流的播放操作触发。
上述两种情况中,目标码率的确定方式不同,在第一种触发方式中,由于满足码率切换条件,该目标码率可以为确定的待切换的码率。在一种可能实现方式中,该目标码率与当前码率的关系可能不同,例如,该目标码率与当前码率不同,也即是,通过上述确定过程,确定切换码率,则终端可以触发该帧获取指令,并执行后续的请求发送步骤。又例如,该目标码率与当前码率相同,也即是,通过上述确定过程,确定不切换码率,则终端可以保持当前码率继续从服务器接收媒体流的媒体帧,相应地,终端可以不触发该帧获取指令,或者触发该帧获取指令,终端接收到该帧获取指令后,丢弃该帧获取指令,而不响应。当然,终端也就无需执行后续的请求发送步骤。采取这样的设置,可以避免终端与服务器之间传输冗余指令,简化了执行码率切换方法所需的步骤。
在第二种触发方式中,在播放该媒体流时,该目标码率可以为用户选定的码率,也可以为默认码率,本公开实施例对此不作限定。
在步骤S54中,终端响应于对媒体流的帧获取指令,从媒体流的媒体描述文件包括的多种码率的媒体流的地址信息中,确定目标码率的媒体流的目标地址信息。
其中,服务器在对媒体流进行转码之后,可能会形成多种码率的媒体流,此时服务器可以为不同码率的媒体流分配不同的地址信息,将各种码率的媒体流的地址信息均记录在媒体描述文件中,终端可以从服务器中下载该媒体流的媒体描述文件,并基于该媒体描述文件,确定不同码率的媒体流的地址信息。终端在确定目标码率之后,可以在媒体描述文件中以目标码率为索引,查询得到与目标码率的媒体流对应的媒体描述元信息,在该媒体描述元信息的属性信息中提取出目标地址信息。
上述媒体描述文件,是由服务器基于业务需求提供给终端的数据文件,可以由服务器按照业务需求进行预先配置,用于向终端提供流媒体服务的一组数据的集合以及业务相关的描述,能够保证终端获取到进行资源下载、解码、播放渲染时所需要的必要信息,媒体描述文件包括已编码并可传输的媒体流以及相应的元信息描述,使得终端能够基于媒体描述文件来构建帧获取请求(FAS请求),从而由服务器根据FAS标准的处理规范来响应帧获取请求,向终端提供流媒体服务。
在一种可能的实现方式中,该媒体描述文件可以是JSON(JavaScript ObjectNotation,JS对象简谱)格式的文件,当然也可以是其他格式的文件,本公开实施例不对媒体描述文件的格式进行具体限定。该媒体描述文件可以包括版本号(@version)和媒体描述集合(@adaptationSet),下面进行详述:
在一种可能的实现方式中,由于媒体描述文件本身可能会由于转码方式的变换而产生不同的版本,而FAS标准也会随着技术的发展而进行版本更迭,因此该版本号可以包括该媒体描述文件的版本号或者资源传输标准(FAS标准)的版本号中至少一项,比如,该版本号可以仅包括FAS标准的版本号,或者仅包括媒体描述文件的版本号,或者该版本号还可以是媒体描述文件与FAS标准的版本号之间的组合。
在一种可能的实现方式中,该媒体描述集合用于表示媒体流的元信息,该媒体描述集合可以包括多个媒体描述元信息,每个媒体描述元信息对应于一种码率的媒体流,每个媒体描述元信息可以包括该媒体描述元信息所对应码率的媒体流的画面组长度(@gopDuration)以及属性信息(@representation)。
这里的画面组(Group Of Pictures,GOP)长度是指两个关键帧之间的距离,关键帧是指视频编码序列中的帧内编码图像帧(Intra-coded picture,也称为“I帧”),I帧的编解码不需要参考其他图像帧,仅利用本帧信息即可实现,而相对地,P帧(Predictive-codedpicture,预测编码图像帧)和B帧(Bidirectionally predicted picture,双向预测编码图像帧)的编解码均需要参考其他图像帧,仅利用本帧信息无法完成编解码。也即是上述步骤S52中媒体帧所在媒体帧组,由于该媒体流中可能仅包括音频流,也可能包括音频流和视频流,如果该媒体流中包括视频流,该媒体帧组则可以为该画面组,如果该媒体流中仅包括音频流,该媒体帧组则可以为音频帧组。
在一种可能的实现方式中,对每个媒体描述元信息所包括的属性信息(也即每个属性信息)而言,每个属性信息可以包括媒体流的标识信息、媒体流的编码方式、媒体流所支持的码率以及该码率的媒体流的地址信息。
标识信息(@id):指每个媒体流独一无二的标识符,标识信息可以由服务器进行分配。
编码方式(@codec):指媒体流遵从的编解码标准,例如H.263、H.264、H.265、MPEG等。
媒体流所支持的码率(@bitrate):指资源传输时单位时间内传送的数据位数,也称为比特率,以音频资源为例,码率越高,则音频资源被压缩的比例越小,音质损失越小,那么与音源的音质就越接近(音质越好),视频资源与音频资源类似,但由于视频资源由图像资源和音频资源组装而成,因此在计算码率时除了音频资源之外还要加上对应的图像资源。
某种码率的媒体流的地址信息(@url):指服务器在针对媒体流进行转码,得到该码率的媒体流之后,对外提供该码率的媒体流的URL(Uniform Resource Locator,统一资源定位符)或域名(Domain Name)。
在一种可能的实现方式中,每个属性信息还可以包括媒体流的质量类型、媒体流的隐藏选项、第一自适应功能选项或者默认播放功能选项中至少一项。
质量类型(@qualityType):包括媒体流的分辨率或者帧率等质量评价指标。
媒体流的隐藏选项(@hiden):用于表示媒体流是否外显,若设定为true,表示对应码率的媒体流不外显,此时用户无法手动选择对应码率的媒体流,只能通过自适应功能来选中该码率的媒体流,若设定为false,表示对应码率的媒体流外显,此时除了能够通过自适应功能选中该码率的媒体流之外,用户还能够手动选择对应码率的媒体流。需要说明的是,本申请所涉及的自适应功能,是指终端根据当前的网络带宽情况对所播放的媒体流进行动态帧率调整的功能,后文不做赘述。
第一自适应功能选项(@enableAdaptive):用于表示媒体流是否相对于自适应功能可见,若设定为true,表示对应码率的媒体流对于自适应功能可见,对应码率的媒体流能够被自适应功能选中,若设定为false,表示对应码率的媒体流对于自适应功能不可见,对应码率的媒体流不能被自适应功能选中。
默认播放功能选项(@defaultSelect):用于表示是否在启播时默认播放对应码率的媒体流,若设定为true,表示启播时默认播放对应码率的媒体流,若设定为false,表示启播时不默认播放对应码率的媒体流,由于媒体播放组件无法默认播放两种码率的媒体流(存在播放冲突),因此,在所有媒体描述元信息的属性信息中,最多只能出现一个码率的媒体流的默认播放功能选项(@defaultSelect)为true。
在一种可能的实现方式中,除了版本号和媒体描述集合之外,该媒体描述文件还可以包括服务类型、第二自适应功能选项或者第三自适应功能选项中至少一项。
服务类型(@type):用于指定媒体流的业务类型,包括直播或者点播中至少一项,比如,设定为“dynamic”时表示直播,设定为“static”时表示点播,若不做规定时,可以将“dynamic”作为默认值。
第二自适应功能选项(@hideAuto):用于表示是否打开自适应功能,若设定为true,代表关闭自适应功能,且不显示自适应选项,若设定为false,代表开启自适应功能,且显示自适应选项,若不做规定时,可以将“false”作为默认值。
第三自适应功能选项(@autoDefaultSelect):用于表示是否在启播时默认打开自适应功能,若设定为true,代表在开始播放(启播)时默认基于自适应功能播放,若设定为false,代表在开始播放时默认不基于自适应功能播放,即启播时默认关闭自适应功能。需要说明的是,这里的第三自适应功能选项是上述默认播放功能选项的前提,也即是,只有在第三自适应功能选项设置为flase(启播时默认关闭自适应功能)时,默认播放功能选项才会有效,这时在启播时会默认播放@defaultSelect设置为true所对应码率的媒体流,否则,若第三自适应功能选项设置为true,那么在启播时会根据自适应功能选中最适合当前网络带宽情况的码率的媒体流。
在步骤S55中,终端确定目标码率对应的待获取媒体帧在媒体流中的起始位置。
其中,与该帧获取指令包括两种触发方式对应,在两种触发方式中,目标码率对应的待获取媒体帧可能不同,该待获取媒体帧在媒体流中的起始位置则可能也不同。
对于第一种触发方式中帧获取指令在媒体流的播放状态信息满足码率切换条件时触发的情况,终端确定了可以优化媒体流的播放效果的目标码率后,由于目标码率可能与当前码率不同,根据终端对媒体帧解码时的参考关系,终端切换码率后在目标码率对应的媒体流中开始下载媒体帧的位置,可能与在当前码率对应的媒体流中该任一媒体帧的位置不同。该目标码率对应的待获取媒体帧在媒体流中的起始位置,即为终端将码率切换至目标码率后,开始获取的媒体帧在媒体流中的位置。
在一种可能的实现方式中,终端能够根据任一媒体帧在媒体流中的位置,确定目标码率对应的待获取媒体帧在媒体流中的起始位置。具体地,终端能够响应于目标码率与当前码率相等,丢弃播放状态信息,而不再确定目标位置。终端也可以响应于目标码率与当前码率不相等,将该任一媒体帧所在媒体帧组中的第一个媒体帧在媒体流中的位置确定为起始位置。
其中,如果目标码率与当前码率相同,则终端传输媒体流的码率没有发生变化,因此可以继续基于当前码率,从该任一媒体帧的下一个媒体帧开始传输媒体帧,相应地,终端可以丢弃获取的播放状态信息。在对媒体流进行转码时,媒体流中的关键媒体帧是严格对齐的,也就是说,不同码率的媒体流中,相对应的媒体帧组中的第一媒体帧的位置是相同的。如果目标码率与当前码率不相同,码率发生了变化,该任一媒体帧所在媒体帧组的码率需要保持一致,因而,可以重新按照目标码率传输该媒体帧组的媒体帧。终端可以从该任一媒体帧所在的媒体帧组中的第一媒体帧所在的位置,基于目标码率开始传输媒体帧。
例如,如图6所示,终端当前正在传输的媒体流可以包括两个媒体帧组,每个媒体帧组中可以包括多个媒体帧,每个媒体帧均对应于一个时间戳。第一个媒体帧组中的媒体帧按时间戳的排列顺序可以为[1000,2000,3000,4000,5000,6000],第二个媒体帧组中的媒体帧按时间戳的排列顺序可以为[7000,8000,9000,10000,11000,12000]。以终端正在接收第二媒体帧组中,时间戳为8000的媒体帧为例进行说明,如果终端接收到时间戳为8000的媒体帧后,确定出的目标码率与当前码率相同,则无需进行码率切换,也无需向服务器发送帧获取请求,可以继续接收从时间戳为9000的媒体帧开始的媒体帧。如果终端接收到时间戳为8000的媒体帧后,确定出的目标码率与当前码率不同,则可以进行码率切换,向服务器发送帧获取请求,并为了使媒体帧组的码率保持一致,可以从时间戳为7000的媒体帧开始重新获取该媒体帧组中的媒体帧。通过根据任一媒体帧在媒体流中的位置,重新确定目标码率对应的待获取媒体帧在媒体流中的起始位置,避免了终端对媒体帧解码时发生错误的情况发生。
需要说明的是,终端可以从该任一媒体帧所在的媒体帧组中的第一媒体帧所在的位置,基于目标码率开始传输媒体帧,相应地,终端中可能同时存在不同码率的媒体流,终端播放媒体流时,可以优先播放高码率的媒体流,提高媒体流的清晰度。
对于帧获取指令由对媒体流的播放操作触发的情况,该目标码率对应的待获取媒体帧可能包括多种情况,下面提供了三种可能情况。
情况一、终端可以将媒体流中播放操作的操作时间产生的媒体帧所在位置确定为起始位置。
例如,在直播场景中,用户想要观看某个主播直播,则可以进行对该媒体流的播放操作,如点击该主播的直播房间链接,进入该主播的直播房间。终端可以将当前时间正产生的媒体帧在直播流中的位置作为该起始位置。
情况二、终端将帧获取指令中所选定的媒体帧在媒体流中的位置确定为起始位置。
例如,在点播场景中,用户想要从视频的第15秒开始观看,则可以进行对该视频的播放操作,控制该媒体流从15秒开始播放,终端则可以将15秒对应的媒体帧在视频中的位置作为该起始位置。
情况三、终端将媒体流的第一个媒体帧所在位置确定为起始位置。
例如,在点播场景中,用户想要观看某个视频,则可以对视频进行播放操作,终端可以将该视频的第一个媒体帧所在位置确定为起始位置。
上述播放操作可以发生在终端第一次获取到媒体流之前,也可以发生在终端播放媒体流的过程中。终端可以根据播放操作的操作时间,将该操作时间对应的媒体帧所在的位置确定为起始位置,保证用户可以获得该操作时间之后的媒体流。当然,由于媒体描述文件可能会发生变化造成版本更迭,那么终端也可以每当用户点击播放选项时,均重新下载一次媒体描述文件,将媒体流的第一个媒体帧所在位置确定为起始位置,这样能够确保多媒体资源播放的流畅性,缩短由于媒体描述文件失效而导致的等待时间。终端还可以将帧获取指令中所选定的媒体帧在媒体流中的位置确定为起始位置,本公开实施例对此不做限定。
在步骤S56中,终端向服务器发送携带有目标地址信息和起始位置的帧获取请求,帧获取请求用于指示服务器以目标码率传输媒体流中从起始位置开始的媒体帧。
其中,终端获取目标地址信息和起始位置后,可以生成携带该目标地址信息和起始位置的帧获取请求,进而可以向服务器发送携带目标地址信息的帧获取请求(或称为FAS请求)。
在一种可能的实现方式中,除了目标地址信息(@url)之外,该帧获取请求还可以包括扩展参数(@extParam),该扩展参数用于指定不同的请求方式,从而实现不同的功能,该扩展参数可以包括第一扩展参数或者第二扩展参数中至少一项,下面进行详述:
第一扩展参数(@onlyAudio)属于一种音频参数,用于表示该媒体帧是否为音频帧,若设定为true,表示终端拉取的媒体帧为音频帧,也即只拉取纯音频流,否则,若设定为false,表示终端拉取的媒体帧为音视频帧,也即拉取音频流和视频画面流,若不做规定时,可以将“false”作为默认值。
在一个示例性场景中,终端可以获取媒体流的类型,若媒体流的类型为视频,可以将第一扩展参数置为“false”或者默认值,若媒体流的类型为音频,可以将第一扩展参数置为“true”。
在一种可能的实现方式中,终端还可以检测应用程序的类型,若应用程序的类型为视频应用,可以将第一扩展参数置为“false”或者默认值,若应用程序的类型为音频应用,可以将第一扩展参数置为“true”。
第二扩展参数(@fasSpts)属于一种拉取位置参数,用于表示从该第二扩展参数所指示的目标时间戳开始传输该媒体流的媒体帧,可选地,该第二扩展参数的数据类型可以为int64_t类型,当然,也可以为其他数据类型,本公开实施例不对第二扩展参数的数据类型进行具体限定。在帧获取请求中可以指定第二扩展参数,若帧获取请求中未指定第二扩展参数,那么服务器由服务器来配置第二扩展参数的默认值。
针对第二扩展参数的不同取值,分别讨论对应取值下的媒体帧拉取情况:
1)若该第二扩展参数大于零(@fasSpts>0),此时该目标时间戳pts大于当前时刻,那么终端将从pts等于@fasSpts的媒体帧(未来的某个时刻)开始拉取媒体流。
2)若该第二扩展参数等于零(@fasSpts=0),此时该目标时间戳pts为距离当前时刻最接近的关键帧或音频帧的时间戳,具体地,在拉取音频帧(纯音频模式)时,终端从最新的音频帧开始拉取媒体流,或者,在拉取音视频帧(非纯音频模式)时,终端从最新的视频I帧开始拉取媒体流。
3)若该第二扩展参数小于零(@fasSpts<0),此时该目标时间戳小于当前时刻,且该媒体帧包括从该目标时间戳开始已缓存的媒体帧,也即是,终端拉取缓存长度为|@fasSpts|毫秒的媒体流。
在一种可能的实现方式中,终端可以根据多媒体描述文件中的服务类型(@type)字段来确定第二扩展参数,若查询到服务类型为“dynamic”(直播)且用户未指定播放进度,终端可以将第二扩展参数置为0,以便于用户能够实时观看到最新的直播视频流;若查询到服务器类型为“dynamic”(直播)且用户指定了播放进度,终端可以将第二扩展参数置为播放进度所对应的时间戳(目标时间戳),从而能够方便地根据用户所指定的起点开始拉取媒体流;若查询到服务类型为“static”(点播)且用户未指定播放进度,终端可以检测媒体流在上一次关闭时的历史播放进度,将第二扩展参数置为该历史播放进度所对应的时间戳(目标时间戳),从而能够方便用户从上一次观看到的进度开始继续进行观看,需要说明的是,若用户首次观看媒体流,此时查询不到任何历史播放进度,终端可以将第二扩展参数置为首个媒体帧的时间戳(目标时间戳);若查询到服务类型为“static”(点播)且用户指定了播放进度,终端可以将第二扩展参数置为播放进度所对应的时间戳(目标时间戳),从而能够方便地根据用户所指定的起点开始拉取媒体流。
对帧获取请求而言,可以认为其格式为目标码率的媒体流的url地址加上扩展字段,可以形象地表示为“url&extParam”,在FAS标准中,服务器在接收到帧获取请求之后,能够按照FAS所规定的处理规范,对帧获取请求进行响应处理,可以参考下述步骤S57。
在步骤S57中,服务器接收并响应帧获取请求,从目标地址信息对应的地址,获取从起始位置开始的媒体帧。
其中,服务器在接收到帧获取请求之后,可以解析该帧获取请求,得到目标地址信息和起始位置,服务器可以基于目标地址信息和起始位置,从资源库中定位到目标码率的媒体流中,起始位置对应的媒体帧,获取从该媒体帧开始的媒体帧。
在一种可能的实现方式中,服务器可以基于起始位置,确定目标时间戳,再基于目标时间戳,确定并获取从起始位置开始的媒体帧。其中,媒体流中的每个媒体帧均对应一个时间戳,服务器可以基于起始位置,定位到起始位置的媒体帧,进而根据该媒体帧的时间戳确定目标时间戳,再通过目标时间戳定位到开始传输的媒体帧,进而,服务器能够该媒体帧开始向终端传输媒体流。
在一种可能的实现方式中,起始位置可以为拉取位置参数,上述确定目标时间戳的过程可以为:服务器可以基于音频参数和拉取位置参数,确定目标时间戳。
其中,该拉取位置参数(@fasSpts)用于指示服务器具体从哪帧开始发送媒体流,拉取位置参数的数据类型可以为int64_t类型,当然,也可以为其他数据类型,本公开实施例不对拉取位置参数的数据类型进行具体限定。在帧获取请求中,拉取位置参数可以等于0、大于0、小于0或者缺省,在不同的取值情况下会对应于服务器不同的处理逻辑,将在下述步骤S57中进行详述。
在一些实施例中,若该帧获取请求携带拉取位置参数,服务器可以解析该帧获取请求得到该拉取位置参数,这种情况下终端在帧获取请求中指定了拉取位置参数,服务器可以直接对帧获取请求的@fasSpts字段进行解析,得到拉取位置参数。
在一些实施例中,若该帧获取请求缺省拉取位置参数,服务器将该拉取位置参数配置为默认值,这种情况下终端并未在帧获取请求中指定拉取位置参数,那么服务器为其配置默认值,令@fasSpts=defaultSpts。这里的默认值可以由服务器根据业务场景自行配置,比如,在直播业务场景下,可以将defaultSpts设置为0,在点播业务场景下,可以将defaultSpts设置为上一次结束观看时历史媒体帧的PTS(Presentation Time Stamp,显示时间戳),若缓存中未记录历史媒体帧的PTS,那么将defaultSpts设置为首个媒体帧的PTS。
其中,该音频参数(@onlyAudio)用于指示媒体流的拉取模式,若设定为true,表示服务器传输至终端的媒体帧为音频帧,俗称为“纯音频模式”,否则,若设定为false,表示服务器传输至终端的媒体帧为音视频帧,俗称为“非纯音频模式”。在帧获取请求中,音频参数可以为真、假或者缺省,在不同的取值情况下会对应于服务器不同的处理逻辑,将在下述步骤S57中进行详述。
在一些实施例中,若该帧获取请求携带音频参数,服务器可以解析该帧获取请求得到该音频参数,这种情况下终端在帧获取请求中指定了音频参数,服务器可以直接对帧获取请求的@onlyAudio字段进行解析,得到音频参数。
在一些实施例中,若该帧获取请求缺省音频参数,服务器将该音频参数配置为默认值,这种情况下终端并未在帧获取请求中指定音频参数,那么服务器为其配置默认值。这里的默认值可以由服务器根据业务场景自行配置,比如,在提供视频业务时,将默认值设置为假,也即令@onlyAudio=false,或者,在仅提供音频业务时,将默认值设置为真,也即令@onlyAudio=true。需要说明的是,在本公开实施例中,仅以默认值为假(false)为例进行说明,根据默认值的不同,服务器的处理逻辑可以进行适应性调整,后文不做赘述。
在一些实施例中,在确定目标时间戳之前,服务器可以通过执行下述步骤S57A-S57B来刷新当前有效缓存区:
S57A、若缓存区中媒体帧序列中媒体帧的时间戳呈非单调递增,服务器确定该缓存区发生时间戳回退,否则,若缓存区中的媒体帧序列呈单调递增,那么服务器可以确定该缓存区未发生时间戳回退。
其中,媒体帧序列为缓存区缓存的多个媒体帧所组成的序列。上述时间戳回退现象是指缓存区内的媒体帧并非按照时间戳单调递增的顺序进行存放,此时缓存区中存在冗余的媒体帧,这种现象通常容易发生在直播业务场景中,主播终端推流到服务器的过程中,由于网络波动、延时等原因,先发送的媒体帧有可能反而较晚到达服务器,致使缓存区内媒体帧序列中媒体帧的时间戳呈非单调递增,引发时间戳回退现象,另外,为了避免丢包问题,主播终端通常还会将各个媒体帧进行多次发送,这种冗余多发机制也会致使缓存区内媒体帧序列中媒体帧的时间戳呈非单调递增,引发时间戳回退现象。
在确定媒体帧序列中媒体帧的时间戳是否呈非单调递增时,服务器只需要从时间戳最小的媒体帧开始,按照缓存区内媒体帧序列的存放顺序,遍历是否存在媒体帧的时间戳大于下一媒体帧的时间戳,若存在任一媒体帧的时间戳大于下一媒体帧的时间戳,确定媒体帧序列中媒体帧的时间戳呈非单调递增,确定缓存区发生时间戳回退,否则,若所有媒体帧的时间戳均小于或等于下一媒体帧的时间戳,确定媒体帧序列中媒体帧的时间戳呈单调递增,确定缓存区未发生时间戳回退。
例如,假设缓存区内媒体帧序列中媒体帧的时间戳分别为[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帧的时间戳呈单调递增,那么可以认为缓存区未发生时间戳回退,反之,一旦I帧序列中I帧的时间戳呈非单调递增,那么可以确定缓存区发生时间戳回退。当然,如果缓存区里没有视频资源,那么直接对所有音频帧的PTS序列进行遍历判断即可,这里不做赘述。
在一些实施例中,由于时间戳回退现象可能不止发生一次,也即是说,在媒体帧序列中媒体帧的时间戳里可以划分出多个单调递增阶段,在每个阶段内部的媒体帧的时间戳呈单调递增,但是在不同阶段之间的媒体帧的时间戳呈非单调递增,这时缓存区中存在很多冗余无效的媒体帧,服务器可以通过执行下述步骤S57B在缓存区中确定当前有效缓存区。
S57B、服务器将最后一个单调递增阶段所包含的各个媒体帧确定为当前有效缓存区内的资源。
在上述过程中,服务器从媒体帧序列中确定最后一个单调递增阶段中首个媒体帧,将媒体帧序列中从上述首个媒体帧开始到具有最大时间戳的媒体帧(相当于最新的媒体帧)之间的所有媒体帧确定为当前有效缓存区,这样可以保证当前有效缓存区内的媒体帧的时间戳呈单调递增。
例如,假设缓存区内媒体帧序列中媒体帧的时间戳分别为[1001,1002,1003,1001,1002,1003,1004…],省略部分的媒体帧的时间戳呈递增,此时缓存区发生时间戳回退,可以看出最后一个单调递增阶段的首个媒体帧为第4个媒体帧,那么将从第4个媒体帧开始到最新的媒体帧之间的所有媒体帧确定为当前有效缓存区。又比如,假设缓存区内媒体帧序列中媒体帧的时间戳分别为[1001,1002,1003,1001,1002,1003,1001…],省略部分的媒体帧的时间戳呈递增,缓存区发生时间戳回退,可以看出最后一个单调递增阶段的首个媒体帧为第7个媒体帧,那么将从第7个媒体帧开始到最新的媒体帧之间的所有媒体帧确定为当前有效缓存区。
在一些实施例中,可以对视频资源和音频资源进行分别讨论:若缓存区内包括视频资源,对视频资源而言,服务器可以以视频资源的I帧作为计算点,从最后一个单调递增阶段的首个关键帧到最新的视频帧之间的所有媒体帧作为当前有效缓存区,其中,最新的视频帧的时间戳可以表示为latestVideoPts;若缓存区内不包括视频资源,对音频资源而言,服务器可以以音频帧作为计算点,从最后一个单调递增阶段的首个音频帧到最新的音频帧之间的所有媒体帧作为当前有效缓存区,其中,最新的音频帧的时间戳可以表示为latestAudioPts。
可选地,更新当前有效缓存区的操作可以是定时触发的,也可以由技术人员手动触发,当然,还可以每当接收到帧获取请求时进行一次更新,这种方式称为“被动触发”,本公开实施例不对更新当前有效缓存区的触发条件进行具体限定。
通过上述步骤S57A-S57B,能够及时发现缓存区内的时间戳回退现象,并基于针对时间戳回退现象进行处理,更新当前有效缓存区,避免在后续传输媒体帧的过程中出现异常。
图7是本公开实施例提供的一种确定目标时间戳的原理性示意图,请参考图7,示出了服务器在不同拉取位置参数以及音频参数的取值情况下,分别具有不同的处理逻辑,以下,将对服务器的处理逻辑进行介绍,由于拉取位置参数的取值情况可以分为四种:默认值、等于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),且缓存区中未发生时间戳回退时,不论音频参数为真、为假还是默认值,服务器均将拉取位置参数确定为目标时间戳。
在上述各个情况中,服务器判断是否发生时间戳回退的操作可以参见上述步骤S57A,服务器更新当前有效缓存区的操作可以参见上述步骤S57B,这里不做赘述。
在上述基础上,服务器在拉取位置参数的不同取值情况下,均能够执行对应的处理逻辑,从而确定出目标时间戳,该目标时间戳用于确定媒体流的从起始位置开始的媒体帧。
在一些实施例中,服务器确定目标时间戳后,器可以通过下述方式一确定从起始位置开始的媒体帧:
方式一、服务器将当前有效缓存区中时间戳最接近该目标时间戳的媒体帧确定为从起始位置开始的媒体帧。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,将视频资源中时间戳最接近该目标时间戳的关键帧(I帧)确定为从起始位置开始的媒体帧;若当前有效缓存区中不包括视频资源,将时间戳最接近该目标时间戳的音频帧确定为从起始位置开始的媒体帧。
可选地,在音频参数为真的情况下,服务器可以直接将时间戳最接近该目标时间戳的音频帧确定为从起始位置开始的媒体帧。
具体地,可以包括下述几种示例性场景:
A):@fasSpts=defaultSpts,@onlyAudio缺省或@onlyAudio=false时,请参考上述情况一中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts–|defaultSpts|,服务器将PTS最接近latestVideoPts–|defaultSpts|的I帧作为从起始位置开始的媒体帧;此外,若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts–|defaultSpts|,服务器将PTS最接近latestAudioPts–|defaultSpts|的音频帧作为从起始位置开始的媒体帧。
B):@fasSpts=defaultSpts,@onlyAudio=true时,请参考上述情况一中的示例2),目标时间戳为latestAudioPts–|defaultSpts|,服务器将PTS最接近latestAudioPts–|defaultSpts|的音频帧作为从起始位置开始的媒体帧。
C):@fasSpts=0,@onlyAudio缺省或@onlyAudio=false时,请参考上述情况二中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts,服务器将PTS最接近latestVideoPts的I帧作为从起始位置开始的媒体帧;若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧作为从起始位置开始的媒体帧。
D):@fasSpts=0,@onlyAudio=true时,请参考上述情况二中的示例2),目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧作为从起始位置开始的媒体帧。
E):@fasSpts<0,@onlyAudio缺省或@onlyAudio=false时,请参考上述情况三中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts-|@fasSpts|,服务器将PTS最接近latestVideoPts-|@fasSpts|的I帧作为从起始位置开始的媒体帧;反之,若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts-|@fasSpts|,服务器将PTS最接近latestAudioPts-|@fasSpts|的音频帧作为从起始位置开始的媒体帧。
F):@fasSpts<0,@onlyAudio=true时,请参考上述情况三中的示例2),目标时间戳为latestAudioPts-|@fasSpts|,服务器可以将PTS最接近latestAudioPts-|@fasSpts|的音频帧作为从起始位置开始的媒体帧。
G):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中发生时间戳回退时,请参考上述情况四中的示例1),若当前有效缓存区中包括视频资源,目标时间戳为latestVideoPts,服务器将PTS最接近latestVideoPts的I帧(最新的I帧)作为从起始位置开始的媒体帧;若当前有效缓存区中不包括视频资源,目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧(最新的音频帧)作为从起始位置开始的媒体帧。
H):@fasSpts>0,@onlyAudio=true,缓存区中发生时间戳回退时,请参考上述情况四中的示例2),目标时间戳为latestAudioPts,服务器将PTS最接近latestAudioPts的音频帧(最新的音频帧)作为从起始位置开始的媒体帧。
以此类推,在@fasSpts>0时,针对上述情况四中的其余示例性讨论,在确定目标时间戳之后,服务器也可以通过上述方式一,将当前有效缓存区中时间戳最接近该目标时间戳的媒体帧确定为从起始位置开始的媒体帧,这里不进行一一枚举。
在一些实施例中,在@fasSpts>0时,除了上述方式一之外,服务器还可以通过下述方式二来确定媒体帧:
方式二、若该当前有效缓存区中存在目标媒体帧,服务器将该目标媒体帧确定为从起始位置开始的媒体帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,目标媒体帧是指视频资源内的I帧;若当前有效缓存区中不包括视频资源,目标媒体帧是指音频帧。
可选地,在音频参数为真的情况下,目标媒体帧是指音频帧。
具体地,可以包括下述几种示例性场景:
I):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中未发生时间戳回退时,请参考上述情况四中的示例3),此时目标时间戳为@fasSpts,若当前有效缓存区中包括视频资源,服务器可以从PTS最小的I帧开始,沿着PTS增大的方向逐个遍历,直到查询到第一个PTS≥@fasSpts的I帧(目标媒体帧),说明当前有效缓存区中存在目标媒体帧,服务器将上述目标媒体帧确定为从起始位置开始的媒体帧;若当前有效缓存区内不包括视频资源,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,直到查询到第一个PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中存在目标媒体帧,服务器将上述目标媒体帧确定为从起始位置开始的媒体帧。
J):@fasSpts>0,@onlyAudio=true,缓存区中未发生时间戳回退时,请参考上述情况四中的示例4),此时目标时间戳为@fasSpts,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,直到查询到第一个PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中存在目标媒体帧,服务器将上述目标媒体帧确定为从起始位置开始的媒体帧。
上述方式二中,提供了在当前有效缓存区中能够查询到目标媒体帧时,服务器如何确定从起始位置开始的媒体帧,然而,在一些实施例中,有可能在当前有效缓存区内并未查询到目标媒体帧,这种情况通常会出现在直播业务场景中,观众终端所指定拉取@fasSpts的帧获取请求先到达了服务器,而@fasSpts所对应的媒体帧(直播视频帧)还在推流阶段的传输过程中,此时服务器还可以通过下述方式三来确定从起始位置开始的媒体帧。
方式三、若该当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,直到该目标媒体帧写入该当前有效缓存区时,将该目标媒体帧确定为从起始位置开始的媒体帧,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,目标媒体帧是指视频资源内的I帧;若当前有效缓存区中不包括视频资源,目标媒体帧是指音频帧。
可选地,在音频参数为真的情况下,目标媒体帧是指音频帧。
具体地,可以包括下述几种示例性场景:
K):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中未发生时间戳回退时,请参考上述情况四中的示例3),此时目标时间戳为@fasSpts,若当前有效缓存区中包括视频资源,服务器可以从PTS最小的I帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的I帧之后查询不到满足PTS≥@fasSpts的I帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,等待第一个PTS≥@fasSpts的I帧(目标媒体帧)被写入当前有效缓存区时,将目标媒体帧确定为从起始位置开始的媒体帧;若当前有效缓存区内不包括视频资源,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的音频帧之后查询不到满足PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,等待第一个PTS≥@fasSpts的音频帧(目标媒体帧)被写入当前有效缓存区时,将目标媒体帧确定为从起始位置开始的媒体帧。
L):@fasSpts>0,@onlyAudio=true,缓存区中未发生时间戳回退时,请参考上述情况四中的示例4),此时目标时间戳为@fasSpts,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的音频帧之后查询不到满足PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器进入等待状态,等待第一个PTS≥@fasSpts的音频帧(目标媒体帧)被写入当前有效缓存区时,将目标媒体帧确定为从起始位置开始的媒体帧。
上述方式三中,提供了在当前有效缓存区中查询不到目标媒体帧时,服务器如何确定从起始位置开始的媒体帧,在一些实施例中,有可能会由于异常情况的出现,导致帧获取请求中携带的@fasSpts是一个较大的异常值,若基于上述方式三进行处理,会导致很长的等待时间,在大数据场景下如果存在并发的帧获取请求发生异常情况,这些帧获取请求都会进入一个阻塞的等待状态,占用服务器的处理资源,那么会对服务器的性能造成极大的损失。
有鉴于此,服务器还可以设置一个超时阈值,从而通过下述方式四,基于超时阈值来确定是否需要返回拉取失败信息,一方面避免能够避免终端长时间的等待,一方面还能够避免由于等待而造成服务器的性能损失,下面对方式四进行详述。
方式四、若该当前有效缓存区中不存在目标媒体帧,且目标时间戳与最大时间戳之间的差值大于超时阈值,服务器发送拉取失败信息,该目标媒体帧的时间戳大于或等于该目标时间戳且最接近该目标时间戳。
可选地,在音频参数缺省或音频参数为假的情况下,若当前有效缓存区中包括视频资源,该最大时间戳为最大视频时间戳latestVideoPts;若当前有效缓存区中不包括视频资源,该最大时间戳为最大音频时间戳latestAudioPts。
可选地,在音频参数为真的情况下,该最大时间戳为最大音频时间戳latestAudioPts。
假设超时阈值为timeoutPTS,超时阈值可以是任一大于或等于0的数值,超时阈值可以是一个服务器预设的数值,也可以由技术人员基于业务场景进行个性化的配置,本公开实施例不对超时阈值的获取方式进行具体限定,具体地,可以包括下述几种示例性场景:
M):@fasSpts>0,@onlyAudio缺省或@onlyAudio=false,缓存区中未发生时间戳回退时,请参考上述情况四中的示例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,缓存区中未发生时间戳回退时,请参考上述情况四中的示例4),此时目标时间戳为@fasSpts,服务器可以从PTS最小的音频帧开始,沿着PTS增大的方向逐个遍历,如果遍历了所有的音频帧之后查询不到满足PTS≥@fasSpts的音频帧(目标媒体帧),说明当前有效缓存区中不存在目标媒体帧,服务器可以判断@fasSpts与latestAudioPts之间的差值是否大于timeoutPTS,若@fasSpts–latestAudioPts>timeoutPTS,服务器向终端发送拉取失败信息,否则,若@fasSpts–latestAudioPts≤timeoutPTS,服务器可以进入等待状态,也即是对应于上述方式三中示例K)对应情况下所执行的操作。
在上述方式三和方式四相结合,可以提供一种在@fasSpts>0且当前有效缓存区中不存在目标媒体帧时的异常处理逻辑,若目标时间戳与最大时间戳之间的差值小于或等于超时阈值,服务器通过方式三进入等待状态(等待处理模式),直到目标媒体帧到达时,将目标媒体帧确定为从起始位置开始的媒体帧,否则,若目标时间戳与最大时间戳之间的差值大于超时阈值,服务器通过方式四发送拉取失败信息(错误处理模式),这时服务器是判定帧获取请求出错的,因此直接向终端返回拉取失败信息,该拉取失败信息可以是一个错误码的形式。
在上述步骤中,服务器基于该媒体流的拉取位置参数,确定该媒体流的从起始位置开始的媒体帧,正是由于在帧获取请求中携带了拉取位置参数,使得服务器能够方便的确定在响应该帧获取请求的过程中,到底从哪个媒体帧开始以目标码率进行媒体帧的传输,提高了资源传输过程的灵活性,进一步地,在需要动态码率切换的场景下,只需要在帧获取请求中更换携带的地址信息(@url字段)以及拉取位置参数(@fasSpts字段),就可以实现从任一个指定的从起始位置开始的媒体帧开始以新的码率进行媒体帧的传输,从而能够实现自适应地码率切换,能够优化终端的播放效果,改善用户的观看体验。
在步骤S58中,服务器以目标码率,向终端传输从起始位置开始的媒体帧。
服务器获取从起始位置开始的媒体帧后,可以以目标码率,向终端传输从起始位置开始的媒体帧,在该过程中,服务器可以像流水一样源源不断的向终端发送媒体帧,可以形象地称为“媒体流传输”,基于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进行回源,本公开实施例不对边缘服务器的回源方式进行具体限定。
本实施例提供的一种媒体流传输方法中,终端响应于对媒体流的帧获取指令,从媒体流的媒体描述文件包括的多种码率的媒体流的地址信息中,确定目标码率的媒体流的目标地址信息,进而确定目标码率对应的待获取媒体帧在媒体流中的起始位置,再向服务器发送携带有目标地址信息和起始位置的帧获取请求,能够指示服务器以目标码率传输媒体流中从起始位置开始的媒体帧,无需对媒体流进行分片传输,实现了媒体流的帧级传输,大大降低了媒体流传输过程的延迟。
以上介绍了本公开实施例提供的方法实施例,以下对本公开实施例提供的虚拟装置进行示例性说明。
图8是根据一示例性实施例示出的一种媒体流传输装置的框图,应用于终端,该装置包括:
确定模块801,用于响应于对媒体流的帧获取指令,从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息。
所述确定模块801,还用于确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置。
发送模块802,用于向服务器发送携带有所述目标地址信息和起始位置的帧获取请求,所述帧获取请求用于指示所述服务器以所述目标码率返回输所述媒体流中从所述起始位置开始的媒体帧。
可选地,所述帧获取指令由对媒体流的播放操作触发。
所述确定模块801用于:
将所述媒体流中所述播放操作的操作时间产生的媒体帧所在位置确定为所述起始位置。或,
将所述帧获取指令中所选定的媒体帧在所述媒体流中的位置确定为所述起始位置。或,
将所述媒体流的第一个媒体帧所在位置确定为所述起始位置。
可选地,所述帧获取指令在所述媒体流的播放状态信息满足码率切换条件时触发。
所述装置还包括:
获取模块,用于在接收所述媒体流中任一媒体帧时,获取所述媒体流的播放状态信息。
所述确定模块801还用于响应于所述播放状态信息符合所述码率切换条件,从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息。
所述确定模块801用于根据所述任一媒体帧在所述媒体流中的位置,确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置。
可选地,可选地,所述确定模块801用于:
响应于所述播放状态信息符合所述码率切换条件,根据所述播放状态信息和当前码率,确定目标码率。
响应于所述目标码率与所述当前码率不相等,执行所述从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息的步骤。
可选地,所述播放状态信息包括第一缓存量,所述第一缓存量为当前对所述媒体流已缓存且未播放的缓存量。
所述确定模块801用于:
响应于所述第一缓存量大于第一缓存量阈值,根据所述播放状态信息以及当前码率,确定目标码率。或,
响应于所述第一缓存量小于第二缓存量阈值,根据所述播放状态信息以及当前码率,确定目标码率,所述第二缓存量阈值小于所述第一缓存量阈值。
可选地,所述确定模块801用于:
获取多个候选码率。
根据所述多个候选码率与所述当前码率之间的关系、所述播放状态信息以及所述媒体流中所述任一媒体帧在所述任一媒体帧所在媒体组中的位置,获取每个候选码率对应的第二缓存量。
根据所述每个候选码率对应的第二缓存量与第一缓存量阈值或第二缓存量阈值的关系,从所述多个候选码率中,确定目标码率。
其中,所述每个候选码率对应的第二缓存量为将码率切换至候选码率后,所述任一媒体帧所在媒体组传输结束时对所述媒体流已缓存但未播放的缓存量。
可选地,所述帧获取请求还包括第一扩展参数或者第二扩展参数中至少一项,所述第一扩展参数用于表示所述媒体帧是否为音频帧,所述第二扩展参数用于表示从所述第二扩展参数所指示的目标时间戳开始传输所述媒体流中的媒体帧。
可选地,所述媒体描述文件包括版本号和媒体描述集合,其中,所述版本号包括所述媒体描述文件的版本号或者资源传输标准的版本号中至少一项,所述媒体描述集合包括多个媒体描述元信息,每个媒体描述元信息对应于一种码率的媒体流,每个媒体描述元信息包括所述媒体描述元信息所对应码率的媒体流的画面组长度以及属性信息。
本实施例提供了一种媒体流传输装置,通过响应于对媒体流的帧获取指令,从媒体流的媒体描述文件包括的多种码率的媒体流的地址信息中,确定目标码率的媒体流的目标地址信息,进而确定目标码率对应的待获取媒体帧在媒体流中的起始位置,再向服务器发送携带有目标地址信息和起始位置的帧获取请求,可以指示服务器以目标码率传输媒体流中从起始位置开始的媒体帧,无需对媒体流进行分片传输,实现了媒体流的帧级传输,大大降低了媒体流传输过程的延迟,提高了媒体流的传输效率和实时性。
需要说明的是:上述实施例提供的媒体流传输装置在传输媒体流时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的媒体流传输装置与媒体流传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是根据一示例性实施例示出的一种媒体流传输装置的框图,应用于服务器,该装置包括:
接收模块901,用于接收帧获取请求,所述帧获取请求携带有目标码率的媒体流的目标地址信息和所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置。
获取模块902,用于响应于所述帧获取请求,从所述目标地址信息对应的地址,获取从所述起始位置开始的媒体帧。
传输模块903,用于以所述目标码率,向终端传输从所述起始位置开始的媒体帧。
可选地,所述获取模块902用于:
基于所述起始位置,确定目标时间戳。
基于所述目标时间戳,确定并获取从所述起始位置开始的媒体帧。
可选地,所述起始位置为拉取位置参数,所述获取模块902用于基于音频参数和拉取位置参数,确定目标时间戳。
可选地,所述获取模块902用于:
若所述拉取位置参数为默认值,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。或,
若所述拉取位置参数为默认值,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳。或,
若所述拉取位置参数等于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳确定为所述目标时间戳。或,
若所述拉取位置参数等于0,且所述音频参数为真,将最大音频时间戳确定为所述目标时间戳。或,
若所述拉取位置参数小于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。或,
若所述拉取位置参数小于0,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳。或,
若所述拉取位置参数大于0,且所述音频参数为默认值或所述音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为所述目标时间戳。或,
若所述拉取位置参数大于0,且所述音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为所述目标时间戳。或,
若所述拉取位置参数大于0,且缓存区中未发生时间戳回退时,将所述拉取位置参数确定为所述目标时间戳。
可选地,所述获取模块902,还用于:
若缓存区中媒体帧序列中媒体帧的时间戳呈非单调递增,确定所述缓存区发生时间戳回退。否则,确定所述缓存区未发生时间戳回退,所述媒体帧序列为所述缓存区缓存的多个媒体帧所组成的序列。
可选地,所述获取模块902用于:
若所述缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,所述关键帧序列为缓存的多个关键帧组成的序列。
若所述缓存区中不包括视频资源,在音频帧序列呈中音频帧的时间戳非单调递增时,确定所述媒体帧序列呈非单调递增,所述音频帧序列为缓存的多个音频帧组成的序列。
可选地,所述获取模块902用于:
若当前有效缓存区中存在目标媒体帧,将所述目标媒体帧确定为所述从所述起始位置开始的媒体帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。或,
若所述当前有效缓存区中不存在目标媒体帧,进入等待状态,直到所述目标媒体帧写入所述当前有效缓存区时,将所述目标媒体帧确定为所述从所述起始位置开始的媒体帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。或,
若所述当前有效缓存区中不存在目标媒体帧,且所述目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
本实施例提供了一种媒体流传输装置,通过接收并响应携带有目标码率的媒体流的目标地址信息和目标码率对应的待获取媒体帧在媒体流中的起始位置的帧获取请求,从目标地址信息对应的地址,获取从起始位置开始的媒体帧,以目标码率,向终端传输从起始位置开始的媒体帧,无需对媒体流进行分片传输,实现了媒体流的帧级传输,大大降低了媒体流传输过程的延迟。
需要说明的是:上述实施例提供的媒体流传输装置在传输媒体流时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的媒体流传输装置与媒体流传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
以上介绍了本公开实施例提供的虚拟装置,以下对本公开实施例提供的硬件装置进行示例性说明。
图10示出了本公开一个示例性实施例提供的终端1000的结构框图。该终端1000可以是:智能手机、平板电脑、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio LayerIV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1000包括有:一个或多个处理器1001和一个或多个存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本公开中方法实施例提供的媒体流传输方法。
在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、触摸显示屏1005、摄像头组件1006、音频电路1007、定位组件1008和电源10101009中的至少一种。
外围设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本公开对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1008可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源10101009用于为终端1000中的各个组件进行供电。电源10101009可以是交流电、直流电、一次性电池或可充电电池。当电源10101009包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。
加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制触摸显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1013可以设置在终端1000的侧边框和/或触摸显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在触摸显示屏1005的下层时,由处理器1001根据用户对触摸显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1014可以被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商Logo时,指纹传感器1014可以与物理按键或厂商Logo集成在一起。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制触摸显示屏1005的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1005的显示亮度;当环境光强度较低时,调低触摸显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制触摸显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制触摸显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图11是本公开实施例提供的一种服务器的结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)1101和一个或一个以上的存储器1102,其中,该存储器1102中存储有至少一条指令,该至少一条指令由该处理器1101加载并执行以实现上述各个方法实施例提供的媒体流传输方法。当然,该服务器还可以具有有线或无线网络接口以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器,上述指令可由电子设备的处理器执行以完成上述媒体流传输方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以是只读存储器(Read-Only Memory,简称:ROM)、随机存取存储器(Random Access Memory,简称:RAM)、只读光盘(Compact Disc Read-Only Memory,简称:CD-ROM)、磁带、软盘和光数据存储设备等。
本公开实施例还提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令由电子设备的处理器执行时,使得电子设备能够执行上述媒体流传输方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。

Claims (31)

1.一种媒体流传输方法,其特征在于,应用于终端,所述方法包括:
响应于对媒体流的帧获取指令,获取多个候选码率;
根据所述多个候选码率与当前码率之间的关系、播放状态信息以及所述媒体流中任一媒体帧在所述任一媒体帧所在媒体帧组中的位置,获取每个候选码率对应的第二缓存量,所述播放状态信息包括第一缓存量,所述第一缓存量为当前对所述媒体流已缓存且未播放的缓存量;
根据所述每个候选码率对应的第二缓存量与第一缓存量阈值或第二缓存量阈值的关系,从所述多个候选码率中,确定目标码率;其中,所述每个候选码率对应的第二缓存量为将码率切换至候选码率后,所述任一媒体帧所在媒体帧组传输结束时对所述媒体流已缓存但未播放的缓存量;
从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定所述目标码率的所述媒体流的目标地址信息;
确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置;
向服务器发送携带有所述目标地址信息和起始位置的帧获取请求,所述帧获取请求用于指示所述服务器以所述目标码率返回所述媒体流中从所述起始位置开始的媒体帧。
2.根据权利要求1所述的方法,其特征在于,所述帧获取指令由对媒体流的播放操作触发;
所述确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置,包括:
将所述媒体流中所述播放操作的操作时间产生的媒体帧所在位置确定为所述起始位置;或,
将所述帧获取指令中所选定的媒体帧在所述媒体流中的位置确定为所述起始位置;或,
将所述媒体流的第一个媒体帧所在位置确定为所述起始位置。
3.根据权利要求1所述的方法,其特征在于,所述帧获取指令在所述媒体流的播放状态信息满足码率切换条件时触发;
所述响应于对媒体流的帧获取指令之后,还包括:
在接收所述媒体流中任一媒体帧时,获取所述媒体流的播放状态信息;
从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息,包括:
响应于所述播放状态信息符合所述码率切换条件,从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息;
所述确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置,包括:
根据所述任一媒体帧在所述媒体流中的位置,确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置。
4.根据权利要求3所述的方法,其特征在于,所述响应于所述播放状态信息符合所述码率切换条件,从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息,包括:
响应于所述播放状态信息符合所述码率切换条件,根据所述播放状态信息和当前码率,确定目标码率;
响应于所述目标码率与所述当前码率不相等,执行所述从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息的步骤。
5.根据权利要求4所述的方法,其特征在于,所述响应于所述播放状态信息符合码率切换条件,根据所述播放状态信息以及当前码率,确定目标码率,包括:
响应于所述第一缓存量大于第一缓存量阈值,根据所述播放状态信息以及当前码率,确定目标码率;或,
响应于所述第一缓存量小于第二缓存量阈值,根据所述播放状态信息以及当前码率,确定目标码率,所述第二缓存量阈值小于所述第一缓存量阈值。
6.根据权利要求1所述的方法,其特征在于,所述帧获取请求还包括第一扩展参数或者第二扩展参数中至少一项,所述第一扩展参数用于表示所述媒体帧是否为音频帧,所述第二扩展参数用于表示从所述第二扩展参数所指示的目标时间戳开始传输所述媒体流中的媒体帧。
7.根据权利要求1所述的方法,其特征在于,所述媒体描述文件包括版本号和媒体描述集合,其中,所述版本号包括所述媒体描述文件的版本号或者资源传输标准的版本号中至少一项,所述媒体描述集合包括多个媒体描述元信息,每个媒体描述元信息对应于一种码率的媒体流,每个媒体描述元信息包括所述媒体描述元信息所对应码率的媒体流的画面组长度以及属性信息。
8.一种媒体流传输方法,其特征在于,应用于服务器,所述方法包括:
接收帧获取请求,所述帧获取请求携带有目标码率的媒体流的目标地址信息和所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置;
响应于所述帧获取请求,从所述目标地址信息对应的地址,获取从所述起始位置开始的媒体帧;
以所述目标码率,向终端传输从所述起始位置开始的媒体帧;
其中,所述目标码率的确定方式包括:响应于对媒体流的帧获取指令,获取多个候选码率;
根据所述多个候选码率与当前码率之间的关系、播放状态信息以及所述媒体流中任一媒体帧在所述任一媒体帧所在媒体帧组中的位置,获取每个候选码率对应的第二缓存量,所述播放状态信息包括第一缓存量,所述第一缓存量为当前对所述媒体流已缓存且未播放的缓存量;
根据所述每个候选码率对应的第二缓存量与第一缓存量阈值或第二缓存量阈值的关系,从所述多个候选码率中,确定目标码率,所述每个候选码率对应的第二缓存量为将码率切换至候选码率后,所述任一媒体帧所在媒体帧组传输结束时对所述媒体流已缓存但未播放的缓存量。
9.根据权利要求8所述的方法,其特征在于,所述从所述目标地址信息对应的地址,获取从所述起始位置开始的媒体帧,包括:
基于所述起始位置,确定目标时间戳;
基于所述目标时间戳,确定并获取从所述起始位置开始的媒体帧。
10.根据权利要求9所述的方法,其特征在于,所述起始位置为拉取位置参数,所述基于所述起始位置,确定目标时间戳,包括:基于音频参数和拉取位置参数,确定目标时间戳。
11.根据权利要求10所述的方法,其特征在于,所述基于所述音频参数和所述拉取位置参数,确定目标时间戳包括:
若所述拉取位置参数为默认值,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数为默认值,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数等于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳确定为所述目标时间戳;或,
若所述拉取位置参数等于0,且所述音频参数为真,将最大音频时间戳确定为所述目标时间戳;或,
若所述拉取位置参数小于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数小于0,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数大于0,且所述音频参数为默认值或所述音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为所述目标时间戳;或,
若所述拉取位置参数大于0,且所述音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为所述目标时间戳;或,
若所述拉取位置参数大于0,且缓存区中未发生时间戳回退时,将所述拉取位置参数确定为所述目标时间戳。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
若缓存区中媒体帧序列中媒体帧的时间戳呈非单调递增,确定所述缓存区发生时间戳回退;否则,确定所述缓存区未发生时间戳回退,所述媒体帧序列为所述缓存区缓存的多个媒体帧所组成的序列。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
若所述缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,所述关键帧序列为缓存的多个关键帧组成的序列;
若所述缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,所述音频帧序列为缓存的多个音频帧组成的序列。
14.根据权利要求9所述的方法,其特征在于,所述基于所述目标时间戳,确定并获取从所述起始位置开始的媒体帧,包括:
若当前有效缓存区中存在目标媒体帧,将所述目标媒体帧确定为所述从所述起始位置开始的媒体帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳;或,
若所述当前有效缓存区中不存在目标媒体帧,进入等待状态,直到所述目标媒体帧写入所述当前有效缓存区时,将所述目标媒体帧确定为所述从所述起始位置开始的媒体帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳;或,
若所述当前有效缓存区中不存在目标媒体帧,且所述目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
15.一种媒体流传输系统,其特征在于,所述系统包括终端和服务器,所述终端用于执行如权利要求1至7中任一项所述的媒体流传输方法;所述服务器用于执行如权利要求8至14中任一项所述的媒体流传输方法。
16.一种媒体流传输装置,其特征在于,应用于终端,包括:
确定模块,用于响应于对媒体流的帧获取指令,获取多个候选码率;
根据所述多个候选码率与当前码率之间的关系、播放状态信息以及所述媒体流中任一媒体帧在所述任一媒体帧所在媒体帧组中的位置,获取每个候选码率对应的第二缓存量,所述播放状态信息包括第一缓存量,所述第一缓存量为当前对所述媒体流已缓存且未播放的缓存量;
根据所述每个候选码率对应的第二缓存量与第一缓存量阈值或第二缓存量阈值的关系,从所述多个候选码率中,确定目标码率;其中,所述每个候选码率对应的第二缓存量为将码率切换至候选码率后,所述任一媒体帧所在媒体帧组传输结束时对所述媒体流已缓存但未播放的缓存量;
从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定所述目标码率的所述媒体流的目标地址信息;
所述确定模块,还用于确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置;
发送模块,用于向服务器发送携带有所述目标地址信息和起始位置的帧获取请求,所述帧获取请求用于指示所述服务器以所述目标码率返回所述媒体流中从所述起始位置开始的媒体帧。
17.根据权利要求16所述的装置,其特征在于,所述帧获取指令由对媒体流的播放操作触发;
所述确定模块用于:
将所述媒体流中所述播放操作的操作时间产生的媒体帧所在位置确定为所述起始位置;或,
将所述帧获取指令中所选定的媒体帧在所述媒体流中的位置确定为所述起始位置;或,
将所述媒体流的第一个媒体帧所在位置确定为所述起始位置。
18.根据权利要求16所述的装置,其特征在于,所述帧获取指令在所述媒体流的播放状态信息满足码率切换条件时触发;
所述装置还包括:
获取模块,用于在接收所述媒体流中任一媒体帧时,获取所述媒体流的播放状态信息;
所述确定模块还用于响应于所述播放状态信息符合所述码率切换条件,从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息;
所述确定模块用于根据所述任一媒体帧在所述媒体流中的位置,确定所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置。
19.根据权利要求18所述的装置,其特征在于,所述确定模块用于:
响应于所述播放状态信息符合所述码率切换条件,根据所述播放状态信息和当前码率,确定目标码率;
响应于所述目标码率与所述当前码率不相等,执行所述从所述媒体流的媒体描述文件包括的多种码率的所述媒体流的地址信息中,确定目标码率的所述媒体流的目标地址信息的步骤。
20.根据权利要求18所述的装置,其特征在于,所述确定模块用于:
响应于所述第一缓存量大于第一缓存量阈值,根据所述播放状态信息以及当前码率,确定目标码率;或,
响应于所述第一缓存量小于第二缓存量阈值,根据所述播放状态信息以及当前码率,确定目标码率,所述第二缓存量阈值小于所述第一缓存量阈值。
21.根据权利要求16所述的装置,其特征在于,所述帧获取请求还包括第一扩展参数或者第二扩展参数中至少一项,所述第一扩展参数用于表示所述媒体帧是否为音频帧,所述第二扩展参数用于表示从所述第二扩展参数所指示的目标时间戳开始传输所述媒体流中的媒体帧。
22.根据权利要求16所述的装置,其特征在于,所述媒体描述文件包括版本号和媒体描述集合,其中,所述版本号包括所述媒体描述文件的版本号或者资源传输标准的版本号中至少一项,所述媒体描述集合包括多个媒体描述元信息,每个媒体描述元信息对应于一种码率的媒体流,每个媒体描述元信息包括所述媒体描述元信息所对应码率的媒体流的画面组长度以及属性信息。
23.一种媒体流传输装置,其特征在于,应用于服务器,包括:
接收模块,用于接收帧获取请求,所述帧获取请求携带有目标码率的媒体流的目标地址信息和所述目标码率对应的待获取媒体帧在所述媒体流中的起始位置;
获取模块,用于响应于所述帧获取请求,从所述目标地址信息对应的地址,获取从所述起始位置开始的媒体帧;
传输模块,用于以所述目标码率,向终端传输从所述起始位置开始的媒体帧。
24.根据权利要求23所述的装置,其特征在于,所述获取模块用于:
基于所述起始位置,确定目标时间戳;
基于所述目标时间戳,确定并获取从所述起始位置开始的媒体帧。
25.根据权利要求24所述的装置,其特征在于,所述起始位置为拉取位置参数,所述获取模块用于基于音频参数和拉取位置参数,确定目标时间戳。
26.根据权利要求25所述的装置,其特征在于,所述获取模块用于:
若所述拉取位置参数为默认值,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数为默认值,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的默认值的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数等于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳确定为所述目标时间戳;或,
若所述拉取位置参数等于0,且所述音频参数为真,将最大音频时间戳确定为所述目标时间戳;或,
若所述拉取位置参数小于0,且所述音频参数为默认值或所述音频参数为假,将最大时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数小于0,且所述音频参数为真,将最大音频时间戳减去所述拉取位置参数的绝对值所得的数值确定为所述目标时间戳;或,
若所述拉取位置参数大于0,且所述音频参数为默认值或所述音频参数为假,在缓存区中发生时间戳回退时,将最大时间戳确定为所述目标时间戳;或,
若所述拉取位置参数大于0,且所述音频参数为真,在缓存区中发生时间戳回退时,将最大音频时间戳确定为所述目标时间戳;或,
若所述拉取位置参数大于0,且缓存区中未发生时间戳回退时,将所述拉取位置参数确定为所述目标时间戳。
27.根据权利要求26所述的装置,其特征在于,所述获取模块,还用于:
若缓存区中媒体帧序列中媒体帧的时间戳呈非单调递增,确定所述缓存区发生时间戳回退;否则,确定所述缓存区未发生时间戳回退,所述媒体帧序列为所述缓存区缓存的多个媒体帧所组成的序列。
28.根据权利要求27所述的装置,其特征在于,所述获取模块用于:
若所述缓存区中包括视频资源,在关键帧序列中关键帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,所述关键帧序列为缓存的多个关键帧组成的序列;
若所述缓存区中不包括视频资源,在音频帧序列中音频帧的时间戳呈非单调递增时,确定所述媒体帧序列呈非单调递增,所述音频帧序列为缓存的多个音频帧组成的序列。
29.根据权利要求24所述的装置,其特征在于,所述获取模块用于:
若当前有效缓存区中存在目标媒体帧,将所述目标媒体帧确定为所述从所述起始位置开始的媒体帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳;或,
若所述当前有效缓存区中不存在目标媒体帧,进入等待状态,直到所述目标媒体帧写入所述当前有效缓存区时,将所述目标媒体帧确定为所述从所述起始位置开始的媒体帧,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳;或,
若所述当前有效缓存区中不存在目标媒体帧,且所述目标时间戳与最大时间戳之间的差值大于超时阈值,发送拉取失败信息,所述目标媒体帧的时间戳大于或等于所述目标时间戳且最接近所述目标时间戳。
30.一种电子设备,其特征在于,包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行指令的一个或多个存储器;
其中,所述一个或多个处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的媒体流传输方法;或如权利要求8至14任一项所述的媒体流传输方法。
31.一种存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至7中任一项所述的媒体流传输方法;或如权利要求8至14任一项所述的媒体流传输方法。
CN202010054830.8A 2020-01-17 2020-01-17 媒体流传输方法、系统、装置、设备及存储介质 Active CN113141514B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010054830.8A CN113141514B (zh) 2020-01-17 2020-01-17 媒体流传输方法、系统、装置、设备及存储介质
EP20913499.8A EP3968647A4 (en) 2020-01-17 2020-12-24 METHOD AND SYSTEM FOR TRANSMISSION OF A MEDIA STREAM
PCT/CN2020/138855 WO2021143479A1 (zh) 2020-01-17 2020-12-24 媒体流传输方法及系统
US17/542,841 US20220095002A1 (en) 2020-01-17 2021-12-06 Method for transmitting media stream, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010054830.8A CN113141514B (zh) 2020-01-17 2020-01-17 媒体流传输方法、系统、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113141514A CN113141514A (zh) 2021-07-20
CN113141514B true CN113141514B (zh) 2022-07-22

Family

ID=76809532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010054830.8A Active CN113141514B (zh) 2020-01-17 2020-01-17 媒体流传输方法、系统、装置、设备及存储介质

Country Status (4)

Country Link
US (1) US20220095002A1 (zh)
EP (1) EP3968647A4 (zh)
CN (1) CN113141514B (zh)
WO (1) WO2021143479A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11451606B2 (en) * 2020-12-16 2022-09-20 Grass Valley Limited System and method for moving media content over a network
CN113905257A (zh) * 2021-09-29 2022-01-07 北京字节跳动网络技术有限公司 视频码率切换方法、装置、电子设备及存储介质
CN115086300B (zh) * 2022-06-16 2023-09-08 乐视云网络技术(北京)有限公司 一种视频文件调度方法和装置
CN115174569B (zh) * 2022-06-27 2024-03-19 普联技术有限公司 一种视频流传输的控制方法、装置、服务器及存储介质
CN116684515B (zh) * 2022-09-27 2024-04-12 荣耀终端有限公司 流媒体视频的seek处理方法、电子设备及存储介质
CN115361543B (zh) * 2022-10-21 2023-03-24 武汉光谷信息技术股份有限公司 一种基于arm架构的异构数据融合与推流方法、系统
CN118101875A (zh) * 2022-11-22 2024-05-28 中兴通讯股份有限公司 多媒体处理方法、媒体服务器和存储介质
CN117560525B (zh) * 2024-01-11 2024-04-19 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102957672A (zh) * 2011-08-25 2013-03-06 中国电信股份有限公司 自适应播放flv媒体流的方法、客户端和系统
CN109040801A (zh) * 2018-07-19 2018-12-18 北京达佳互联信息技术有限公司 媒体码率自适应方法、装置、计算机设备及存储介质
CN109218759A (zh) * 2018-09-27 2019-01-15 广州酷狗计算机科技有限公司 推送媒体流的方法、装置、服务器及存储介质
CN110636346A (zh) * 2019-09-19 2019-12-31 北京达佳互联信息技术有限公司 一种码率自适应切换方法、装置、电子设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080145025A1 (en) * 2006-12-13 2008-06-19 General Instrument Corporation Method and System for Selecting Media Content
CN101771492A (zh) * 2008-12-29 2010-07-07 华为技术有限公司 调整流媒体码率的方法和装置
CN102333083B (zh) * 2011-08-24 2017-04-05 中兴通讯股份有限公司 一种传输数据的方法和系统
CN103369355A (zh) * 2012-04-10 2013-10-23 华为技术有限公司 一种在线媒体数据转换的方法、播放视频方法及相应装置
CN103974147A (zh) * 2014-03-07 2014-08-06 北京邮电大学 一种基于mpeg-dash协议的带有码率切换控制和静态摘要技术的在线视频播控系统
US10666961B2 (en) * 2016-01-08 2020-05-26 Qualcomm Incorporated Determining media delivery event locations for media transport
JP2017157903A (ja) * 2016-02-29 2017-09-07 富士ゼロックス株式会社 情報処理装置
CN108184152B (zh) * 2018-01-03 2020-01-24 湖北大学 一种dash传输系统两阶段客户端码率选择方法
CN110545491B (zh) * 2018-05-29 2021-08-10 北京字节跳动网络技术有限公司 一种媒体文件的网络播放方法、装置及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102957672A (zh) * 2011-08-25 2013-03-06 中国电信股份有限公司 自适应播放flv媒体流的方法、客户端和系统
CN109040801A (zh) * 2018-07-19 2018-12-18 北京达佳互联信息技术有限公司 媒体码率自适应方法、装置、计算机设备及存储介质
CN109218759A (zh) * 2018-09-27 2019-01-15 广州酷狗计算机科技有限公司 推送媒体流的方法、装置、服务器及存储介质
CN110636346A (zh) * 2019-09-19 2019-12-31 北京达佳互联信息技术有限公司 一种码率自适应切换方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
EP3968647A1 (en) 2022-03-16
EP3968647A4 (en) 2022-11-23
WO2021143479A1 (zh) 2021-07-22
CN113141514A (zh) 2021-07-20
US20220095002A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
CN113141514B (zh) 媒体流传输方法、系统、装置、设备及存储介质
CN108600773B (zh) 字幕数据推送方法、字幕展示方法、装置、设备及介质
US11537562B2 (en) Auxiliary manifest file to provide timed metadata
CN113141524B (zh) 资源传输方法、装置、终端及存储介质
KR101904244B1 (ko) 개량된 스트리밍 미디어 재생
CN113141523B (zh) 资源传输方法、装置、终端及存储介质
CN110213616B (zh) 视频提供方法、获取方法、装置及设备
US10432690B1 (en) Manifest partitioning
US10423320B2 (en) Graphical user interface for navigating a video
US10863211B1 (en) Manifest data for server-side media fragment insertion
CN108769726B (zh) 多媒体数据推送方法、装置、存储介质及设备
US10659815B2 (en) Method of dynamic adaptive streaming for 360-degree videos
CN113141522B (zh) 资源传输方法、装置、计算机设备及存储介质
US10104143B1 (en) Manifest segmentation
US10116719B1 (en) Customized dash manifest
US10419825B2 (en) Queue to display information for entities during video playback
EP3748983B1 (en) Video playback method, terminal apparatus, and storage medium
US20220095020A1 (en) Method for switching a bit rate, and electronic device
US20230217047A1 (en) Method, system, and computer-readable recording medium for implementing fast-switching mode between channels in multi-live transmission environment
CN111698262B (zh) 带宽确定方法、装置、终端及存储介质
CN116264619A (zh) 资源处理方法、装置、服务器、终端、系统及存储介质
WO2018178510A2 (en) Video streaming

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