CN110392269B - 媒体数据处理方法和装置、媒体数据播放方法和装置 - Google Patents
媒体数据处理方法和装置、媒体数据播放方法和装置 Download PDFInfo
- Publication number
- CN110392269B CN110392269B CN201810345274.2A CN201810345274A CN110392269B CN 110392269 B CN110392269 B CN 110392269B CN 201810345274 A CN201810345274 A CN 201810345274A CN 110392269 B CN110392269 B CN 110392269B
- Authority
- CN
- China
- Prior art keywords
- frame
- media data
- media
- key
- key frame
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000003672 processing method Methods 0.000 title claims abstract description 21
- 230000000977 initiatory effect Effects 0.000 claims abstract description 43
- 230000004044 response Effects 0.000 claims abstract description 35
- 239000012634 fragment Substances 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 39
- 238000010276 construction Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 25
- 230000005540 biological transmission Effects 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- 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/232—Content retrieval operation locally within server, e.g. reading video streams from disk arrays
-
- 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 or manipulating encoded video stream scene graphs
- H04N21/23418—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
-
- 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/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/44—Processing 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/44008—Processing 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 operations for analysing video streams, e.g. detecting features or characteristics in the video stream
-
- 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/8455—Structuring 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请涉及一种媒体数据处理方法和装置、媒体数据播放方法和装置,媒体数据处理方法方法包括:接收媒体数据请求;在媒体数据中确定媒体数据请求所请求的起播帧;当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧;根据查找到的关键帧和预测帧构建关键帧;响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧。本申请提供的方案可以减小所反馈的媒体数据的延迟。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种媒体数据处理方法和装置、媒体数据播放方法和装置。
背景技术
随着计算机技术的飞速发展,媒体数据能够在被请求时即时地传送给世界各地的用户。尤其,近年来视频直播技术应用到了人们生活和工作的方方面面,视频数据在被实时采集后就可以即时地呈现在用户面前,使得各式各样的社会活动都可以借助直播平台传达给世界各地的用户,比如发布会、体育赛事、远程会议等等。
通常,在接收到媒体数据请求后,反馈的媒体数据中需要包含关键帧,以保证媒体数据的正常播放。然而,目前在接收到媒体数据请求后,都是从媒体数据中查找到的关键帧开始反馈,导致反馈的媒体数据存在较大的延迟。
发明内容
基于此,有必要针对现有的反馈的媒体数据存在较大的延迟的技术问题,提供一种媒体数据处理方法和装置、媒体数据播放方法和装置。
一种媒体数据处理方法,包括:
接收媒体数据请求;
在媒体数据中确定所述媒体数据请求所请求的起播帧;
当所述起播帧不是关键帧时,从所述媒体数据中查找在所述起播帧前与所述起播帧最近的关键帧及最近的关键帧与所述起播帧间的预测帧;
根据查找到的关键帧和所述预测帧构建关键帧;
响应于所述媒体数据请求,反馈构建的关键帧及所述媒体数据中在所述起播帧之后的帧。
一种媒体数据播放方法,包括:
发送媒体数据请求;
接收响应于所述媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据预测帧及所述媒体数据中在所述起播帧前与所述起播帧最近的关键帧构建得到;所述预测帧是最近的关键帧与所述起播帧间的预测帧;所述起播帧由所述媒体数据请求所指定;
从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
一种媒体数据处理装置,包括:
接收模块,用于接收媒体数据请求;
确定模块,用于在媒体数据中确定所述媒体数据请求所请求的起播帧;
查找模块,用于当所述起播帧不是关键帧时,从所述媒体数据中查找在所述起播帧前与所述起播帧最近的关键帧及最近的关键帧与所述起播帧间的预测帧;
构建模块,用于根据查找到的关键帧和所述预测帧构建关键帧;
响应模块,用于响应于所述媒体数据请求,反馈构建的关键帧及所述媒体数据中在所述起播帧之后的帧。
一种媒体数据播放装置,包括:
发送模块,用于发送媒体数据请求;
接收模块,用于接收响应于所述媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据预测帧及所述媒体数据中在所述起播帧前与所述起播帧最近的关键帧构建得到;所述预测帧是最近的关键帧与所述起播帧间的预测帧;所述起播帧由所述媒体数据请求所指定;
播放模块,用于从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述媒体数据处理方法或上述媒体数据播放方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述媒体数据处理方法或上述媒体数据播放方法的步骤。
上述媒体数据处理方法、装置、计算机可读存储介质和计算机设备、媒体数据播放方法、装置、计算机可读存储介质和计算机设备,在媒体数据请求所请求的起播帧不是关键帧时,为了使反馈的数据中包含关键帧,就从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建关键帧,这样,在响应媒体数据请求时,就可以直接反馈构建的关键帧和媒体数据中在该起播帧之后的帧,无需从查找的在起播帧之前的关键帧开始依次反馈媒体数据,从而能够减小所反馈的媒体数据的延迟。
附图说明
图1为一个实施例中媒体数据处理方法的应用环境图;
图2为一个实施例中媒体数据处理方法的流程示意图;
图3为一个实施例中在直播视频流中确定的起播帧是关键帧时的示意图;
图4为一个实施例中在直播视频流中确定的起播帧不是关键帧时的示意图;
图5为一个应用场景中用户通过终端向服务器请求直播视频流的示意图;
图6为一个实施例中客户端向服务器请求播放直播视频流的框架示意图;
图7为一个实施例中将媒体数据划分多个媒体分片的示意图;
图8为另一个实施例中客户端向服务器请求播放直播视频流的框架示意图;
图9为一个具体的实施例中媒体数据处理方法的流程示意图;
图10为一个实施例中媒体数据播放方法的流程示意图;
图11为一个实施例中媒体数据处理装置的结构框图;
图12为另一个实施例中媒体数据处理装置的结构框图;
图13为一个实施例中媒体数据播放装置的结构框图;
图14为一个实施例中计算机设备的结构框图;
图15为另一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中媒体数据处理方法的应用环境图。参照图1,该媒体数据处理方法应用于媒体数据处理***。该媒体数据处理***包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
终端110可以向服务器120发送媒体数据请求。服务器120可以接收媒体数据请求。服务器120可以在接收终端110发送的媒体数据请求后,在媒体数据中确定媒体数据请求所请求的起播帧。服务器120可以当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧。服务器120可以根据查找到的关键帧和预测帧构建关键帧。服务器120可以响应于终端110发送的媒体数据请求,向终端110反馈构建的关键帧及媒体数据中在起播帧之后的帧。终端110可以接收服务器120响应于媒体数据请求所反馈的帧。终端110可以从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
如图2所示,在一个实施例中,提供了一种媒体数据处理方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图2,该媒体数据处理方法具体包括如下步骤:
S202,接收媒体数据请求。
其中,媒体数据,是对原始数据进行压缩处理后得到的便于存储和传输的数据。原始数据可以是图片数据或视频数据。原始数据可以是实时采集的,也可以是在预先存储的。在一个实施例中,媒体数据可以是应用于直播视频技术中的直播视频流。
媒体数据的最小传输单位是帧(Frame)。媒体数据的每一帧可以是关键帧或预测帧。其中,关键帧是携带了当前这一帧原始数据的完整信息、可独立地根据该帧解码出原始数据的帧。预测帧是需要参考其它帧解码才能获得当前这一帧原始数据的全部信息的帧,预测帧仅携带了相对于其它帧的冗余信息。
在一个实施例中,关键帧可以是帧内编码帧(Intra-coded Frame,I帧),预测帧可以是帧间编码帧(Inter-coded Frame)。帧间编码帧包括P帧(Predicted-coded Frame,前向预测帧)和/或B帧(Bidirectionally Predicted Frame,双向预测帧)。
媒体数据请求是用于请求媒体数据的指令。在一个实施例中,服务器可通过网络接收媒体数据请求,根据媒体数据请求确定所请求的媒体数据,响应于该媒体数据请求,反馈所请求的媒体数据中的帧。
在一个实施例中,服务器也可在接收到媒体数据请求后,将即时获取的原始数据进行编码,将编码后得到的媒体数据通过网络反馈至终端。服务器也可获取存储的已编码好的媒体数据,通过网络将媒体数据反馈至终端。
在一个实施例中,媒体数据请求可以是通过用户点击终端上应用程序或登录相关网站后触发的,应用程序或网站提供了使用者观看媒体的平台。可以理解,服务器可以接收不同的用户在不同时刻通过终端触发的媒体数据请求。
S204,在媒体数据中确定媒体数据请求所请求的起播帧。
其中,起播帧是媒体数据中与接收的媒体数据请求所对应的帧。可以理解,针对同一个媒体数据的不同媒体数据请求所对应的起播帧可以不同。
服务器可通过媒体数据中各帧的时间戳(timestamp)来对相应的帧进行标识。在一个实施例中,服务器可获取媒体数据中各帧的时间戳,并存储各帧的时间戳与起播时间节点之间的对应关系,在获取到媒体数据播放请求时,依据该对应关系,从媒体数据中查找到与该起播时间节点对应的时间戳所标识的帧,将查找到的帧作为与该媒体数据请求对应的起播帧。
在一个实施例中,媒体数据为直播视频流。具体地,服务器可对实时采集的直播视频图像进行编码,得到各视频帧,在获取到直播视频流播放请求时,为了能够减少直播视频播放的延时,就将最新获取到的视频帧作为与该直播视频流播放请求对应的起播帧。可以理解,这里最新获取到的视频帧可以是在获取到直播视频流请求之前就已经编码得到的视频帧。
在一个实施例中,服务器在得到各视频帧时,记录本地当前的***时间与各视频帧的时间戳的对应关系,在获取到直播视频流播放请求后,从该请求中提取该请求所发出的时间,依据记录的对应关系,查找到与该请求所发出的时间相同的本地***时间对应的时间戳所标识的视频帧,将该视频帧作为起播帧。可以理解,由于数据的发送和接收之间一般都会有时间差,因此,接收到直播流播放请求时服务器本地的***时间一般会晚于该请求被发出的时间,而与该请求被发出的时间相同的本地***时间所对应的视频帧已经被服务器获取。
比如,在一个视频直播平台中,主播从13:00:00开始直播,服务器通过网络实时获取主播推送的直播视频流。假设在直播进行了10分钟时,也就是13:10:00用户通过终端向服务器发送了直播视频流播放请求,并且服务器在接收到该请求时本地的***时间是13:10:05,那么服务器就可以在接收到该请求时,即在13:10:05,提取该视频流播放请求被发出的时间点,即为13:10:00,将媒体数据中本地的***时间为13:10:00对应的时间戳所标识的视频帧作为与直播视频流播放请求对应的起播帧。当然,为了减少视频直播的延迟,服务器也可以将媒体数据中本地的***时间为13:10:04这个时间点对应的时间戳所标识的视频帧作为起播帧。为了避免服务器在接收到该请求时,即在13:10:05,还未获取到主播在13:10:04所推送的直播视频流,服务器也可以将13:09:59这个时间点对应的时间戳所标识的视频帧作为起播帧。
可以理解,上述例子中媒体数据的帧率为1,即一秒一个视频帧。实际情况中,一秒可以对应多个视频帧,从而用户发出直播视频流请求的时间也会被相应细化,精确到毫秒。或者,用户发出直播视频流请求的时间单位还是以秒为单位,但服务器默认设置直播视频流中与该请求对应的起播帧为这一秒所对应的多个视频帧中的其中一个。
S206,当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧。
其中,当起播帧不是关键帧时,则该起播帧可以为预测帧。可以理解,为了保证媒体数据在播放时能够正确解码及播放,媒体数据中各帧是有先后顺序的。在该起播帧之前的帧指的是媒体数据中早于该起播帧出现的帧。
当起播帧不是关键帧时,该起播帧可以是参考媒体数据中在该起播帧之前、距离该起播帧最近的关键帧所生成的预测帧。起播帧还可以是参考媒体数据中在该起播帧之前、距离该起播帧最近的关键帧和/或在该起播帧之前或该起播帧之后的预测帧所生成的预测帧。
具体地,当起播帧不是关键帧时,服务器就可在该媒体数据中查找到在该起播帧之前、离该起播帧最近的关键帧,并确定该起播帧与查找到的关键帧之间的预测帧。
在一个实施例中,服务器在获取到媒体数据后,可存储媒体数据中各帧的类型与各帧的时间戳之间的对应关系,在服务器确定了媒体数据中的起播帧后,就可依据该对应关系确定该起播帧是否为关键帧。
进一步地,服务器在确定了起播帧不是关键帧时,可按照各帧的时间戳的时间顺序,依次向前查找各时间戳所标识的帧的类型,直到查找到与该起播帧最近的关键帧,并确定媒体数据中在该关键帧与起播帧之间的预测帧。
在一个实施例中,媒体数据中各帧包括帧类型字段。服务器可对确定的起播帧中的帧类型字段进行反编码,从而根据反编码的结果确定该起播帧是否为关键帧,当确定了该起播帧不是关键帧时,就依据该起播帧的时间戳,向前依次查找在该时间戳之前的时间戳所标识的各帧,并依据查找的各帧的帧类型字段来判断查找的帧是否为关键帧。
在一个实施例中,当服务器确定起播帧是关键帧时,可直接将该起播帧以及媒体数据中在该起播帧之后的帧作为媒体数据请求的响应进行反馈。
如图3所示,为一个实施例中在直播视频流中确定的起播帧是关键帧时的示意图。参照图3,确定的起播帧为I帧,服务器就可以直接将媒体数据中的该起播帧以及在该起播帧之后的帧作为直播视频流播放请求的反馈。
S208,根据查找到的关键帧和预测帧构建关键帧。
具体地,当起播帧不是关键帧时,则该起播帧可以为预测帧。即,该起播帧可携带相对于在该起播帧之前、且距离该起播帧最近的关键帧的冗余信息。该起播帧也可以携带该关键帧以及该关键帧与该起播帧之间的其它预测帧的冗余信息。可以理解,起播帧的解码需要参考该关键帧,或者,起播帧的解码需要参考该关键帧以及上述的其它预测帧,起播帧被解码后能够完整表达对应的原始数据的全部信息。
因而,服务器可在获取到距离该起播帧最近的关键帧、该关键帧与起播帧之间的其它预测帧时,构建一个能够完整表达原始数据的关键帧,而构建的这一关键帧所能表达的原始数据的全部信息和起播帧在被解码后所要表达的原始数据的全部信息是接近的。
如图4所示,为一个实施例中在直播视频流中确定的起播帧不是关键帧时构建关键帧的示意图。参照图4,确定的起播帧为P帧,起播帧不是关键帧,服务器就向前查找到最近的I帧,依据该I帧、该I帧与该起播帧之间的预测帧(图中直播视频流被阴影方形所圈的部分)构建关键帧,将构建的关键帧以及媒体数据中起播帧之后的帧依次反馈至终端。一般而言,I帧与起播帧之间的预测帧的数量会有很多个,如果服务器从查找到的最近的I帧开始,依次将媒体数据中其它帧反馈至终端,那么终端就会从接收的I帧开始,对I帧以及I帧与起播帧之间的预测帧进行解码并播放,这样就会增加直播视频流播放的延迟时间。
在一个实施例中,服务器还可根据查找到的关键帧、预测帧以及该起播帧构建关键帧。在本实施例中,构建的关键帧还根据起播帧生成,即构建的关键帧不仅参考了查找到的关键帧、预测帧,还参考了起播帧本身所携带的冗余信息,这样构建的关键帧所能表达的原始数据的信息与该起播帧被解码时所表达的原始数据的信息更为接近。
在一个实施例中,查找到的关键帧可以是确定的起播帧的前一个帧,即,在起播帧与查找的关键帧之前没有其它预测帧。在这种情况下,服务器可以根据查找到的关键帧和该起播帧构建关键帧。服务器也可直接将该关键帧以及媒体数据中在该起播帧之后的帧反馈至终端。
S210,响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧。
具体地,服务器可在构建了关键帧后,将构建的关键帧及媒体数据请求所请求的媒体数据中在该起播帧之后的帧反馈至终端。终端在接收到反馈的帧后,从该关键帧起,对接收的帧依次解码播放。
在一个实施例中,服务器可对获取的媒体数据中的每个预测帧,依据在前的、且最近的关键帧,以及该最近的关键帧与该预测帧之间的其它预测帧,构建与该预测帧相对应的关键帧,将构建的关键帧预先存储。当终端发送的媒体数据请求所对应的起播帧为预测帧时,就可直接获取预先存储的该预测帧所对应的关键帧,将该关键帧以及媒体数据中该预测帧之后的帧反馈至终端。
如图5所示,在一个具体的应用场景中,示出了用户通过终端向服务器请求直播视频流的框架示意图。参照图5,主播的终端502在直播过程中的直播视频数据实时推送至直播流媒体服务器504,直播流媒体服务器505在接收到用户终端506发送的视频直播流播放请求时,就根据用户终端的发送的请求即时地反馈直播视频帧,若某个用户点击播放直播视频流时的时间节点对应的时间戳所标识的帧不是关键帧,那么服务器就在已经获得的直播视频流中查找该帧之前最近的关键帧,根据查找到的关键帧、该关键帧与该帧之间的预测帧构建一个新的关键帧,将该关键帧以及时间节点所对应的帧之后的帧即时的反馈至用户,由于用户终端接收到的首个帧是关键帧,因此不会出现“花屏”的现象,又由于是从当前时间节点对应的帧之后的帧开始反馈,减少了直播视频流推送至终端的延迟,各地的用户可以感觉到同步直播的效果。
上述媒体数据处理方法,在媒体数据请求所请求的起播帧不是关键帧时,为了使反馈的数据中包含关键帧,就从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建关键帧,这样,在响应媒体数据请求时,就可以直接反馈构建的关键帧和媒体数据中在该起播帧之后的帧,无需从查找的在起播帧之前的关键帧开始依次反馈媒体数据,从而能够减小所反馈的媒体数据的延迟。
在一个实施例中,步骤S204,在媒体数据中确定媒体数据请求所请求的起播帧,具体包括:确定媒体数据请求所指定的媒体数据;根据媒体数据请求确定起播时间节点;将媒体数据中与起播时间节点匹配的帧确定为起播帧。
其中,起播时间节点,是预先设置的用于播放媒体数据中的某一帧的时间节点。可以理解,媒体数据中每一帧都有对应的起播时间节点,在达到起播时间节点时,该起播时间节点所对应的帧可以被输出以进行播放。在一个实施例中,起播时间节点与媒体数据中各帧的时间戳是对应的。
具体地,服务器可在接收到终端发送的媒体数据请求后,确定该媒体数据请求所指定的媒体数据。比如,用户在终端上点击某个视频直播推送信息,向服务器请求与该链接对应的视频直播流,服务器可根据接收的视频直播流播放请求确定对应的直播视频流的地址并下发至终端,使得终端从该直播视频流地址源源不断地获取直播视频流并播放。
在确定了媒体数据请求对应的媒体数据后,服务器可依据该请求确定起播时间节点。在一个实施例中,服务器可以从该请求中提取该请求被发出的时间节点,作为起播时间节点。服务器也可以将接收到该请求时本地当前的***时间作为起播时间节点。
在一个实施例中,服务器可以从已经获取的媒体数据中各帧对应的播放时间节点中,选取最接近接收到媒体数据请求时本地的***时间的播放时间节点,将选取的最接近的播放时间节点之后的下一个播放时间节点作为起播时间节点。
在确定了起播时间节点后,服务器就可从媒体数据中确定与该起播时间节点匹配的起播帧。在一个实施例中,服务器可预先设置媒体数据中的每一帧与起播时间节点的对应关系,在获取到媒体数据播放请求时,从媒体数据播放请求中提取起播时间节点,依据该对应关系,从媒体数据中查找到与该起播时间节点对应的起播帧。比如,服务器对原始数据进行压缩后得到的媒体数据的帧率为6FPS(Frame Per Second),即一秒6帧数据。假设用户请求从媒体数据的第10秒开始播放,那么服务器就确定了媒体数据中与该媒体数据请求的起播帧为媒体数据中的第60个帧。
可以理解,一个起播时间节点可以对应媒体数据的多个帧,因此,在上述例子中,起播帧也可以是第60个帧至第65个帧中的某一个帧。当然,起播时间节点可以更为细化,比如在第10秒至第11秒,这一秒的时间段被划分为6个起播时间节点,分别是在第10秒、10+1/6秒、10+2/6秒、10+3/6秒、10+4/6秒、10+5/6秒,那么,这些起播时间节点分别对应了第60个帧、第61个帧、第62个帧、第63个帧、第64个帧和第65个帧。
在本实施例中,接收的每个媒体数据请求所针对的媒体数据中的起播帧是不一样的,服务器可依据该媒体数据请求确定起播时间节点,就可以确定媒体数据中与该请求对应的起播帧。
在一个实施例中,媒体数据请求为直播视频流播放请求;媒体数据为直播视频流;根据媒体数据请求确定起播时间节点,包括:根据媒体数据请求确定直播延迟时长;获取当前时间节点;根据当前时间节点和直播延迟时长确定起播时间节点,起播时间节点比当前时间节点早直播延迟时长。
其中,直播延迟时长,是服务器接收主播推送的直播视频流中最新一帧的时间节点与该帧被反馈至终端时间节点之间的时差。直播延迟时长可以是3-6秒。当前时间节点是服务器获取的直播视频流中最新一帧所对应的时间节点。
举例说明,主播从13:00:00开始向服务器推流,推送了10分钟,那么当前时间节点可以是13:10:00。服务器也可将13:00:00当作该直播视频流的起始时间节点00:00:00,那么当前时间节点就是00:10:00。假设,直播延迟时长为5秒,对应的起播时间节点就为13:09:55或00:09:55。可以理解,在当前时刻13:10:00,服务器接收主播推送的直播视频流中的最新一帧,那么该帧将会在13:10:05的时刻才会被反馈至终端。而当前时刻推送至终端的帧是在13:09:55或者是在第00:09:55服务器接收的主播推送的直播视频流中的帧。需要说明的是,直播视频流播放请求中携带的直播延迟时长是在用户可接收延迟时长范围内的时长,有了这个延迟时长,可避免在用户请求直播视频流时,主播因受到网络或外界因素的影响,最新的视频帧还未来得及推送至服务器,或者服务器还未来得及反馈最新的视频帧至终端,导致终端的播放器出现“卡播”的现象。
具体地,终端向服务器发送的直播视频流播放请求中携带了直播延迟时长,服务器从接收的直播视频流播放请求中提取到直播延迟时长,根据接收到的主播推送的最新一帧对应的时间节点,确定当前时间节点,将比确定的当前时间节点早直播延迟时长的时间节点作为起播时间节点。
如图6所示,在一个实施例中,提供了客户端向服务器请求播放直播视频流的框架示意图。参照图6,客户端只需要:第一步、向发服务器发送直播视频流播放请求,以加载想要播放的直播视频流并明确告知所配置的直播延迟时长;第二步、将从服务器请求回来的直播视频流数据通过播放器进行播放,即可实现使用户观看到直播视频流。相比于客户端需要提前向服务器请求I帧索引列表,根据该列表查询到距离当前播放时间节点最近的I帧,并向服务器请求从该最近的I帧开始播放,图6中的方案没有请求的过程,也不需要从查找的I帧开始起播,能够大大减少直播视频的播放延迟。
在一个实施例中,服务器可根据当前的网络状况来调整终端配置的直播延迟时长。在网络状况优良时,服务器接收到主播推送的视频帧非常及时,反馈至终端的视频帧也非常及时,那么服务器就可以适当减小直播延迟时长,使得在终端根据接收到的最新的视频帧解码后播出的画面与主播的直播画面更为接近,实现低延迟直播的效果。
在一个实施例中,终端发送至服务器的直播视频流播放请求也可不携带直播延迟时长,直播延迟时长是由服务器默认设置的。在一个实施例中,服务器也可参考发送直播视频流的终端所在的地理位置信息、该终端所处的网络状况信息、用于观看直播视频的应用程序的相关信息、用户账号信息等来动态地设置对应的直播延迟时长。
在本实施例中,本方案可应用于直播视频流的播放,在终端向服务器请求直播视频流时,为了减少终端播放器针对反馈的视频帧解码时出现“卡播”的情况,起播时间节点可以是比当前时间节点晚直播延时时长。
在一个实施例中,媒体数据包括媒体分片;媒体分片包括多帧;起播帧是起播媒体分片中的帧;步骤S210,响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧,具体包括:将构建的关键帧***起播媒体分片;响应于媒体数据请求,反馈已***关键帧的起播媒体分片及媒体数据中在起播媒体分片之后的媒体分片。
其中,媒体分片是媒体数据中包含多帧的分片式数据。媒体数据传输的单位也可以是媒体分片。
在一个实施例中,服务器在获取到媒体数据后,按照媒体数据中各帧的顺序,将多个帧划分为一个媒体分片,从而将媒体数据划分为多个媒体分片。划分的媒体分片中帧的数量可以相同,也可以不同。服务器还可记录各个媒体分片与所包含的各帧之间的对应关系。可以理解,一个媒体分片中可以包含关键帧和/或预测帧。一个媒体分片中也可以没有关键帧。
在一个实施例中,服务器可生成关键帧索引表,通过查询该关键帧索引表,可确定各分片标识所对应的媒体分片中是否包含关键帧。
在一个实施例中,服务器可为媒体数据中的各个媒体分片生成相应的分片标识。分片标识可以根据该媒体分片中所包含的各帧的时间戳生成。比如,A媒体分片中包含的各帧的时间戳为801,802,803,804等,那么A媒体分片的分片标识可以是8,B媒体分片中包含的各帧的时间戳为901,902,903,904等,那么B媒体分片的分片标识可以是9。
起播媒体分片,是媒体数据中与接收的媒体数据请求所对应的起播帧所属的媒体分片。
具体地,服务器可将构建的关键帧***到起播媒体分片中,以使该起播媒体分片中存在关键帧,然后将包含了构建的关键帧的起播媒体分片以及媒体数据中在起播媒体分片之后的媒体分片反馈至终端。
在一个实施例中,服务器可将构建的关键帧***到起播媒体分片的首个位置。终端在接收到该起播媒体分片时,可以直接解码接收到的起播媒体分片中的首个帧,首个帧为关键帧,终端可根据该帧独立正常解码得到完整的原始数据的全部信息,无需参考其它帧,从而,播放器播放的首个画面不会出现“花屏”的现象。
如图7所示,在一个实施例中,示出了将媒体数据划分多个媒体分片的示意图。图7中示出的媒体数据为直播视频流,直播视频流包括I帧、P帧和B帧。参照图7,示出了连续的多个媒体分片,每个媒体分片包括6个视频帧,媒体分片6的首帧为I帧,媒体分片7和媒体分片8中没有I帧,只有P帧或B帧。可以理解,服务器按照分片标识的顺序,将媒体分片6、7、8、…依次反馈至终端,终端从接收的媒体分片6、7、8、…依次解码播放,终端在对媒体分片7、8中的各预测帧进行解码播放时需要参考媒体分片6中的I帧。
在本实施例中,服务器将媒体数据划分为多个媒体分片,以媒体分片为传输单位反馈至终端,那么为了使终端在接收到起播媒体分片时能够正常解码播放,就将构建的关键帧***到起播媒体分片中,从而终端因起播媒体分片中包括完整的原始数据的全部信息就可解码出完整数据并起播。
在一个实施例中,步骤S206,当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧,具体包括:当起播媒体分片不包括关键帧时,从媒体数据中搜索在起播媒体分片前最近的、且包括关键帧的媒体分片;从搜索到的媒体分片中查找关键帧;获取查找到的关键帧与起播媒体分片间的预测帧。
具体地,服务器在确定了与媒体数据请求对应的起播帧所属的起播媒体分片后,查询该起播媒体分片中是否包括关键帧;当起播媒体分片不包括关键帧时,则该起播媒体分片中的帧都是预测帧,服务器可从媒体数据中搜索在该起播媒体分片之前最近的、且包括关键帧的媒体分片;从搜索到的媒体分片中查找关键帧,并获取查找到的关键帧与起播媒体分片之间的预测帧。
可以理解,当起播媒体分片不包括关键帧时,该起播媒体分片中的各个帧以及查找到的预测帧都是参考查找到的关键帧生成的。为了保证数据传输的时效,媒体分片中包含的帧的个数可以较少。为了保证压缩率,媒体数据中两个关键帧之间的预测帧的个数可以较多,从而,关键帧出现的频率较低,这种情况下,媒体分片中如果包含关键帧,通常就只包含一个关键帧。
在一个实施例中,服务器可通过查询关键帧索引列表确定该起播媒体分片是否包括关键帧。进一步地,在确定了该起播媒体分片不包括关键帧后,可按照各媒体分片的分片标识的所对应的时间顺序,从该起播媒体分片对应的分片标识起,依次向前查找各分片标识所标识的媒体分片是否包括关键帧,直到查找到包括关键帧的媒体分片,确定该分片中的关键帧,并获取该关键帧与起播媒体分片之间的预测帧。
在一个实施例中,服务器可根据从最近的媒体分片中查找到的关键帧和预测帧构建关键帧。由于起播媒体分片中的各帧携带了相对于查找到的关键帧的冗余信息,也携带了相对于查找到的预测帧的冗余信息,因此,起播媒体分片中各帧的解码都需要参考查找到的关键帧和预测帧。而构建的关键帧是根据查找到的关键帧以及查找到的关键帧与起播媒体分片之间的预测帧构建而成的,因此构建的关键帧所能表达的原始数据的全部信息与起播媒体分片中首个帧被解码后所要表达的原始数据的全部信息非常接近。
在本实施例中,当起播媒体分片不包括关键帧时,服务器可根据查找到的关键帧以及关键帧与起播媒体分片之间的预测帧构建一个新的关键帧,构建的关键帧***到起播媒体分片中,使得该媒体分片包含了能够表达原始数据的完整信息的帧。
在一个实施例中,步骤S204,在媒体数据中确定媒体数据请求所请求的起播帧,具体包括:根据媒体数据请求确定起播时间节点;在媒体数据中查找与起播时间节点匹配的起播媒体分片。
可以理解,媒体数据中每一帧都有对应的起播时间节点,服务器在将各帧划分为多个媒体分片后,各个媒体分片也就对应了一个范围的起播时间节点,在达到该范围内的任一起播时间节点时,该起播时间节点所对应的起播帧所属的媒体分片即为起播媒体分片,起播媒体分片可以被输出以进行解码和播放。
在一个实施例中,服务器获取媒体数据,将媒体数据划分为多个媒体分片后,记录各媒体分片中各帧的时间戳,将各帧的时间戳与各帧对应的起播时间节点对应存储,将媒体分片的分片标识与所包括的各帧的时间戳对应存储。
比如,在媒体数据中,分片标识7所标识的媒体分片中各帧对应的时间戳为701、702、703、704、705、706,各帧对应的起播时间节点为7秒、7+1/6秒、7+2/6秒、7+3/6秒、7+4/6秒、7+5/6秒,则分片标识7所标识的媒体分片对应的起播时间节点范围是7至8秒;分片标识8所标识的起播媒体分片中各帧对应的时间戳为801、802、803、804、805、806,各帧对应的起播时间节点为8秒、8+1/6秒、8+2/6秒、8+3/6秒、8+4/6秒、8+5/6秒,则分片标识8所标识的媒体分片对应的起播时间节点范围是8至9秒;在服务器根据媒体数据请求确定起播时间节点为7+3/6秒时,则根据该起播时间节点确定该起播时间节点对应的时间戳为703,时间戳703所标识的帧属于分片标识7所标识的媒体分片,因此,就可以将媒体分片7作为起播媒体分片。
如图8所示,在一个实施例中,示出了客户端向服务器请求播放直播视频流的框架示意图。参照图8,视频直播流数据被划分成多个视频分片,客户端向服务器发送直播视频流播放请求,服务器根据该请求确定起播视频分片,如图8所示,起播视频分片的分片标识为8,服务器在确定该起播视频分片不包括I帧后,查找到起播视频分片之前、离起播视频分片最近的视频分片是视频分片6,视频分片6中的I帧为该分片中的首个帧,服务器依据该I帧以及该I帧与起播视频分片8之间的各预测帧(图中直播视频流被阴影方形所圈的部分)构建关键帧,将构建的关键帧***到视频分片8中后,将该起播视频分片以及直播视频流中在视频分片8之后的视频分片9、视频分片10等依次反馈至客户端,客户端将接收的视频分片8、视频分片9、视频分片10等依次通过播放器解码并播放。
在本实施例中,服务器可根据终端发送的媒体数据播放请求确定起播时间节点,进而根据起播时间节点确定起播媒体分片,就可从该起播媒体分片开始向终端依次反馈媒体数据,能够减小所反馈的媒体数据的延迟。
在一个实施例中,媒体数据包括帧组;每个帧组包括多帧,且每个帧组的首帧为关键帧;步骤S206,当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧,具体包括:确定起播帧所在的起播帧组;当起播帧非起播帧组中的首帧时,获取起播帧组中作为首帧的关键帧及首帧与起播帧间的预测帧。
其中,帧组(Group of Picture)是媒体数据中一组连续的帧所构成的帧序列。帧组又叫帧画面。帧组的首帧为关键帧,帧组中的其余帧为预测帧。帧组中的预测帧参考相对于首帧的冗余信息而生成。帧组中各帧被解码后所要表达的原始数据的信息之间的差异不会太大。可以理解,帧组可以包括多个媒体分片。
在一个实施例中,服务器可记录各帧组所包括的各帧的信息。比如,可记录帧组中各帧的时间戳。具体地,服务器可根据起播帧的时间戳确定该起播帧很所在的帧组,将该帧组确定为起播帧组,当确定的起播帧不是该起播帧组中的首帧时,则获取该起播帧组中作为首帧的关键帧以及该起播帧组中首帧与起播帧之间的预测帧。
在一个实施例中,服务器可根据获取的起播帧组中的关键帧以及首帧与起播帧之间的预测帧构建与起播帧对应的一个关键帧。可以理解,构建的关键帧由于参考了该帧组中的关键帧、首帧与起播帧之间的预测帧,因此构建的关键帧所能够表达的原始数据的信息与该起播帧被解码时所能表达的原始数据的信息是非常接近的。
在一个实施例中,服务器可从构建的该关键帧起,将媒体数据中在该起播帧之后的帧依次反馈至终端,以使终端在接收后依次解码播放,能够减小反馈的媒体数据的延迟。
在本实施例中,媒体数据由帧组构成,因此在确定的起播帧不是关键帧时,服务器可确定该起播帧所在的帧组,进而可以获取该帧组的首帧、首帧与起播帧直接的预测帧,从而可依据获取的首帧、首帧与起播帧直接的预测帧构建关键帧。
在一个实施例中,步骤S208,根据查找到的关键帧和预测帧构建关键帧,具体包括:确定查找到的关键帧和预测帧中各帧间的帧参考关系;基于查找到的关键帧,并按照确定的帧参考关系进行关键帧还原,得到构建的关键帧。
其中,帧参考关系,是媒体数据中各帧之间的参考关系。
在一个实施例中,查找到的关键帧为I帧,查找到的预测帧为B帧或P帧,那么帧参考关系包括P帧与在前的I帧之间的参考关系、P帧与在前的P帧之间的参考关系、B帧与P帧之间的参考关系、B帧与I帧之间的参考关系等。
在一个实施例中,服务器可依据查找到的关键帧和预测帧之间的帧参考关系,对与媒体数据请求对应的起播帧进行帧解码,得到起播帧所能完整表达的原始图像数据,然后将解码得到的原始图像数据编码成关键帧,得到构建的关键帧。可以理解,构建的关键帧所携带的信息与该起播帧被解码时得到的原始图像所携带的信息是非常接近的。
以对原始数据进行编码得到媒体数据的过程来举例说明:编码器编码原始数据得到一个I帧,然后向前跳过n个帧,用编码得到的I帧作为基准帧对一个第n+1个帧进行编码得到P帧,根据得到的I帧和得到的P帧,跳回到前述的I帧的下一个帧,将跳过的n个帧编码为B帧。接着,编码器会再次跳过n个帧,使用第一个P帧作为基准帧编码下一个P帧,然后再次跳回,将第一个P帧与编码得到的第二个P帧之间的帧用B帧填充。每个B帧携带了它与I帧之间的差值信息,或者携带了它与P帧之间的差值信息,或者携带了在前的P帧与在后的P帧之间的差值信息,或者携带了在前的P帧与在后的I帧之间的差值信息等。
以n=2举例,得到的媒体数据为I、B、B、P、B、B、P、B、B、I、B、B、P,解码时,由于第0帧携带了完整信息,可以被解码,就先解出第0帧,依据第0帧与第3帧之间的帧参考关系,计算得到第3帧;再根据帧参考关系计算得出第1帧、第2帧等等。即按照第0、3、1、2、6、4、5、9、7、8帧的顺序对媒体数据中各帧进行解码。那么,在媒体数据请求所对应的起播帧为第3帧时,就根据查找的关键帧和预测帧中各帧之间的帧参考关系进行帧还原得到第3帧的原始数据,然后再对第3帧的原始数据进行I帧编码,构建关键帧。类似地,在媒体数据请求所对应的起播帧为第5帧时,就根据在前的关键帧和预测帧中各帧之间的帧参考关系进行帧还原得到第5帧的原始数据,然后再对第5帧的原始数据进行I帧编码,构建关键帧。
在本实施例中,依据查找的关键帧和预测帧中各帧之间的帧参考关系,可以根据查找的关键帧和预测帧构建一个新的关键帧,并且,构建的关键帧所携带的信息接近于起播帧在被解码时所表达的原始数据的完整信息。
如图9所示,在一个具体的实施例中,媒体数据处理方法具体包括以下步骤:
S902,接收媒体数据请求。
S904,确定媒体数据请求所指定的媒体数据。
S906,媒体数据请求为直播视频流播放请求;媒体数据为直播视频流;根据媒体数据请求确定直播延迟时长。
S908,获取当前时间节点。
S910,根据当前时间节点和直播延迟时长确定起播时间节点,起播时间节点比当前时间节点早直播延迟时长。
S912a,将媒体数据中与起播时间节点匹配的帧确定为起播帧。
S914a,当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧。
S916a,根据查找到的关键帧和预测帧构建关键帧。
S918a,响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧。
S912b,在媒体数据中查找与起播时间节点匹配的起播媒体分片。
S914b,当起播媒体分片不包括关键帧时,从媒体数据中搜索在起播媒体分片前最近的、且包括关键帧的媒体分片。
S916b,从搜索到的媒体分片中查找关键帧;获取查找到的关键帧与起播媒体分片间的预测帧;根据查找到的关键帧和预测帧构建关键帧。
S918b,将构建的关键帧***起播媒体分片;响应于媒体数据请求,反馈已***关键帧的起播媒体分片及媒体数据中在起播媒体分片之后的媒体分片。
上述媒体数据处理方法,在媒体数据请求所请求的起播帧不是关键帧时,为了使反馈的数据中包含关键帧,就从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建关键帧,这样,在响应媒体数据请求时,就可以直接反馈构建的关键帧和媒体数据中在该起播帧之后的帧,无需从查找的在起播帧之前的关键帧开始依次反馈媒体数据,从而能够减小所反馈的媒体数据的延迟。
图9为一个实施例中媒体数据处理方法的流程示意图。应该理解的是,虽然图9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
如图10所示,在一个实施例中,提供了一种媒体数据播放方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图10,该媒体数据播放方法具体包括如下步骤:
S1002,发送媒体数据请求。
如前文,媒体数据请求是用于请求媒体数据的指令。在一个实施例中,终端通过网络向服务器发送媒体数据请求,以使服务器根据媒体数据请求确定终端所请求的媒体数据,并响应于该媒体数据请求,反馈所请求的媒体数据中的帧。
在一个实施例中,媒体数据请求可以是通过用户点击终端上应用程序或登录相关网站后触发的,应用程序或网站提供了使用者观看媒体的平台。可以理解,服务器可以接收不同的用户通过终端在不同时刻触发的媒体数据请求。
S1004,接收响应于媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据预测帧及媒体数据中在起播帧前与起播帧最近的关键帧构建得到;预测帧是最近的关键帧与起播帧间的预测帧;起播帧由媒体数据请求所指定。
具体地,终端可接收服务器响应于媒体数据请求所反馈的帧,反馈的帧是服务器根据预测帧以及媒体数据中在起播帧前与起播帧最近的关键帧构建得到的。从而,终端不必向服务器请求从查找到的关键帧开始反馈,也就无需从接收的查找到的关键帧开始解码播放,而是从构建的关键帧开始解码播放,能够大大减少媒体数据播放的延迟。
S1006,从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
在一个实施例中,接收响应于媒体数据请求所反馈的帧的步骤具体包括:接收响应于媒体数据请求所反馈的媒体分片;每个媒体分片包括多帧;媒体分片包括起播媒体分片;起播媒体分片包括关键帧;从接收到的帧中的关键帧起,对接收到的帧进行解码播放的步骤具体包括:从接收到的起播媒体分片中的关键帧起,逐个对接收到的媒体分片中的帧进行解码播放。
上述媒体数据播放方法,在媒体数据请求所请求的起播帧不是关键帧时,接收的反馈的关键帧,是从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建得到的关键帧,这样,就可以直接根据构建的关键帧和媒体数据中在该起播帧之后的帧进行解码播放,无需从查找的在起播帧之前的关键帧开始依次播放媒体数据,从而能够减小所播放的媒体数据的延迟。
如图11所示,在一个实施例中,提供了一种媒体数据处理装置1100,该装置包括:接收模块1102、确定模块1104、查找模块1106、构建模块1108、和响应模块1110,其中:
接收模块1102,用于接收媒体数据请求。
确定模块1104,用于在媒体数据中确定媒体数据请求所请求的起播帧。
查找模块1106,用于当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧。
构建模块1108,用于根据查找到的关键帧和预测帧构建关键帧。
响应模块1110,用于响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧。
在一个实施例中,如图12所示,确定模块1104具体包括:媒体数据确定模块1202、起播时间节点确定模块1204和起播帧确定模块1206,其中,媒体数据确定模块1202用于确定媒体数据请求所指定的媒体数据;起播时间节点确定模块1204用于根据媒体数据请求确定起播时间节点;起播帧确定模块1206用于将媒体数据中与起播时间节点匹配的帧确定为起播帧。
在一个实施例中,媒体数据请求为直播视频流播放请求;媒体数据为直播视频流;起播时间节点确定模块1204还用于根据媒体数据请求确定直播延迟时长;获取当前时间节点;根据当前时间节点和直播延迟时长确定起播时间节点,起播时间节点比当前时间节点早直播延迟时长。
在一个实施例中,媒体数据包括媒体分片;媒体分片包括多帧;起播帧是起播媒体分片中的帧;响应模块1110还用于将构建的关键帧***起播媒体分片;响应于媒体数据请求,反馈已***关键帧的起播媒体分片及媒体数据中在起播媒体分片之后的媒体分片。
在一个实施例中,构建模块1108还用于当起播媒体分片不包括关键帧时,从媒体数据中搜索在起播媒体分片前最近的、且包括关键帧的媒体分片;从搜索到的媒体分片中查找关键帧;获取查找到的关键帧与起播媒体分片间的预测帧。
在一个实施例中,确定模块1104还用于根据媒体数据请求确定起播时间节点;在媒体数据中查找与起播时间节点匹配的起播媒体分片。
在一个实施例中,媒体数据包括帧组;每个帧组包括多帧,且每个帧组的首帧为关键帧;构建模块1108还用于确定起播帧所在的起播帧组;当起播帧非起播帧组中的首帧时,获取起播帧组中作为首帧的关键帧及首帧与起播帧间的预测帧。
在一个实施例中,构建模块1108还用于根据查找到的关键帧、预测帧和起播帧构建关键帧。
在一个实施例中,构建模块1108还用于确定查找到的关键帧和预测帧中各帧间的帧参考关系;基于查找到的关键帧,并按照确定的帧参考关系进行关键帧还原,得到构建的关键帧。
上述媒体数据处理装置1100,在媒体数据请求所请求的起播帧不是关键帧时,为了使反馈的数据中包含关键帧,就从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建关键帧,这样,在响应媒体数据请求时,就可以直接反馈构建的关键帧和媒体数据中在该起播帧之后的帧,无需从查找的在起播帧之前的关键帧开始依次反馈媒体数据,从而能够减小所反馈的媒体数据的延迟。
如图13所示,在一个实施例中,提供了一种媒体数据播放装置1300,该装置具体包括:发送模块1302、接收模块1304和播放模块1306,其中:
发送模块1302,用于发送媒体数据请求。
接收模块1304,用于接收响应于媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据预测帧及媒体数据中在起播帧前与起播帧最近的关键帧构建得到;预测帧是最近的关键帧与起播帧间的预测帧;起播帧由媒体数据请求所指定。
播放模块1306,用于从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
在一个实施例中,接收模块1304还用于接收响应于媒体数据请求所反馈的媒体分片;每个媒体分片包括多帧;媒体分片包括起播媒体分片;起播媒体分片包括关键帧;播放模块1306还用于从接收到的起播媒体分片中的关键帧起,逐个对接收到的媒体分片中的帧进行解码播放。
上述媒体数据播放装置1300,在媒体数据请求所请求的起播帧不是关键帧时,接收的反馈的关键帧,是从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建得到的关键帧,这样,就可以直接根据构建的关键帧和媒体数据中在该起播帧之后的帧进行解码播放,无需从查找的在起播帧之前的关键帧开始依次播放媒体数据,从而能够减小所播放的媒体数据的延迟。
图14示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的服务器120。如图14所示,该计算机设备包括该计算机设备包括通过***总线连接的处理器、存储器、网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作***,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现媒体数据处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行媒体数据处理方法。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的媒体数据处理装置1100可以实现为一种计算机程序的形式,计算机程序可在如图14所示的计算机设备上运行。计算机设备的存储器中可存储组成该媒体数据处理装置的各个程序模块,比如,图11所示的接收模块1102、确定模块1104、查找模块1106、构建模块1108和响应模块1110。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的媒体数据处理方法中的步骤。
例如,图14所示的计算机设备可以通过如图11所示的媒体数据处理装置中的接收模块1102执行步骤S202。计算机设备可通过确定模块1104执行步骤S204。计算机设备可通过查找模块1106执行步骤S206。计算机设备可通过构建模块1108执行步骤S208。计算机设备可通过响应模块1110执行步骤S210。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:接收媒体数据请求;在媒体数据中确定媒体数据请求所请求的起播帧;当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧;根据查找到的关键帧和预测帧构建关键帧;响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧。
在一个实施例中,计算机程序被处理器执行在媒体数据中确定媒体数据请求所请求的起播帧的步骤时,使得处理器具体执行以下步骤:确定媒体数据请求所指定的媒体数据;根据媒体数据请求确定起播时间节点;将媒体数据中与起播时间节点匹配的帧确定为起播帧。
在一个实施例中,媒体数据请求为直播视频流播放请求;媒体数据为直播视频流;计算机程序被处理器执行根据媒体数据请求确定起播时间节点的步骤时,使得处理器具体执行以下步骤:根据媒体数据请求确定直播延迟时长;获取当前时间节点;根据当前时间节点和直播延迟时长确定起播时间节点,起播时间节点比当前时间节点早直播延迟时长。
在一个实施例中,媒体数据包括媒体分片;媒体分片包括多帧;起播帧是起播媒体分片中的帧;计算机程序被处理器执行响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧的步骤时,使得处理器具体执行以下步骤:将构建的关键帧***起播媒体分片;响应于媒体数据请求,反馈已***关键帧的起播媒体分片及媒体数据中在起播媒体分片之后的媒体分片。
在一个实施例中,计算机程序被处理器执行当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧的步骤时,使得处理器具体执行以下步骤:当起播媒体分片不包括关键帧时,从媒体数据中搜索在起播媒体分片前最近的、且包括关键帧的媒体分片;从搜索到的媒体分片中查找关键帧;获取查找到的关键帧与起播媒体分片间的预测帧。
在一个实施例中,计算机程序被处理器执行在媒体数据中确定媒体数据请求所请求的起播帧的步骤时,使得处理器具体执行以下步骤:根据媒体数据请求确定起播时间节点;在媒体数据中查找与起播时间节点匹配的起播媒体分片。
在一个实施例中,媒体数据包括帧组;每个帧组包括多帧,且每个帧组的首帧为关键帧;计算机程序被处理器执行当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧的步骤时,使得处理器具体执行以下步骤:确定起播帧所在的起播帧组;当起播帧非起播帧组中的首帧时,获取起播帧组中作为首帧的关键帧及首帧与起播帧间的预测帧。
在一个实施例中,计算机程序被处理器执行根据查找到的关键帧和预测帧构建关键帧的步骤时,使得处理器具体执行以下步骤:根据查找到的关键帧、预测帧和起播帧构建关键帧。
在一个实施例中,计算机程序被处理器执行根据查找到的关键帧和预测帧构建关键帧的步骤时,使得处理器具体执行以下步骤:确定查找到的关键帧和预测帧中各帧间的帧参考关系;基于查找到的关键帧,并按照确定的帧参考关系进行关键帧还原,得到构建的关键帧。
上述计算机设备,在媒体数据请求所请求的起播帧不是关键帧时,为了使反馈的数据中包含关键帧,就从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建关键帧,这样,在响应媒体数据请求时,就可以直接反馈构建的关键帧和媒体数据中在该起播帧之后的帧,无需从查找的在起播帧之前的关键帧开始依次反馈媒体数据,从而能够减小所反馈的媒体数据的延迟。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:接收媒体数据请求;在媒体数据中确定媒体数据请求所请求的起播帧;当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧;根据查找到的关键帧和预测帧构建关键帧;响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧。
在一个实施例中,计算机程序被处理器执行在媒体数据中确定媒体数据请求所请求的起播帧的步骤时,使得处理器具体执行以下步骤:确定媒体数据请求所指定的媒体数据;根据媒体数据请求确定起播时间节点;将媒体数据中与起播时间节点匹配的帧确定为起播帧。
在一个实施例中,媒体数据请求为直播视频流播放请求;媒体数据为直播视频流;计算机程序被处理器执行根据媒体数据请求确定起播时间节点的步骤时,使得处理器具体执行以下步骤:根据媒体数据请求确定直播延迟时长;获取当前时间节点;根据当前时间节点和直播延迟时长确定起播时间节点,起播时间节点比当前时间节点早直播延迟时长。
在一个实施例中,媒体数据包括媒体分片;媒体分片包括多帧;起播帧是起播媒体分片中的帧;计算机程序被处理器执行响应于媒体数据请求,反馈构建的关键帧及媒体数据中在起播帧之后的帧的步骤时,使得处理器具体执行以下步骤:将构建的关键帧***起播媒体分片;响应于媒体数据请求,反馈已***关键帧的起播媒体分片及媒体数据中在起播媒体分片之后的媒体分片。
在一个实施例中,计算机程序被处理器执行当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧的步骤时,使得处理器具体执行以下步骤:当起播媒体分片不包括关键帧时,从媒体数据中搜索在起播媒体分片前最近的、且包括关键帧的媒体分片;从搜索到的媒体分片中查找关键帧;获取查找到的关键帧与起播媒体分片间的预测帧。
在一个实施例中,计算机程序被处理器执行在媒体数据中确定媒体数据请求所请求的起播帧的步骤时,使得处理器具体执行以下步骤:根据媒体数据请求确定起播时间节点;在媒体数据中查找与起播时间节点匹配的起播媒体分片。
在一个实施例中,媒体数据包括帧组;每个帧组包括多帧,且每个帧组的首帧为关键帧;计算机程序被处理器执行当起播帧不是关键帧时,从媒体数据中查找在起播帧前与起播帧最近的关键帧及最近的关键帧与起播帧间的预测帧的步骤时,使得处理器具体执行以下步骤:确定起播帧所在的起播帧组;当起播帧非起播帧组中的首帧时,获取起播帧组中作为首帧的关键帧及首帧与起播帧间的预测帧。
在一个实施例中,计算机程序被处理器执行根据查找到的关键帧和预测帧构建关键帧的步骤时,使得处理器具体执行以下步骤:根据查找到的关键帧、预测帧和起播帧构建关键帧。
在一个实施例中,计算机程序被处理器执行根据查找到的关键帧和预测帧构建关键帧的步骤时,使得处理器具体执行以下步骤:确定查找到的关键帧和预测帧中各帧间的帧参考关系;基于查找到的关键帧,并按照确定的帧参考关系进行关键帧还原,得到构建的关键帧。
上述计算机可读存储介质,在媒体数据请求所请求的起播帧不是关键帧时,为了使反馈的数据中包含关键帧,就从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建关键帧,这样,在响应媒体数据请求时,就可以直接反馈构建的关键帧和媒体数据中在该起播帧之后的帧,无需从查找的在起播帧之前的关键帧开始依次反馈媒体数据,从而能够减小所反馈的媒体数据的延迟。
图15示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图15所示,该计算机设备包括该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作***,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现媒体数据播放方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行媒体数据播放方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的媒体数据播放装置1300可以实现为一种计算机程序的形式,计算机程序可在如图15所示的计算机设备上运行。计算机设备的存储器中可存储组成该媒体数据播放装置的各个程序模块,比如,图13所示的发送模块1302、接收模块1304和播放模块1306。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的媒体数据播放方法中的步骤。
例如,图15所示的计算机设备可以通过如图13所示的媒体数据播放装置中的发送模块1302执行步骤S1002。计算机设备可通过接收模块1304执行步骤S1004。计算机设备可通过播放模块1306执行步骤S1006。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:发送媒体数据请求;接收响应于媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据预测帧及媒体数据中在起播帧前与起播帧最近的关键帧构建得到;预测帧是最近的关键帧与起播帧间的预测帧;起播帧由媒体数据请求所指定;从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
在一个实施例中,计算机程序被处理器执行接收响应于媒体数据请求所反馈的帧的步骤时,使得处理器具体执行以下步骤:接收响应于媒体数据请求所反馈的媒体分片;每个媒体分片包括多帧;媒体分片包括起播媒体分片;起播媒体分片包括关键帧;计算机程序被处理器执行从接收到的帧中的关键帧起,对接收到的帧进行解码播放的步骤时,使得处理器具体执行以下步骤:从接收到的起播媒体分片中的关键帧起,逐个对接收到的媒体分片中的帧进行解码播放。
上述计算机设备,在媒体数据请求所请求的起播帧不是关键帧时,接收的反馈的关键帧,是从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建得到的关键帧,这样,就可以直接根据构建的关键帧和媒体数据中在该起播帧之后的帧进行解码播放,无需从查找的在起播帧之前的关键帧开始依次播放媒体数据,从而能够减小所播放的媒体数据的延迟。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得处理器执行以下步骤:发送媒体数据请求;接收响应于媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据预测帧及媒体数据中在起播帧前与起播帧最近的关键帧构建得到;预测帧是最近的关键帧与起播帧间的预测帧;起播帧由媒体数据请求所指定;从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
在一个实施例中,计算机程序被处理器执行接收响应于媒体数据请求所反馈的帧的步骤时,使得处理器具体执行以下步骤:接收响应于媒体数据请求所反馈的媒体分片;每个媒体分片包括多帧;媒体分片包括起播媒体分片;起播媒体分片包括关键帧;计算机程序被处理器执行从接收到的帧中的关键帧起,对接收到的帧进行解码播放的步骤时,使得处理器具体执行以下步骤:从接收到的起播媒体分片中的关键帧起,逐个对接收到的媒体分片中的帧进行解码播放。
上述计算机可读存储介质,在媒体数据请求所请求的起播帧不是关键帧时,接收的反馈的关键帧,是从媒体数据中查找在该起播帧前、且与该起播帧最近的关键帧,并根据查找到的关键帧以及该关键帧与该起播帧间的预测帧构建得到的关键帧,这样,就可以直接根据构建的关键帧和媒体数据中在该起播帧之后的帧进行解码播放,无需从查找的在起播帧之前的关键帧开始依次播放媒体数据,从而能够减小所播放的媒体数据的延迟。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (19)
1.一种媒体数据处理方法,包括:
接收媒体数据请求;
在媒体数据中确定所述媒体数据请求所请求的起播帧;
当所述起播帧不是关键帧时,从所述媒体数据中查找在所述起播帧前与所述起播帧最近的关键帧及最近的关键帧与所述起播帧间的预测帧;
确定查找到的关键帧和所述预测帧中各帧之间的帧参考关系,基于查找到的关键帧,并按照确定的所述帧参考关系对与所述起播帧进行帧解码,得到所述起播帧所能完整表达的原始图像数据,将解码得到的所述原始图像数据编码成关键帧,作为构建的关键帧;
响应于所述媒体数据请求,反馈构建的关键帧及所述媒体数据中在所述起播帧之后的帧,以指示依次播放所述构建的关键帧以及在所述起播帧之后的帧。
2.根据权利要求1所述的方法,其特征在于,所述在媒体数据中确定所述媒体数据请求所请求的起播帧,包括:
确定所述媒体数据请求所指定的媒体数据;
根据所述媒体数据请求确定起播时间节点;
将所述媒体数据中与所述起播时间节点匹配的帧确定为起播帧。
3.根据权利要求2所述的方法,其特征在于,所述媒体数据请求为直播视频流播放请求;所述媒体数据为直播视频流;所述根据所述媒体数据请求确定起播时间节点,包括:
根据所述媒体数据请求确定直播延迟时长;
获取当前时间节点;
根据所述当前时间节点和所述直播延迟时长确定起播时间节点,所述起播时间节点比所述当前时间节点早所述直播延迟时长。
4.根据权利要求1所述的方法,其特征在于,所述媒体数据包括媒体分片;所述媒体分片包括多帧;所述起播帧是起播媒体分片中的帧;
所述响应于所述媒体数据请求,反馈构建的关键帧及所述媒体数据中在所述起播帧之后的帧,包括:
将构建的关键帧***所述起播媒体分片;
响应于所述媒体数据请求,反馈已***关键帧的所述起播媒体分片及所述媒体数据中在所述起播媒体分片之后的媒体分片。
5.根据权利要求4所述的方法,其特征在于,所述当所述起播帧不是关键帧时,从所述媒体数据中查找在所述起播帧前与所述起播帧最近的关键帧及最近的关键帧与所述起播帧间的预测帧,包括:
当所述起播媒体分片不包括关键帧时,从所述媒体数据中搜索在所述起播媒体分片前最近的、且包括关键帧的媒体分片;
从搜索到的媒体分片中查找关键帧;
获取查找到的关键帧与所述起播媒体分片间的预测帧。
6.根据权利要求4所述的方法,其特征在于,所述在媒体数据中确定所述媒体数据请求所请求的起播帧,包括:
根据所述媒体数据请求确定起播时间节点;
在媒体数据中查找与所述起播时间节点匹配的起播媒体分片。
7.根据权利要求1所述的方法,其特征在于,所述媒体数据包括帧组;每个帧组包括多帧,且每个帧组的首帧为关键帧;
所述当所述起播帧不是关键帧时,从所述媒体数据中查找在所述起播帧前与所述起播帧最近的关键帧及最近的关键帧与所述起播帧间的预测帧,包括:
确定所述起播帧所在的起播帧组;
当所述起播帧非所述起播帧组中的首帧时,获取所述起播帧组中作为首帧的关键帧及所述首帧与所述起播帧间的预测帧。
8.一种媒体数据播放方法,包括:
发送媒体数据请求;
接收响应于所述媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据在所述起播帧前与所述起播帧最近的关键帧、所述最近的关键帧与所述起播帧间的预测帧之间的帧参考关系对与所述起播帧进行帧解码,得到所述起播帧所能完整表达的原始图像数据后,将解码得到的所述原始图像数据编码得到;所述起播帧由所述媒体数据请求所指定;
从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
9.根据权利要求8所述的方法,其特征在于,所述接收响应于所述媒体数据请求所反馈的帧,包括:
接收响应于所述媒体数据请求所反馈的媒体分片;每个所述媒体分片包括多帧;所述媒体分片包括起播媒体分片;所述起播媒体分片包括所述关键帧;
所述从接收到的帧中的关键帧起,对接收到的帧进行解码播放,包括:
从接收到的起播媒体分片中的关键帧起,逐个对接收到的媒体分片中的帧进行解码播放。
10.一种媒体数据处理装置,包括:
接收模块,用于接收媒体数据请求;
确定模块,用于在媒体数据中确定所述媒体数据请求所请求的起播帧;
查找模块,用于当所述起播帧不是关键帧时,从所述媒体数据中查找在所述起播帧前与所述起播帧最近的关键帧及最近的关键帧与所述起播帧间的预测帧;
构建模块,用于根据查找到的关键帧和所述预测帧构建关键帧;
响应模块,用于响应于所述媒体数据请求,反馈构建的关键帧及所述媒体数据中在所述起播帧之后的帧。
11.根据权利要求10所述的装置,其特征在于,所述确定模块具体包括:媒体数据确定模块、起播时间节点确定模块和起播帧确定模块;
所述媒体数据确定模块,用于确定所述媒体数据请求所指定的媒体数据;
所述起播时间节点确定模块,用于根据所述媒体数据请求确定起播时间节点;
所述起播帧确定模块,用于将所述媒体数据中与所述起播时间节点匹配的帧确定为起播帧。
12.根据权利要求11所述的装置,其特征在于,所述媒体数据请求为直播视频流播放请求;所述媒体数据为直播视频流;所述起播时间节点确定模块还用于根据所述媒体数据请求确定直播延迟时长;获取当前时间节点;根据所述当前时间节点和所述直播延迟时长确定起播时间节点,所述起播时间节点比所述当前时间节点早所述直播延迟时长。
13.根据权利要求10所述的装置,其特征在于,所述媒体数据包括媒体分片;所述媒体分片包括多帧;所述起播帧是起播媒体分片中的帧;
所述响应模块还用于将构建的关键帧***所述起播媒体分片;响应于所述媒体数据请求,反馈已***关键帧的所述起播媒体分片及所述媒体数据中在所述起播媒体分片之后的媒体分片。
14.根据权利要求13所述的装置,其特征在于,所述构建模块还用于当所述起播媒体分片不包括关键帧时,从所述媒体数据中搜索在所述起播媒体分片前最近的、且包括关键帧的媒体分片;从搜索到的媒体分片中查找关键帧;获取查找到的关键帧与所述起播媒体分片间的预测帧。
15.根据权利要求13所述的装置,其特征在于,所述确定模块还用于根据所述媒体数据请求确定起播时间节点;在媒体数据中查找与所述起播时间节点匹配的起播媒体分片。
16.根据权利要求10所述的装置,其特征在于,所述媒体数据包括帧组;每个帧组包括多帧,且每个帧组的首帧为关键帧;所述构建模块还用于确定所述起播帧所在的起播帧组;当所述起播帧非所述起播帧组中的首帧时,获取所述起播帧组中作为首帧的关键帧及所述首帧与所述起播帧间的预测帧。
17.一种媒体数据播放装置,包括:
发送模块,用于发送媒体数据请求;
接收模块,用于接收响应于所述媒体数据请求所反馈的帧;接收到的帧包括关键帧及媒体数据中在起播帧之后的帧;反馈的关键帧是根据在所述起播帧前与所述起播帧最近的关键帧、所述最近的关键帧与所述起播帧间的预测帧之间的帧参考关系对与所述起播帧进行帧解码,得到所述起播帧所能完整表达的原始图像数据后,将解码得到的所述原始图像数据编码得到;所述起播帧由所述媒体数据请求所指定;
播放模块,用于从接收到的帧中的关键帧起,对接收到的帧进行解码播放。
18.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
19.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810345274.2A CN110392269B (zh) | 2018-04-17 | 2018-04-17 | 媒体数据处理方法和装置、媒体数据播放方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810345274.2A CN110392269B (zh) | 2018-04-17 | 2018-04-17 | 媒体数据处理方法和装置、媒体数据播放方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110392269A CN110392269A (zh) | 2019-10-29 |
CN110392269B true CN110392269B (zh) | 2021-11-30 |
Family
ID=68283186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810345274.2A Active CN110392269B (zh) | 2018-04-17 | 2018-04-17 | 媒体数据处理方法和装置、媒体数据播放方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110392269B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110225362A (zh) * | 2019-06-04 | 2019-09-10 | 浙江大华技术股份有限公司 | 一种直播方法、直播服务器及存储装置 |
CN111031385B (zh) * | 2019-12-20 | 2022-03-08 | 北京爱奇艺科技有限公司 | 视频播放的方法及装置 |
CN113132807B (zh) * | 2019-12-30 | 2023-04-07 | 成都鼎桥通信技术有限公司 | 基于视频的关键帧请求方法、装置、设备及存储介质 |
CN114035672A (zh) * | 2020-07-20 | 2022-02-11 | 华为技术有限公司 | 一种虚拟现实vr场景的视频处理方法及相关设备 |
CN112153413B (zh) * | 2020-08-25 | 2022-08-12 | 广州市保伦电子有限公司 | 一种同屏广播处理花屏的方法和服务器 |
CN112291591A (zh) * | 2020-09-21 | 2021-01-29 | 浙江大华技术股份有限公司 | 一种视频数据回放方法、电子设备和存储介质 |
CN112135163A (zh) * | 2020-09-27 | 2020-12-25 | 京东方科技集团股份有限公司 | 视频起播的方法以及装置 |
CN112333461A (zh) * | 2020-11-04 | 2021-02-05 | 北京金山云网络技术有限公司 | 一种视频直播的启动方法和装置 |
CN112822503B (zh) * | 2020-12-30 | 2022-04-22 | 腾讯科技(深圳)有限公司 | 直播视频流的播放方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065050A (en) * | 1996-06-05 | 2000-05-16 | Sun Microsystems, Inc. | System and method for indexing between trick play and normal play video streams in a video delivery system |
CN103533387A (zh) * | 2013-10-21 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种视频直播控制方法、设备及*** |
CN106713941A (zh) * | 2017-01-04 | 2017-05-24 | 北京百度网讯科技有限公司 | 一种音视频直播的实现方法和服务器 |
CN107147919A (zh) * | 2017-06-19 | 2017-09-08 | 网宿科技股份有限公司 | 直播快速启播方法及*** |
-
2018
- 2018-04-17 CN CN201810345274.2A patent/CN110392269B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065050A (en) * | 1996-06-05 | 2000-05-16 | Sun Microsystems, Inc. | System and method for indexing between trick play and normal play video streams in a video delivery system |
CN103533387A (zh) * | 2013-10-21 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种视频直播控制方法、设备及*** |
CN106713941A (zh) * | 2017-01-04 | 2017-05-24 | 北京百度网讯科技有限公司 | 一种音视频直播的实现方法和服务器 |
CN107147919A (zh) * | 2017-06-19 | 2017-09-08 | 网宿科技股份有限公司 | 直播快速启播方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110392269A (zh) | 2019-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110392269B (zh) | 媒体数据处理方法和装置、媒体数据播放方法和装置 | |
US10911789B2 (en) | Automatic failover for live video streaming | |
US9426196B2 (en) | Live timing for dynamic adaptive streaming over HTTP (DASH) | |
CN108540819B (zh) | 直播数据处理方法、装置、计算机设备和存储介质 | |
KR102099357B1 (ko) | 스크린 샷을 제공하는 장치 및 시스템, 그리고 방법 | |
US20160080470A1 (en) | Server-side playlist stitching | |
US10277927B2 (en) | Movie package file format | |
WO2021147448A1 (zh) | 一种视频数据处理方法、装置及存储介质 | |
CN103069769A (zh) | 用于经译码视频数据的网络串流传输的特技模式 | |
CN110392284B (zh) | 视频编码、视频数据处理方法、装置、计算机设备和存储介质 | |
CN110198493B (zh) | 媒体数据下载方法、装置、计算机设备、存储介质和*** | |
CN111447455A (zh) | 直播视频流回放处理方法、装置及计算设备 | |
CN113141522B (zh) | 资源传输方法、装置、计算机设备及存储介质 | |
CN110248192B (zh) | 编码器切换、解码器切换、屏幕分享方法和屏幕分享*** | |
WO2018028547A1 (zh) | 频道切换的方法及装置 | |
CN109756749A (zh) | 视频数据处理方法、装置、服务器和存储介质 | |
CN109168020A (zh) | 基于直播的视频处理方法、装置、计算设备和存储介质 | |
CN111726657A (zh) | 直播视频的播放处理方法、装置及服务器 | |
CN111770390A (zh) | 数据处理方法、装置、服务器及存储介质 | |
CN107801049B (zh) | 一种实时视频传送、播放方法及装置 | |
CN107634928B (zh) | 一种码流数据的处理方法及装置 | |
CN108769789B (zh) | 一种基于切片的rtp流媒体存储、读取方法及装置 | |
US20160380853A1 (en) | Reporting media consumption based on service area | |
CN112929677B (zh) | 直播视频的回看方法、装置和服务器 | |
CN112291591A (zh) | 一种视频数据回放方法、电子设备和存储介质 |
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 |