数据读取方法、装置、设备及存储介质与流程

专利2023-11-30  129

1.本发明涉及数据读取存储领域,具体涉及一种数据读取方法、装置、设备及存储介质。
背景技术
::2.一个视频媒体文件的数据索引和数据内容是分开存储的,而想要读取的真正的数据需要根据数据索引计算真正数据内容的偏移量才能获取到。3.现有技术中,因为音频数据和视频数据的数据索引是分别在它们track文件中单独存储的,所以带有音视频的媒体文件通常会有两个偏移量,一个负责提供音频数据的读取,另一个负责提供视频数据的读取,由于视频数据和音频数据的大小相差较大,因此,如果一个高码率的视频媒体文件中这两个偏移量的差值很大(如超过20mb),那么会引起缓存器中已经缓存的数据被释放掉并重新下载,进而导致视频播放卡顿。技术实现要素:4.基于上述研究,本发明提供了一种数据读取方法、装置、设备及存储介质,用以解决上述问题。5.本发明的实施例可以这样实现:6.第一方面,本发明实施例提供一种数据读取方法,方法包括:7.基于视频文件的数据读取量化表确定第一对外偏移量,其中,所述数据读取量化表包括多个媒体数据偏移量以及每个所述媒体数据偏移量所对应的数据读取大小,所述第一对外偏移量属于所述多个媒体数据偏移量;8.根据所述第一对外偏移量以及所述第一对外偏移量对应的数据读取大小读取第一媒体数据以及确定第二对外偏移量,所述第二对外偏移量属于所述多个媒体数据偏移量;9.根据所述第二对外偏移量和所述第二对外偏移量对应的数据读取大小读取第二媒体数据。10.在一种可选的实施方式中,所述基于视频文件的数据读取量化表确定第一对外偏移量,包括:11.对所述多个媒体数据偏移量进行比较以确定所述第一对外偏移量,所述第一对外偏移量为所述多个媒体数据偏移量中最先读取的偏移量。12.在一种可选的实施方式中,所述基于视频文件的数据读取量化表确定第一对外偏移量,包括:13.对所述多个媒体数据偏移量进行比较以确定初始对外偏移量,所述初始对外偏移量为所述多个媒体数据偏移量中最先读取的偏移量;14.将所述初始对外偏移量分别与所述多个媒体数据偏移量进行比较,以确定所述多个媒体数据偏移量中与所述初始对外偏移量相同的偏移量为所述第一对外偏移量。15.在一种可选的实施方式中,所述基于视频文件的数据读取量化表确定第一对外偏移量,还包括:16.根据所述数据读取量化表确定第三对外偏移量以及所述第三对外偏移量对应的数据读取大小,所述第三对外偏移量为所述多个媒体数据偏移量中距离所述第一对外偏移量最近的上一个媒体数据读取偏移量;17.根据所述第三对外偏移量以及所述第三对外偏移量对应的数据读取大小,确定所述第一对外偏移量。18.在一种可选的实施方式中,所述第二对外偏移量为所述第一对外偏移量与所述第一对外偏移量所对应的数据读取大小值之和。19.在一种可选的实施方式中,所述根据所述第一对外偏移量对应的数据读取大小读取第一媒体数据之后,还包括:20.分析所述第一媒体数据的属性;21.若所述第一媒体数据为音频数据,则将所述第一媒体数据缓存至预先创建的音频队列;22.若所述第一媒体数据为视频数据,则将所述第一媒体数据缓存至预先创建的视频队列。23.在一种可选的实施方式中,所述将所述第一媒体数据缓存至预先创建的音频队列之前,还包括:24.检测所述音频队列内缓存的音频数据是否小于或等于第一数据量阈值;25.若所述音频队列内缓存的音频数据小于或等于所述第一数据量阈值,则将所述第一媒体数据缓存至所述音频队列;或者26.所述将所述第一媒体数据缓存至预先创建的视频队列之前,还包括:27.检测所述视频队列内缓存的视频数据是否小于或等于第二数据量阈值;28.若所述视频队列内缓存的视频数据小于或等于所述第二数据量阈值,则将所述第一媒体数据缓存至所述视频队列。29.第二方面,本发明实施例提供一种数据读取装置,装置包括:30.数据获取模块,用于基于视频文件的数据读取量化表确定第一对外偏移量,其中,所述数据读取量化表包括多个媒体数据偏移量以及每个所述媒体数据偏移量所对应的数据读取大小,所述第一对外偏移量属于所述多个媒体数据偏移量;31.视频文件读取模块,用于根据所述第一对外偏移量以及所述第一对外偏移量对应的数据读取大小读取第一媒体数据,以及确定第二对外偏移量,所述第二对外偏移量属于所述多个媒体数据偏移量;根据所述第二对外偏移量和所述第二对外偏移量对应的数据读取大小读取第二媒体数据。32.第三方面,本发明实施例提供一种计算机设备,包括存储器和处理器;存储器存储有应用程序,处理器用于运行存储器内的应用程序,以执行上述任一项的数据读取方法。33.第四方面,本发明实施例提供一种存储介质,存储介质存储有多条指令,指令适于处理器进行加载,以执行上述任一项的数据读取方法。34.本发明实施例提供的一种数据读取方法、装置、设备及存储介质,基于视频文件的数据读取量化表确定第一对外偏移量,其中,数据读取量化表包括多个媒体数据偏移量以及每个媒体数据偏移量所对应的数据读取大小,第一对外偏移量属于多个媒体数据偏移量;根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据以及确定第二对外偏移量,第二对外偏移量属于多个媒体数据偏移量;根据第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据。如此,根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据后,根据第一对外偏移量以及第一对外偏移量对应的数据读取大小再确定多个媒体数据偏移量中的第二对外偏移量,基于第二对外偏移量对应的数据读取大小再次读取第二媒体数据,只需基于一个对外偏移量,即可实现媒体数据的读取,避免了设置多个媒体数据偏移量,在多个媒体数据偏移量分别读取媒体数据时,由于多个媒体数据偏移量的差值过大出现释放已下载的视频文件,而重新下载被释放的视频文件会造成资源浪费,同时还会引起媒体数据因读取不够及时出现播放卡顿的问题。附图说明35.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。36.图1为本技术实施例提供的一种数据读取装置的结构示意图;37.图2为本技术实施例提供的一种数据读取方法流程示意图;38.图3为本技术实施例提供的一种数据读取存储原理示意图;39.图4为本技术实施例提供的另一种数据读取方法流程示意图;40.图5为本技术实施例提供的一种数据读取装置的结构示意图。41.图标:100-缓存器;200-解析器;300-数据读取装置;301-数据获取模块;302-视频文件读取模块。具体实施方式42.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。43.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个特征。在本技术的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。44.流媒体(streamingmedia)是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送。示例性的,现有技术中为用户提供媒体应用服务的流媒体传输系统通常包含内容运营商、流媒体服务器和用户终端。内容运营商通过internet网络上载包含流媒体数据的源文件到流媒体服务器。当用户终端要求获得某段流媒体数据时,用户终端将会向流媒体服务器发出请求,流媒体服务器会基于该请求,根据索引轨道(hinttrack)信息,在视频轨道(videotrack)或音频轨道(audiotrack)中查找对应的采样(sample),并将每个sample按照实时传输协议(real-timetransportprotocol,rtp)封装成packet通过网络下发给用户终端。sample是源文件中的流媒体数据的基本数据单元,可以是视频流数据(后简称视频数据)或者音频流数据(后简称音频数据)。基于媒体类型的不同,流媒体服务器在将流媒体数据的源文件封装成不同格式的rtp包,例如mp4格式、mov格式或asf格式等。45.随着网络速度的飞快提速升级,从百兆网到千兆网,再到理论峰值可能超过10gbps的5g网络传输的商用应用,这使得人们可以在1秒的时间内完成一部10gb高清电影的下载。在这样的网络传输环境下,人们在智能电视终端上对于播放超高分辨率和100mbps以上高码率流媒体视频的需求得以实现,但传统的传输流(transportstream,ts)由于传输流受到封装格式的限制,导致其解析和读取数据的效率很低,当网络播放使用ts封装的高分辨率高码率视频时,由于解析和读取数据的效率跟不上,很容易出现播放卡顿的现象,大大降低了用户的观看质量;所以很多情况下流媒体播放都是使用解析和读取效率更高的mp4容器封装格式,目前市场上很多视频内容运营商都应用mp4作为其视频的封装格式,比如腾讯视频运营的杜比视界视频也在应用mp4作为其视频的封装格式。46.通常一个mp4视频文件可以有多个track,如videotrack、audiotrack、字幕轨道(subtitletrack)和/或hinttrack等等,一个track又分为一个或多个chunk,一个chunk又包括一个或多个sample。其数据索引和真正的媒体数据是分开存储的,而想要读取的真正的媒体数据需要根据索引计算真正的媒体数据的偏移量才能获取到。因为音频数据和视频数据的索引是分别在不同的track中单独存储的,所以带有音视频的mp4通常会有两个偏移量(offset),一个负责提供音频数据的读取,即音频数据偏移量,另一个负责提供视频数据的读取,即视频数据偏移量。如果一个高码率的mp4视频文件中这两个偏移量的差值很大(如超过20mb),那么会引起已缓存数据被释放掉并重新下载。原因在于现有技术中的缓存读取机制:mp4解析器通过读取接口告诉缓存器,它需要从偏移量(offset)的位置读取size大小的数据,然后缓存器会检查偏移量处的媒体数据是否落在它的缓存中,如果是,则直接返回该媒体数据;如果偏移量(offset)落在缓存之外,缓存器则会清除已缓存的mp4视频文件,并根据此偏移量(offset)重新下载数据。例如,mp4解析器中有两个source的偏移量,一个是音频数据偏移量offset1,另外一个是视频数据偏移量offset2,这种情况有可能offset1的位置在缓存中能够返回音频数据,而offset2的位置的视频数据落在缓存之外,这时已经缓存的视频数据会被释放掉,并重新下载offset2位置的视频数据。这样被释放掉的已缓存的视频数据将白白的浪费掉,而重新在offset2位置下载视频数据也将增加时间成本。47.基于上述研究,本发明提供一种数据读取方法、装置、设备及存储介质,仅需在解析器中设置一个对外偏移量,对此对外偏移量进行不断更新,从而实现对视频文件的读取,同时还避免多个不同偏移量差值过大出现释放已下载的视频文件,并重新下载视频文件而造成资源浪费,进而引起媒体数据因读取不够及时出现播放卡顿的问题。48.图1为本发明提供的数据读取装置的结构示意图。49.如图1所示,本发明提供的数据读取装置包括:缓存器100和解析器200。50.缓存器100,用于缓存所下载的视频文件中的媒体数据。其包括两个线程,一个是负责下载媒体数据、下载控制和下载相关的异常处理,另一个是提供解析器调用的接口函数,为解析器提供视频文件中的媒体数据。51.解析器200用于解析视频文件中有关数据索引的信息,以便在播放的时候根据解析出的数据索引信息找到正确的视频文件中的媒体数据。52.在一种具体的实施场景中,缓存器100缓存下载的视频文件,其中,由于存储空间的限定,无法完整的下载整个视频文件后在进行播放,因此,常采用流媒体(streamingmedia)播放,流媒体是指将一连串的媒体数据压缩后,经过网上分段发送数据,在网上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不使用此技术,就必须在使用前下载整个媒体文件。流式传输可传送现场影音或预存于服务器上的影片,当观看者在收看这些影音文件时,影音数据在送达观看者的计算机后立即由特定播放软件播放。53.解析器200解析下载的视频文件的数据索引信息,其中,数据索引信息包括视频文件的数据读取量化表。54.基于上述的数据读取装置,下面对本实施例提供的数据读取方法的步骤进行详细阐述。55.图2为本发明实施例提供一种数据读取方法。如图2所示,本实施例所提供的数据读取方法包括步骤s101-s103。可选地,本发明实施例提供一种数据读取方法可以由图1的数据读取装置执行。56.步骤s101:基于视频文件的数据读取量化表确定第一对外偏移量,其中,该数据读取量化表包括多个媒体数据偏移量以及每个媒体数据偏移量所对应的数据读取大小,第一对外偏移量属于该多个媒体数据偏移量。57.本实施例中,解析器解析视频文件,即可得到该视频文件的数据读取量化表,视频文件的数据读取量化表记载了视频文件所包含的多个媒体数据中每个媒体数据对应的偏移量(即媒体数据偏移量)以及每个媒体数据偏移量所对应的数据读取大小(size)。例如,视频文件中包含5个媒体数据,即sample1、sample2、sample3、sample4和sample5。视频文件的数据读取量化表记载了该5个媒体数据中每个媒体数据对应的偏移量以及每个偏移量对应的数据读取大小,即:sample1对应的媒体数据偏移量为offset1,offset1对应的数据读取大小为size1;sample2对应的媒体数据偏移量为offset2,offset2对应的数据读取大小为size2;sample3对应的媒体数据偏移量为offset3,offset3对应的数据读取大小为size3;sample4对应的媒体数据偏移量为offset4,offset4对应的数据读取大小为size4;sample5对应的媒体数据偏移量为offset5,offset5对应的数据读取大小为size5。需要说明的是,上述的多个媒体数据可以是视频文件所对应的所有媒体数据中的全部媒体数据或者部分媒体数据,本实施例对此不做限定。58.本实施例中,视频文件中所包含的多个媒体数据可以包含音频数据和视频数据。可选地,视频文件的媒体数据可以按照音频数据和视频数据进行分段存储。例如,上述的视频文件中包含5个媒体数据中,sample1、sample3和sample5可以是音频数据,而sample2和sample4可以是视频数据;或者sample1、sample2和sample5可以是音频数据,而sample4和sample4可以是视频数据。需要说明的是,本实施例中的多个媒体数据除了可以包含音频数据和视频数据,还可以包含其他类型的数据,本实施例对此不做限定。59.可以理解地,数据读取量化表中的媒体数据偏移量包括音频偏移量以及视频偏移量。当媒体数据为音频数据时,该媒体数据对应的媒体数据偏移量则为音频偏移量;当媒体数据为视频数据时,该媒体数据对应的媒体数据偏移量则为视频偏移量。音频数据偏移量表征的是音频数据所在的位置,视频数据偏移量表征的是视频数据所在的位置。60.当媒体数据偏移量为音频偏移量时,所对应的数据读取大小则表示所要读取的音频数据的大小,当媒体数据偏移量为视频偏移量时,所对应的数据读取大小则表示所要读取的视频数据的大小。61.视频文件的数据读取量化表中,每个媒体数据偏移量对应一段媒体数据的内容,相邻两个偏移量的差值对应为前一个媒体数据偏移量需要读取的媒体数据的大小。62.例如,如图3所示,缓存器100中缓存有一个视频文件大小为15m,在视频文件的0-1m的内容为音频数据sample1,1-3m的内容为视频数据sample2,3-5m的内容为音频数据sample3,5-10m的内容为视频数据sample4,10-15m的内容为音频数据sample5。音频数据sample1、sample3、sample5对应的音频数据偏移量分别为offset1为0m、offset3为3m以及offset5为10m。基于音频数据读取量化表,计算出在音频数据偏移量为0m的地方读取size为1m的音频数据,在音频数据偏移量为3m的地方读取size为2m的音频数据,在音频数据偏移量为10m的地方读取size为5m的音频数据;视频数据sample2和sample4对应的视频数据偏移量分别为offset2为1m、offset4为5m,基于视频数据读取量化表,计算出在视频数据偏移量为1m的地方读取size为2m的视频数据,在视频数据偏移量为5m的地方读取size为5m的视频数据。63.本发明实施例中的数据读取量化表在一种可选的实施方式中可以是sampletable,即stbl。关于samplestable的相关内容可以参考现有技术中的内容进行理解,此处不进行赘述。64.本实施例中在解析器中设置对外偏移量这一参数,这个参数的取值用于确定每次读取媒体数据的位置定位。本实施例中,解析器在解析视频文件得到数据读取量化表后,会根据视频文件所包含的所有媒体数据偏移量来确定参数对外偏移量的值为第一对外偏移量。第一对外偏移量用于指示当前要读取媒体数据的位置信息,该位置信息只有一个。当前待读取的媒体数据可以是音频数据或者视频数据,因此,第一对外偏移量为一个视频数据偏移量或一个音频数据偏移量。65.具体的,本实施例中解析器会对每个媒体数据偏移量进行比较,从而从该多个媒体数据偏移量中确定第一对外偏移量。66.在一种可选的实施方式中,以视频文件的最开始的位置读取媒体数据。基于视频文件的数据读取量化表确定第一对外偏移量可以包括:解析器可以对每个媒体数据偏移量进行比较,确定出其中的最小偏移量为第一对外偏移量。例如,视频文件包含sample1、sample2、sample3、sampl4、sample5和sample6,解析器通过解析该mp4视频文件,得到sample1、sample3和sample5为视频内容,其对应的视频数据偏移量分别为offset1、offset3、offset5,sample2、sample4和sample6为音频内容,对应的音频数据偏移量分别为offset2、offset4和offset6。解析器对offset1-offset6进行比较,得到offset1最小,即offset1为6个偏移量中最先读取的偏移量,此时解析器将该offset1作为参数对外偏移量的取值,即第一对外偏移量。67.在一种可选的实施方式中,以视频文件的最开始的位置读取媒体数据。基于视频文件的数据读取量化表确定第一对外偏移量还可以包括:解析器可以对每个媒体数据偏移量进行比较,首先确定出其中的最小偏移量为初始对外偏移量。例如,视频文件包含sample1、sample2、sample3、sampl4、sample5和sample6,解析器通过接系该mp4视频文件,得到sample1、sample3和sample5为视频内容,其对应的视频数据偏移量分别为offset1、offset3、offset5,sample2、sample4和sample6为音频内容,对应的音频数据偏移量分别为offset2、offset4和offset6。解析器对offset1-offset6进行比较,得到offset1最小,此时解析器将该offset1作为初始对外偏移量。然后,解析器再将该初始对外偏移量与每个媒体数据偏移量进行比较,确定与初始对外偏移量取值相同的媒体数据偏移量为第一对外偏移量。例如,解析器将该初始对外偏移量再与offset1-offset6进行比较,确定与offset1相同,则将offset1作为第一对外偏移量。68.在一种可选的实施方式中,当用户在观看视频文件时,操作快进或者快退时,会产生一个快进或者快退对应的播放时间节点信息,解析器在获取到用户的该操作快进或者快退所对应的播放时间节点信息后,可以在视频文件的媒体数据所对应的坐标系中将该播放时间节点信息转换为初始对外偏移量,然后将该初始对外偏移量与和每个媒体数据偏移量进行比较,确定视频文件中包含的多个媒体数据偏移量中与该初始对外偏移量相同的偏移量为第一对外偏移量。69.在一种可选的实施方式中,对视频文件的部分或全部媒体数据进行循环播放。基于视频文件的数据读取量化表确定第一对外偏移量,具体可以包括:根据上述的数据读取量化表确定第三对外偏移量以及第三对外偏移量对应的数据读取大小,该第三对外偏移量属于该多个媒体数据偏移量,第三对外偏移量为最近一次读取的媒体数据读取偏移量;根据第三对外偏移量以及第三对外偏移量对应的数据读取大小,确定第一对外偏移量。70.步骤s102:根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据,以及确定第二对外偏移量,第二对外偏移量属于该多个媒体数据偏移量。71.本实施例中,在确定第一对外偏移量后,由于第一对外偏移量为数据读取量化表包括的多个媒体数据偏移量中的一个,该数据读取量化表还记载了每个媒体数据偏移量所对应的数据读取大小,因此,解析器根据该第一对外偏移量和该第一对外偏移量对应的数据读取大小,从缓存器中读取对应的第一媒体数据。72.本实施例中,在确定第一对外偏移量后,解析器还根据第一对外偏移量以及第一对外偏移量对应的数据读取大小确定第二对外偏移量,并将对外偏移量的取值由第一对外偏移量更新为第二对外偏移量。例如,当确定第一对外偏移量为offset1,读取sample1;并根据第一对外偏移量offset1对应的数据读取大小size1更新对外偏移量的取值得到第二对外偏移量offset2,即将对外偏移量的取值由第一对外偏移量offset1更新为第二对外偏移量offset2。73.在实际的应用过程中,在根据第一对外偏移量以及第一对外偏移量对应的数据读取大小将参数对外偏移量的取值由第一对外偏移量更新为第二对外偏移量的过程中,可能还会再将该第二对外偏移量与数据读取量化表中的每个媒体数据偏移量再分别对比一遍,以确认第二对外偏移量与数据读取量化表中的某个媒体数据偏移量相同。例如第二对外偏移量为offset2,再将offset2分别与offset1-offset6进行比较。74.步骤s103:根据第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据。75.本实施例中,在确定第二对外偏移量后,由于第二对外偏移量为数据读取量化表中包括的多个媒体数据偏移量中的一个,该数据读取量化表还记载了每个媒体数据偏移量所对应的数据读取大小,因此,解析器根据该第二对外偏移量和该第二对外偏移量对应的数据读取大小,从缓存器中读取对应的第二媒体数据。76.基于第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据更新对外偏移量,得到下一个对外偏移量,再根据下一个对外偏移量查询数据读取量化表,获取在下一个对外偏移量对应读取的数据大小。77.如此,根据上述累加递进的方式实时更新对外偏移量,并根据实时更新的对外偏移量对应读取视频文件,进而完成对整个视频文件的读取。78.本技术实施例中,根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据后,根据第一对外偏移量以及第一对外偏移量对应的数据读取大小再确定多个媒体数据偏移量中的第二对外偏移量,基于第二对外偏移量对应的数据读取大小再次读取第二媒体数据,只需基于一个对外偏移量,即可实现媒体数据的读取,避免了设置多个媒体数据偏移量,基于多个媒体数据偏移量分别读取媒体数据时,由于多个媒体数据偏移量的差值过大出现释放已下载的视频文件,而重新下载被释放的视频文件会造成资源浪费,同时还会引起媒体数据因读取不够及时出现播放卡顿的问题。79.基于图2,本发明提供数据读取方法的另一实施例,如图4所示。80.图4为本发明提供数据读取方法的另一实施例的流程示意图,包括:81.s201:基于视频文件的数据读取量化表确定第一对外偏移量,其中,数据读取量化表包括多个媒体数据偏移量以及每个媒体数据偏移量所对应的数据读取大小,第一对外偏移量属于多个媒体数据偏移量。82.本实施例可以参阅图2中的步骤s101进行理解,此处不进行赘述。83.需要说明的是,本技术中的媒体数据包括音频数据和视频数据,因此数据读取量化表可以包括音频数据读取量化表和视频数据读取量化表。其中,音频数据读取量化表表征的是在不同的音频数据对应的音频数据偏移量和每个音频数据偏移量上对应所要读取的音频数据的大小,视频数据读取量化表表征的是在不同的视频数据偏移量和每个视频数据偏移量对应所要读取的视频数据的大小。音频数据偏移量表征的是音频数据所在的位置,视频数据偏移量表征的是视频数据所在的位置。本技术对于音频数据读取量化表和视频数据读取量化表的数量也不做具体的限定。84.可选地,本技术中,还可以维护两个索引计数器,其中一个是音频索引计数器,另一个是视频索引计数器。音频索引计数器用于当对外偏移量的取值属于音频数据读取量化表,即对外偏移量的取值与音频数据读取量化表中的某个音频数据偏移量相同时,音频索引计数器递增1。视频索引计数器用于当对外偏移量的取值属于视频数据读取量化表,即对外偏移量的取值与视频数据读取量化表中的视频数据偏移量相同时,视频索引计数器递增1。例如,当第一对外偏移量与音频数据读取量化表中的音频数据偏移量offset1相同,则音频索引计数器计数增加1。85.s202:根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据。86.本实施例可以参阅图2中的步骤s102的相关内容进行理解,此处不进行赘述。87.需要说明的是,本实施例中,解析器基于预先创建的独立线程读取第一媒体数据。本实施例中,独立线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。独立线程指的是进程中一个单一顺序的控制流,内存是由此线程独立使用的。88.s203:判断第一媒体数据为音频数据还是视频数据。89.在本实施例中,通过判断获取到的第一对外偏移量属于音频数据读取量化表还是属于视频数据读取量化表,确定第一媒体数据的属性是音频数据还是视频数据。90.当第一对外偏移量属于音频数据读取量化表时,音频索引计数器递增1,且判定读取到的第一媒体数据属于音频数据。91.当第一对外偏移量属于视频数据读取量化表时,视频索引计数器递增1,且判定读取到的第一媒体数据属于视频数据。92.s204:若第一媒体数据为音频数据,则将第一媒体数据缓存至预先创建的音频队列;若第一媒体数据为视频数据,则将第一媒体数据缓存至预先创建的视频队列。93.本实施例中,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。94.可选地,将第一媒体数据缓存至预先创建的音频队列之前,还可以包括:95.检测音频队列内缓存的音频数据是否小于或等于第一数据量阈值;96.若音频队列内缓存的音频数据小于或等于第一数据量阈值,则将第一媒体数据缓存至音频队列;或者。97.将第一媒体数据缓存至预先创建的视频队列之前,还包括:98.检测视频队列内缓存的视频数据是否小于或等于第二数据量阈值;99.若视频队列内缓存的视频数据小于或等于第二数据量阈值,则将第一媒体数据缓存至视频队列。100.为了保证音频队列中,避免因音频数据的缓存速度快以及读取速度慢造成的不匹配导致对cpu占用过高,因此需要对队列中存储的音频数据进行监测,当队列中缓存的音频数据达到第一数据量阈值时,对队列下发休眠指令,停止向队列中缓存音频数据,其中,第一数据量阈值可根据实际需求进行设定。101.对队列中存储的视频数据进行监测的方式为,实时获取队列中的视频数据大小,并与第二数据量阈值进行比较,当队列中的视频数据大小大于第二数据量阈值时,停止向队列中缓存视频数据,当队列中的视频数据大小小于第二数据量阈值时,继续向队列中缓存视频数据。102.s205:根据第一对外偏移量以及第一对外偏移量对应的数据读取大小确定第二对外偏移量,第二对外偏移量属于多个媒体数据偏移量。103.本实施例可以参阅图2中的步骤s102的相关内容进行理解,此处不进行赘述。104.需要说明的是,本发明中对于和步骤s205和步骤s202至步骤s204的先后顺序不做限定。105.s206:根据第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据。106.本实施例可以参阅图2中的步骤103的相关内容进行理解,此处不进行赘述。107.需要说明的是,本实施例中,解析器基于预先创建的独立线程读取第二媒体数据。108.s207:判断第二媒体数据为音频数据还是视频数据。109.在本实施例中,可以通过判断获取到的第二对外偏移量属于音频数据读取量化表还是属于视频数据读取量化表,确定第二媒体数据的属性是音频数据还是视频数据。110.当第二对外偏移量属于音频数据读取量化表时,音频索引计数器递增1,且判定读取到的第二媒体数据属于音频数据。111.当第二对外偏移量属于视频数据读取量化表时,视频索引计数器递增1,且判定读取到的第二媒体数据属于视频数据。112.s208:若第二媒体数据为音频数据,则将第二媒体数据缓存至预先创建的音频队列;若第二媒体数据为视频数据,则将第二媒体数据缓存至预先创建的视频队列。113.可选地,将第二媒体数据缓存至预先创建的音频队列之前,还可以包括:114.检测音频队列内缓存的音频数据是否小于或等于第一数据量阈值;115.若音频队列内缓存的音频数据小于或等于第一数据量阈值,则将第二媒体数据缓存至音频队列;或者。116.将第二媒体数据缓存至预先创建的视频队列之前,还包括:117.检测视频队列内缓存的视频数据是否小于或等于第二数据量阈值;118.若视频队列内缓存的视频数据小于或等于第二数据量阈值,则将第二媒体数据缓存至视频队列。119.为了保证音频队列中,避免因音频数据的缓存速度快以及读取速度慢造成的不匹配导致对cpu占用过高,因此需要对队列中存储的音频数据进行监测,当队列中缓存的音频数据达到第一数据量阈值时,对队列下发休眠指令,停止向队列中缓存音频数据,其中,第一数据量阈值可根据实际需求进行设定。120.对队列中存储的视频数据进行监测的方式为,实时获取队列中的视频数据大小,并与第二数据量阈值进行比较,当队列中的视频数据大小大于第二数据量阈值时,停止向队列中缓存视频数据,当队列中的视频数据大小小于第二数据量阈值时,继续向队列中缓存视频数据。121.以此类推,根据上述累加递进的方式实时更新对外偏移量,并根据实时更新的第三对外偏移量、第四对外偏移量、第五对外偏移量等…分别对应读取每个偏移量对应的媒体数据,并判断媒体数据是音频数据还是视频数据,并将媒体数据缓存至相应的队列,从而实现整个视频文件的顺序读取。例如,继续根据第二对外偏移量以及第二对外偏移量对应的数据读取大小确定第三对外偏移量,第三对外偏移量属于多个媒体数据偏移量;根据第三对外偏移量和第三对外偏移量对应的数据读取大小读取第三媒体数据;当第三对外偏移量属于音频数据读取量化表时,音频索引计数器递增1,且判定读取到的第三媒体数据属于音频数据;当第三对外偏移量属于视频数据读取量化表时,视频索引计数器递增1,且判定读取到的第三媒体数据属于视频数据;若第三媒体数据为音频数据,则将第三媒体数据缓存至预先创建的音频队列;若第三媒体数据为视频数据,则将第三媒体数据缓存至预先创建的视频队列…直至完成对整个视频文件的读取。122.在本技术实施例中,解析器基于预先创建的独立线程读取媒体数据,通过对媒体数据属性的分析,分别将音频数据存储至音频队列以及将视频数据存储在视频队列,同时设置第一数据量阈值对音频队列中的音频数据的大小进行监控以及设置第二数据量阈值对视频队列中的视频数据的大小进行监控,如此,既实现了媒体数据的快速存储于读取,同时也保证了不会出现媒体数据量过大导致独立线程占用中央处理器过重的问题。123.在本发明实施例中,请参阅图5,一种数据读取装置300,包括:124.数据获取模块301,用于基于视频文件的数据读取量化表确定第一对外偏移量,其中,数据读取量化表包括多个媒体数据偏移量以及每个媒体数据偏移量所对应的数据读取大小,第一对外偏移量属于多个媒体数据偏移量;125.视频文件读取模块302,用于根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据,以及确定第二对外偏移量,第二对外偏移量属于多个媒体数据偏移量;根据第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据。126.在上述实施例中,对数据读取装置300的描述已经在数据读取方法的实施例中进行了详述,可以参见数据读取方法的实施例的相关描述,在此不做赘述。127.在一个实施例中,针对视频文件读取的具体应用场景进行描述。128.本实施例设计了一种数据读取方法,提高视频播放流畅度,提升用户观看质量,包括:129.1)解析器向nucache2缓存传递一个对外偏移量,按顺序读取数据,避免多个不同偏移量向nucache2缓存器索要数据时出现释放重新下载而造成资源浪费的情况;130.2)解析器开启独立线程(feedparallel)向nucache2缓存索取音视频媒体数据,并存放到各自的queue队列里面,以加快起播速度。131.实施方式如下:132.在通过网络播放mp4流媒体文件时,首先解析器内部设置一个对外偏移量,向nucache2缓存索取需要的视频文件数据,另外解析器内部各自的track根据chunk的stco或stbl计算音视频各自的位置,然后分别与对外偏移量比较,如果音频的位置与对外偏移量相同则把数据返回给音频的queue队列;如果视频的位置与对外的偏移量相同则把返回的数据给到视频的queue队列;这样可避免多个不同偏移量向nucache2缓存索要数据时出现释放重新下载而造成资源浪费的情况。解析器开启单独线程去读取音视频数据,并负责将解析读取到的数据分别缓存到音频queue队列和视频queue队列,以满足解码器对数据的要求;此外线程中各个queue队里缓存的数据超过数据量阈值的时候,做一次暂停缓存数据操作让出cpu,避免线程占有cpu过重的问题。133.本发明实施例提供一种存储介质,其中存储有多条指令,以执行本发明实施例所提供的任一种数据读取方法中的步骤。例如,该指令可以执行如下步骤:134.基于视频文件的数据读取量化表确定第一对外偏移量,其中,数据读取量化表包括多个媒体数据偏移量以及每个媒体数据偏移量所对应的数据读取大小,第一对外偏移量属于多个媒体数据偏移量;135.根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据以及确定第二对外偏移量,第二对外偏移量属于多个媒体数据偏移量;136.根据第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据。137.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。138.其中,该存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。139.在上述基础上,本发明实施例提供一种电子设备,包括处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行时执行如前述实施方式任一数据读取方法的步骤。140.其中,在一些实施例中,电子设备可以是服务器,而在一些实施例中,电子设备也可以是服务请求端,在一些实施例中,电子设备还可以是服务响应端,具体地,可根据实际应用场景而决定。141.综上,本发明实施例提供的一种数据读取方法、装置、设备及存储介质,基于视频文件的数据读取量化表确定第一对外偏移量,其中,数据读取量化表包括多个媒体数据偏移量以及每个媒体数据偏移量所对应的数据读取大小,第一对外偏移量属于多个媒体数据偏移量;根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据,以及确定第二对外偏移量,第二对外偏移量属于多个媒体数据偏移量;根据第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据。如此,根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据后,根据第一对外偏移量以及第一对外偏移量对应的数据读取大小再确定多个媒体数据偏移量中的第二对外偏移量,基于第二对外偏移量对应的数据读取大小再次读取第二媒体数据,只需基于一个对外偏移量,即可实现媒体数据的读取,避免了设置多个媒体数据偏移量,基于多个媒体数据偏移量分别读取媒体数据时,由于多个媒体数据偏移量的差值过大出现释放已下载的视频文件,而重新下载被释放的视频文件会造成资源浪费,同时还会引起媒体数据因读取不够及时出现播放卡顿的问题。142.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。143.以上实施例的说明只是用于帮助理解本技术的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例的技术方案的范围。当前第1页12当前第1页12
技术特征:
1.一种数据读取方法,其特征在于,所述方法包括:基于视频文件的数据读取量化表确定第一对外偏移量,其中,所述数据读取量化表包括多个媒体数据偏移量以及每个所述媒体数据偏移量所对应的数据读取大小,所述第一对外偏移量属于所述多个媒体数据偏移量;根据所述第一对外偏移量以及所述第一对外偏移量对应的数据读取大小读取第一媒体数据以及确定第二对外偏移量,所述第二对外偏移量属于所述多个媒体数据偏移量;根据所述第二对外偏移量和所述第二对外偏移量对应的数据读取大小读取第二媒体数据。2.根据权利要求1所述的数据读取方法,其特征在于,所述基于视频文件的数据读取量化表确定第一对外偏移量,包括:对所述多个媒体数据偏移量进行比较以确定所述第一对外偏移量,所述第一对外偏移量为所述多个媒体数据偏移量中最先读取的偏移量。3.根据权利要求1所述的数据读取方法,其特征在于,所述基于视频文件的数据读取量化表确定第一对外偏移量,包括:对所述多个媒体数据偏移量进行比较以确定初始对外偏移量,所述初始对外偏移量为所述多个媒体数据偏移量中最先读取的偏移量;将所述初始对外偏移量分别与所述多个媒体数据偏移量进行比较,以确定所述多个媒体数据偏移量中与所述初始对外偏移量相同的偏移量为所述第一对外偏移量。4.根据权利要求1所述的数据读取方法,其特征在于,所述基于视频文件的数据读取量化表确定第一对外偏移量,还包括:根据所述数据读取量化表确定第三对外偏移量以及所述第三对外偏移量对应的数据读取大小,所述第三对外偏移量为所述多个媒体数据偏移量中距离所述第一对外偏移量最近的上一个媒体数据读取偏移量;根据所述第三对外偏移量以及所述第三对外偏移量对应的数据读取大小,确定所述第一对外偏移量。5.根据权利要求1-4任一所述的数据读取方法,其特征在于,所述第二对外偏移量为所述第一对外偏移量与所述第一对外偏移量所对应的数据读取大小值之和。6.根据权利要求1-4任一所述的数据读取方法,其特征在于,所述根据所述第一对外偏移量对应的数据读取大小读取第一媒体数据之后,还包括:分析所述第一媒体数据的属性;若所述第一媒体数据为音频数据,则将所述第一媒体数据缓存至预先创建的音频队列;若所述第一媒体数据为视频数据,则将所述第一媒体数据缓存至预先创建的视频队列。7.根据权利要求6所述的数据读取方法,其特征在于,所述将所述第一媒体数据缓存至预先创建的音频队列之前,还包括:检测所述音频队列内缓存的音频数据是否小于或等于第一数据量阈值;若所述音频队列内缓存的音频数据小于或等于所述第一数据量阈值,则将所述第一媒体数据缓存至所述音频队列;或者
所述将所述第一媒体数据缓存至预先创建的视频队列之前,还包括:检测所述视频队列内缓存的视频数据是否小于或等于第二数据量阈值;若所述视频队列内缓存的视频数据小于或等于所述第二数据量阈值,则将所述第一媒体数据缓存至所述视频队列。8.一种数据读取装置,其特征在于,所述装置包括:数据获取模块,用于基于视频文件的数据读取量化表确定第一对外偏移量,其中,所述数据读取量化表包括多个媒体数据偏移量以及每个所述媒体数据偏移量所对应的数据读取大小,所述第一对外偏移量属于所述多个媒体数据偏移量;视频文件读取模块,用于根据所述第一对外偏移量以及所述第一对外偏移量对应的数据读取大小读取第一媒体数据,以及确定第二对外偏移量,所述第二对外偏移量属于所述多个媒体数据偏移量;根据所述第二对外偏移量和所述第二对外偏移量对应的数据读取大小读取第二媒体数据。9.一种电子设备,其特征在于,所述电子设备包括:存储器,存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现如权利要求1至7任一项所述的数据读取方法。10.一种计算机可读存储介质,其特征在于,存储有可执行指令,所述可执行指令被执行时,用于实现如权利要求1至7任一项所述的数据读取方法。

技术总结
本发明实施例提供的一种数据读取方法、装置、设备及存储介质,具体涉及数据读取存储领域。通过视频文件的数据读取量化表确定第一对外偏移量,根据第一对外偏移量以及第一对外偏移量对应的数据读取大小读取第一媒体数据,以及确定第二对外偏移量,根据第二对外偏移量和第二对外偏移量对应的数据读取大小读取第二媒体数据。如此,只需设置一个对外偏移量,将视频偏移量和音频偏移量的变化实时更新至对外偏移量中,即可实现按顺序读取视频文件,避免了多个媒体数据偏移量的差值过大出现释放已下载的视频文件,而重新下载被释放的视频文件会造成资源浪费,同时还会引起媒体数据因读取不够及时出现播放卡顿的问题。不够及时出现播放卡顿的问题。不够及时出现播放卡顿的问题。


技术研发人员:张佳德
受保护的技术使用者:深圳TCL新技术有限公司
技术研发日:2022.07.04
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-6711.html

最新回复(0)