CN103002326B - 一种非交错式音频数据读取方法和装置 - Google Patents
一种非交错式音频数据读取方法和装置 Download PDFInfo
- Publication number
- CN103002326B CN103002326B CN201210479565.3A CN201210479565A CN103002326B CN 103002326 B CN103002326 B CN 103002326B CN 201210479565 A CN201210479565 A CN 201210479565A CN 103002326 B CN103002326 B CN 103002326B
- Authority
- CN
- China
- Prior art keywords
- voice data
- minimum
- frame number
- audio frame
- reading order
- 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
Landscapes
- Television Signal Processing For Recording (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种非交错式音频数据读取方法和装置,涉及流媒体技术领域。所述方法包括:拦截用于读取TS流文件数据块的原始指令;根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据;将所述音频帧数据作为所述原始指令的音频数据返回。本发明只读取了音频数据,未读取任何其他无效数据,大大降低了数据读取量,从而节省了系统资源,特别是在网络环境下节省了很多带宽资源,降低了系统的负荷。
Description
技术领域
本发明涉及流媒体技术领域,具体涉及一种非交错式音频数据读取方法和装置。
背景技术
随着多媒体视频业务越来越快的发展,文件的存储介质已经不限于卡带或者光盘,适合于无线传输的TS(Transport Stream,是传输流,TS流是由很多不同种类的包所组成的,这些数据包都是188或192个字节大小,这些字节包含两部分,包头和数据负载,包头包括同步信息,包信息等等,而数据负载则是传输的数据,而这些负载则可以组成PES流(Packetized Elementary Streams,打包的基本码流)或者私有流等数据流,因为以上结构当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。)流媒体得到了更多的关注。然而在目前三网融合的国家大政策背景下,对网络,电视,电信三大网络的发展提出了很高要求。而对于由卫星收录或者其他节目提供商产生的TS流文件,需要使用端解析TS流文件进行播放,在解析时需要读取音频帧数据,然后进行处理获得最终可播放的音频数据。
现有技术中,非Interleave(交错式)方式读取音频数据的主要流程包括:
1)找到某帧视频对应的音频数据在文件中对应的最大位置和最小位置;
2)整体读取最大位置和最小位置之间的所有数据;
3)根据导入视音频文件时对音频流分析的信息,把真正有效的数据从这些读取的大块文件数据中拆分拷贝出来,处理为真正需要的音频数据。
由于TS流文件的特性,即:1)所有的视频音频数据都在一个ts文件中;2)视音频数据在该文件中非常离散,一般没有大块的数据存在。Ts是传输流,为了保证传输的安全性和容错性,每个传输包只有188或者192个字节,导致视音频数据必然是离散的。而在这种情况下,对于如前所述的读取音频数据的过程来说,其最终读取的音频帧数据所在位置跨度大(音频帧数据所在位置跨度是指:根据导入视音频文件时对音频流分析的信息,能知道某个音频帧开始数据在文件中的位置,也知道结束数据在原文件中的位置,这两个位置的差值就是跨度。),跨度越大,数据量也就越大,数据量越大,读取数据花费的时间也会越多。由于音频数据一般比较小,而对于原文件是视音频交织存放的情况下,真正有效的音频数据在读取出来的数据中占有的比率会比较小。那么,现有技术中读取音频数据的过程实质上是浪费了很多的时间在读取一些没有用的数据,特别是在网络环境下会无故的损耗很多带宽资源,给系统带来无益的负荷。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种非交错式音频数据读取装置和相应的一种非交错式音频数据读取方法。
依据本发明的一个方面,提供了一种非交错式音频数据读取方法,其特征在于,包括:
拦截用于读取TS流文件数据块的原始指令;
根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据;
将所述音频帧数据作为所述原始指令的音频数据返回。
优选的,所述针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据包括:
针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表;
将各视频帧号对应的最小音频数据读取命令列表中的最小音频数据读取命令进行去重,获得最小音频数据读取命令总列表;
基于所述最小音频数据读取命令信息总列表中的各待处理最小音频数据读取命令信息,生成可执行最小音频数据读取命令,并将所述行最小音频数据读取命令发送给磁盘读取IO线程读取相应的音频帧数据。
优选的,在针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表之后还包括:
根据所述待处理最小音频数据读取命令信息表生成针对所述视频帧号的最小音频数据读取命令管理表;
根据所述最小音频数据读取命令管理表和视频帧号,生成视频任务管理表。
优选的,所述将音频帧数据作为所述原始指令的音频数据返回包括:
在磁盘读取IO线程读取相应的音频帧数据之后,调用回调接口的完成线程将音频帧数据作为所述原始指令的音频数据返回。
优选的,所述将音频帧数据作为所述原始指令的音频数据返回包括:
针对所述原始指令,找到对应的已读取数据的最小音频数据读取命令总列表;
根据磁盘读取IO线程根据各最小音频数据读取命令读取完音频帧数据的最小音频数据读取命令,更新当前已准备好的音频帧数据的个数;
提取已经准备好的任务管理表,并根据任务管理表中的最小音频数据读取命令管理表提取各音频帧数据;
针对所述任务管理表,将相应的音频帧数据整理为对应视频帧号的音频数据返回。
优选的,所述针对各音频帧信息生成最小音频数据读取命令包括:
将针对各音频帧信息的最小音频数据读取命令通过以SpecEntry数据结构作为载体。
优选的,所述最小音频数据读取命令包括:
音频帧数据在源文件中的位置、音频帧数据大小、音频帧数据在磁盘数据中的偏移和数据读完后的回调接口。
相应的,本发明还提供了一种非交错式音频数据读取装置,包括:
拦截模块,用于拦截用于读取TS流文件数据块的原始指令;
源文件查找模块,用于根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
音频帧信息提取模块,用于根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
最小命令管理模块,用于针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据;
返回模块,用于将所述音频帧数据作为所述原始指令的音频数据返回。
优选的,所述最小命令管理模块包括:
命令信息处理模块,用于针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表;
去重模块,用于将各视频帧号对应的最小音频数据读取命令列表中的最小音频数据读取命令进行去重,获得最小音频数据读取命令总列表;
读取模块,用于基于所述最小音频数据读取命令信息总列表中的各待处理最小音频数据读取命令信息,生成可执行最小音频数据读取命令,并将所述行最小音频数据读取命令发送给磁盘读取IO线程读取相应的音频帧数据。
优选的,所述返回模块包括:
第一返回模块,用于在磁盘读取IO线程读取相应的音频帧数据之后,调用回调接口的完成线程将音频帧数据作为所述原始指令的音频数据返回。
相对于现有技术,本发明具有以下优点:
本发明拦截现有技术中粗放读取数据的原始指令,根据原始指令分析对应的TS流文件信息,找到有效的视频信息和对应的各最小音频信息,然后针对该原始指令下的各音频信息生成最小音频数据读取命令,去读取最小音频信息,然后将各最小音频信息进行处理作为原始指令的音频数据返回。在这个过程中,只读取了音频数据,未读取任何其他无效数据,大大降低了数据读取量,从而节省了系统资源,特别是在网络环境下节省了很多带宽资源,降低了系统的负荷。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种非交错式音频数据读取方法实施例一的流程示意图;
图2示出了根据本发明一个实施例的针对一个ReadTask的各最小音频数据读取命令的拆解示例图;
图3示出了根据本发明一个实施例的一种非交错式音频数据读取方法实施例二的流程示意图;
图4示出了根据本发明一个实施例的一种非交错式音频数据读取方法的流程实例示意图;
图5示出了根据本发明一个实施例的本发明一直非交错式音频数据读取装置实施例一的结构示意图;以及
图6示出了根据本发明一个实施例的本发明一直非交错式音频数据读取装置实施例二的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,其示出了本发明一种非交错式音频数据读取方法实施例一的流程示意图,具体可以包括:
步骤110,拦截用于读取TS流文件数据块的原始指令;
对于由卫星收录或者其他节目提供商等产生的TS流文件,需要播放该TS流文件时,播放流程会根据已定好的规则发出读数据命令(ReadTask),也即本发明实施例中所述的原始指令,而该ReadTask可能包括了一大段TS流文件,其中可能包括了多个数据包(Payload),那么本发明实施例则不让ReadTask直接执行,而是首先拦截ReadTask,对其进行后续处理,以本发明的方式进行音频数据读取。
步骤120,根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
在实际中,播放流程发送的ReadTask可能包括了多个视频帧,那么本发明实施例中需要解析出Readtask中包括的各视频帧的帧号,然后根据视频帧号在在源文件中找到对应所述视频帧号的各数据包信息。
在本发明中,需要分析源文件也即视音频数据的视音频信息包括:
1)视音频数据的播出时间PTS——>找帧号,解码时间DTS;
2)视音频数据的每一个数据包(Payload)在源文件中的位置,每个数据包的数据大小;
3)每个视频组(GOP,Group of Pictures)包含的视频帧信息和包含的数据包信息;
4)音频数据帧之间的可能存在的关联关系。
其中在本发明实施例中,所述源文件为视音频数据,那么需要分析视音频数据的播出时间PTS,解码时间DTS,找到对应视频帧号进行对应,然后根据视频帧号找到相应的视频组(GOP)和视频组(GOP)包含的视频帧信息和包含的数据包信息;并找出视音频数据的每一个数据包(Payload)在源文件中的位置,每个数据包的数据大小。
步骤130,根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
如前所述在分析源视频文件时还分析音频数据帧之间的可能存在的关联关系。那么本发明是实施例根据当前播放的视频帧号,得到该视频帧对应的有效视音频信息,即需要读取哪些视频组(GOP)数据和哪些音频帧(AudioFrame)数据。
步骤140,针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据;
然后针对每个音频帧(AudioFrame)产生一个读取数据的命令(也即本发明所述的最小音频数据读取命令)。
其中,所述针对各音频帧信息生成最小音频数据读取命令包括:
将针对各音频帧信息的最小音频数据读取命令通过以SpecEntry数据结构作为载体。
针对每个音频帧(AudioFrame)产生一个读取数据的命令。该读取命令的信息通过SpecEntry结构作为载体。读取数据的命令包括该音频帧数据在文件中的位置、有效数据大小、有效数据在读取数据中的偏移和数据读完后回调(Callback)的回调接口。其中,有偏移值的原因是因为:为了提高读取数据,读取数据命令的文件位置必须是磁盘Sector大小对齐的。
进一步的,所述最小音频数据读取命令包括:
音频帧数据在源文件中的位置、音频帧数据大小、音频帧数据在磁盘数据中的偏移和数据读完后的回调接口。
参照图2,其示出了本发明实施例针对一个ReadTask的各最小音频数据读取命令的拆解图。在图2中:
ReadTaskN:一个ReadTask指播放流程产生读取数据的一个命令,而N代表第N个命令。
AudioFrame N SpecEntry:指一个ReadTask N可能会对应的多个音频帧AudioFrame,每个Audio Frame产生一个读取文件数据的SpecEntry(也即最小音频数据读取命令),N代表第N个AudioFrame SpecEntry。一个SpecEntry对应一个读取文件的信息描述封装(包括读取文件的位置,大小,文件名等等)。
VideoFrame N:指一个ReadTask N可能会对应的多个视频帧,N指第N个视频帧。
由于ReadTask是以视频帧持续的时间为单位的,所以流程图中表述的VideoFrame和Audio Frame SpecEntry之间的关系是:一个VideoFrame对应的时间单元里面,需要几个Audio Frame的数据。
在本发明实施例中,形成的读取数据的命令会发送给磁盘IO,然后直接返回,不用等待数据读完。
步骤150,将所述音频帧数据作为所述原始指令的音频数据返回。
在读取得到音频帧数据后,即可将所述音频帧数据作为所述原始指令的音频数据返回。
在本发明实施例中,所述将音频帧数据作为所述原始指令的音频数据返回包括:
在磁盘读取IO线程读取相应的音频帧数据之后,调用回调接口的完成线程将音频帧数据作为所述原始指令的音频数据返回。
即磁盘读取IO线程读完音频帧数据后,通过回调接口的IOComplete返回数据进行处理。
参照图3和图4,图3示出了本发明一种非交错式音频数据读取方法实施例二的流程示意图,图4为对应图3的一种非交错式音频数据读取方法的实例流程示意图。图3中,一种非交错式音频数据读取方法的流程具体可以包括:
步骤211,拦截用于读取TS流文件数据块的原始指令;
本发明实施例中由Read线程去获取播放流程发送的ReadTask,即图4中的FindWorkingReadtask。
步骤212,根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
本申请中对于ReadTask,其执行时一般是按视频帧号的顺序执行。即对于ReadTask中可能存在多个视频帧号,那么本发明则逐个对视频帧号进行处理,如图4中TaskFramei(i=0,......,n)即从视频帧号为0的视频帧开始处理。
步骤213,根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
步骤214,针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表;
本发明中针对按顺序逐个读取的视频帧号,则按前述方式分析视音频文件信息,获取到相应的音频帧信息,那么即可针对该视频帧号的各音频帧信息生成最小音频数据读取命令,然后即可获取当前的视频帧号的最小音频数据读取命令管理表。步骤213和214参照图4中GetAudioGOPInfo,获取当前视频帧号对于的AudiosampleSpecEntry列表。
步骤215,根据所述待处理最小音频数据读取命令信息表生成针对所述视频帧号的最小音频数据读取命令管理表;
然后生成根据上述AudiosampleSpecEntry列表生成AudioFrameMap。AudioFrameMap:指处理一个视频帧时需要的音频帧的AudiosampleSpecEntry的最小音频数据读取命令管理表,即图4中的AddAudioFrameMap。
然后执行i++操作,即转入下一个视频帧号的处理。
步骤216,根据所述最小音频数据读取命令管理表和视频帧号,生成视频任务管理表;
即如图4中的AddTaskFrameMap,得到图4中左下的TaskFrameMap(即视频任务管理表),在TaskFrameMap中:
Key:指处理的视频帧号的索引;图4中,视频帧号索引为Uinit64t。
PrepareAudioFrameMapCount:指处理该视频帧需要的音频帧(audioframe)的个数。一个视频帧可能需要几个音频帧数据(audio frame);
AudioFrameMap:指处理一个视频帧时需要的音频帧的的管理表,该表的索引(key)是SNsMMGAudioGOPInfo,对应的数据是实际产生读取音频数据的命令载体(AudioFrameSpecEntry)。
步骤217,将各视频帧号对应的最小音频数据读取命令列表中的最小音频数据读取命令进行去重,获得最小音频数据读取命令总列表;
因为各个视频号可能重用部分音频帧,因此需要对各视频帧号对应的待处理最小音频数据读取命令信息表中的AudioSamepleSpecEntry列表进行去重,比如参照图2中,总共只有N个AudioFrame,而每个VideoFrame可能对应多个AudioFram,那么可只用相应的N个AudioFrameSpecEntry即可读取数据,相应只需获取N个AudioSamepleSpecEntry即可生成N个可执行的AudioFrameSpecEntry。
步骤218,基于所述最小音频数据读取命令信息总列表中的各待处理最小音频数据读取命令信息,生成可执行最小音频数据读取命令,并将所述行最小音频数据读取命令发送给磁盘读取IO线程读取相应的音频帧数据;
即图4中获得最小音频数据读取命令总列表后,即可针对每每个AudioSamepleSpecEntry准备载体SpecEntry,即图4中的ReadAllSpecEntry,生成针对每个音频帧数据的最小音频数据读取命令AudioFrameSpecEntry i(i=0,......,n),然后即可将AudioFrameSpecEntry i发送给磁盘读取IO线程读取相应的音频帧数据。
如此,Read线程即可完成。
磁盘读取IO线程读完数据后,通过回调接口的IOComplete线程(完成线程)返回数据进行处理,即进入步骤221。
步骤221,针对所述原始指令,找到对应的已读取数据的最小音频数据读取命令总列表;
IOComplete线程针对ReadTask,获取播放流程发送的原始指令,即图4中的IOComplete线程下面的FindWorkingReadTask。然后根据前述步骤处理过程得到对应视频帧号的最小音频数据读取命令总列表,获取已完成的AudioFrameSpecEntry i的列表。
步骤222,根据磁盘读取IO线程根据各最小音频数据读取命读取完音频帧数据的最小音频数据读取命令,更新当前已准备好的音频帧数据的个数;
即图4中PreparedAudioFrameSpecEntryList。然后更新以准备好的音频数据的个数,也即图4中Update PrepareAudioFrameMapCount Value。
步骤223,提取已经准备好的任务管理表,并根据任务管理表中的最小音频数据读取命令管理表提取各音频帧数据;
即图4中GetFirstPrapareTaskFrameMap,找到已准备好的所有AudioFrameSpecEntryList对应的最小帧的音频数据。
步骤224,针对所述任务管理表,将相应的音频帧数据整理为对应视频帧号的音频数据返回。
针对前述找到已准备好的所有AudioFrameSpecEntryList对应的最小帧的音频数据的TaskFrameMap,整理其各音频数据返回给播放流程的其他处理线程。
当IOComplete线程等待针对当前ReadTask的所有TaskFrameMap处理完毕,针对当前ReadTask的IOComplete线程处理过程即可完毕。现有技术中,对于TS流文件来说,由于非交错式(非Interleave)方式从TS流文件中读取视频数据和音频数据均是单独读取的,而且TS流文件的音频数据是离散的,那么粗放式的ReadTask命令读取音频数据时,也需要整体读取TS文件中对于ReadTask命令的最大位置和最小位置之间的所有数据,真正有效的音频数据占有率低,而本发明则针对每个音频帧数据精细的产生数据读取命令,大大节省读取的数据量,有效降低带宽占用率。
参照图5,其示出了本发明一直非交错式音频数据读取装置的结构示意图,具体可以包括:
拦截模块510,用于拦截用于读取TS流文件数据块的原始指令;
源文件查找模块520用于根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
音频帧信息提取模块530,用于根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
最小命令管理模块540,用于针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据;
返回模块550,用于将所述音频帧数据作为所述原始指令的音频数据返回。
其中,所述最小命令管理模块包括:
命令信息处理模块,用于针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表;
去重模块,用于将各视频帧号对应的最小音频数据读取命令列表中的最小音频数据读取命令进行去重,获得最小音频数据读取命令总列表;
读取模块,用于基于所述最小音频数据读取命令信息总列表中的各待处理最小音频数据读取命令信息,生成可执行最小音频数据读取命令,并将所述行最小音频数据读取命令发送给磁盘读取IO线程读取相应的音频帧数据。
在所述命令信息处理模块之后还包括:
第一管理表生成模块,用于根据所述待处理最小音频数据读取命令信息表生成针对所述视频帧号的最小音频数据读取命令管理表;
第二管理表生成模块,用于根据所述最小音频数据读取命令管理表和视频帧号,生成视频任务管理表。
其中,所述返回模块包括:
第一返回模块,用于在磁盘读取IO线程读取相应的音频帧数据之后,调用回调接口的完成线程将音频帧数据作为所述原始指令的音频数据返回。
其中,所述返回模块包括:
第一找寻模块,用于针对所述原始指令,找到对应的已读取数据的最小音频数据读取命令总列表;
更新模块,用于根据磁盘读取IO线程根据各最小音频数据读取命读取完音频帧数据的最小音频数据读取命令,更新当前已准备好的音频帧数据的个数;
提取模块,用于提取已经准备好的任务管理表,并根据任务管理表中的最小音频数据读取命令管理表提取各音频帧数据;
第一返回模块,用于针对所述任务管理表,将相应的音频帧数据整理为对应视频帧号的音频数据返回。
其中,所述针对各音频帧信息生成最小音频数据读取命令包括:
将针对各音频帧信息的最小音频数据读取命令通过以SpecEntry数据结构作为载体。
其中,所述最小音频数据读取命令包括:
音频帧数据在源文件中的位置、音频帧数据大小、音频帧数据在磁盘数据中的偏移和数据读完后的回调接口。
参照图6,其示出了本发明一种非交错式音频数据读取装置实施例二的结构示意图,包括:
拦截模块611,适于拦截用于读取TS流文件数据块的原始指令;
源文件查找模块612,适于根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
音频帧信息提取模块613,适于根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
最小命令管理模块614,适于针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表;
最小命令管理表生成模块615,适于根据所述待处理最小音频数据读取命令信息表生成针对所述视频帧号的最小音频数据读取命令管理表;
任务管理表生成模块616,适于根据所述最小音频数据读取命令管理表和视频帧号,生成视频任务管理表;
去重模块617,适于将各视频帧号对应的最小音频数据读取命令列表中的最小音频数据读取命令进行去重,获得最小音频数据读取命令总列表;
最小命令发送模块618,适于基于所述最小音频数据读取命令信息总列表中的各待处理最小音频数据读取命令信息,生成可执行最小音频数据读取命令,并将所述行最小音频数据读取命令发送给磁盘读取IO线程读取相应的音频帧数据;
已完成最小命令管理模块621,适于针对所述原始指令,找到对应的已读取数据的最小音频数据读取命令总列表;
更新模块622,适于根据磁盘读取IO线程根据各最小音频数据读取命读取完音频帧数据的最小音频数据读取命令,更新当前已准备好的音频帧数据的个数;
任务管理表提取模块623,适于提取已经准备好的任务管理表,并根据任务管理表中的最小音频数据读取命令管理表提取各音频帧数据;
第一返回模块624,适于针对所述任务管理表,将相应的音频帧数据整理为对应视频帧号的音频数据返回。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种非交错式音频数据读取设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种非交错式音频数据读取方法,其特征在于,包括:
拦截用于读取TS流文件数据块的原始指令;
根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据,其中所述最小音频数据读取命令表示针对每个音频帧产生的读取数据命令;
将所述音频帧数据作为所述原始指令的音频数据返回。
2.如权利要求1所述的方法,其特征在于,所述针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据包括:
针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表;
将各视频帧号对应的最小音频数据读取命令列表中的最小音频数据读取命令进行去重,获得最小音频数据读取命令总列表;
基于所述最小音频数据读取命令信息总列表中的各待处理最小音频数据读取命令信息,生成可执行最小音频数据读取命令,并将所述最小音频数据读取命令发送给磁盘读取IO线程读取相应的音频帧数据。
3.如权利要求2所述的方法,其特征在于,在针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表之后还包括:
根据所述待处理最小音频数据读取命令信息表生成针对所述视频帧号的最小音频数据读取命令管理表;
根据所述最小音频数据读取命令管理表和视频帧号,生成视频任务管理表。
4.如权利要求2或3所述的方法,其特征在于,所述将音频帧数据作为所述原始指令的音频数据返回包括:
在磁盘读取IO线程读取相应的音频帧数据之后,调用回调接口的完成线程将音频帧数据作为所述原始指令的音频数据返回。
5.如权利要求4所述的方法,其特征在于,所述将音频帧数据作为所述原始指令的音频数据返回包括:
针对所述原始指令,找到对应的已读取数据的最小音频数据读取命令总列表;
根据磁盘读取IO线程根据各最小音频数据读取命令读取完音频帧数据的最小音频数据读取命令,更新当前已准备好的音频帧数据的个数;
提取已经准备好的任务管理表,并根据任务管理表中的最小音频数据读取命令管理表提取各音频帧数据;
针对所述任务管理表,将相应的音频帧数据整理为对应视频帧号的音频数据返回。
6.如权利要求1所述的方法,其特征在于,所述针对各音频帧信息生成最小音频数据读取命令包括:
将针对各音频帧信息的最小音频数据读取命令通过以SpecEntry数据结构作为载体,其中一个SpecEntry对应一个读取文件的信息描述封装。
7.如权利要求6所述的方法,其特征在于,所述最小音频数据读取命令包括:
音频帧数据在源文件中的位置、音频帧数据大小、音频帧数据在磁盘数据中的偏移和数据读完后的回调接口。
8.一种非交错式音频数据读取装置,其特征在于,包括:
拦截模块,用于拦截用于读取TS流文件数据块的原始指令;
源文件查找模块,用于根据所述原始指令中的各视频帧号,在源文件中找到对应所述视频帧号的各数据包信息;
音频帧信息提取模块,用于根据所述每个视频帧号的数据包信息,提取对应该视频帧号需求的各音频帧信息;
最小命令管理模块,用于针对各音频帧信息生成最小音频数据读取命令,并根据所述最小音频数据读取命令读取音频帧数据,其中所述最小音频数据读取命令表示针对每个音频帧产生的读取数据命令;
返回模块,用于将所述音频帧数据作为所述原始指令的音频数据返回。
9.如权利要求8所述的装置,其特征在于,所述最小命令管理模块包括:
命令信息处理模块,用于针对各音频帧信息生成最小音频数据读取命令,并获得最小音频数据读取命令列表;
去重模块,用于将各视频帧号对应的最小音频数据读取命令列表中的最小音频数据读取命令进行去重,获得最小音频数据读取命令总列表;
读取模块,用于基于所述最小音频数据读取命令信息总列表中的各待处理最小音频数据读取命令信息,生成可执行最小音频数据读取命令,并将所述最小音频数据读取命令发送给磁盘读取IO线程读取相应的音频帧数据。
10.如权利要求9所述的装置,其特征在于,所述返回模块包括:
第一返回模块,用于在磁盘读取IO线程读取相应的音频帧数据之后,调用回调接口的完成线程将音频帧数据作为所述原始指令的音频数据返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210479565.3A CN103002326B (zh) | 2012-11-22 | 2012-11-22 | 一种非交错式音频数据读取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210479565.3A CN103002326B (zh) | 2012-11-22 | 2012-11-22 | 一种非交错式音频数据读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103002326A CN103002326A (zh) | 2013-03-27 |
CN103002326B true CN103002326B (zh) | 2017-11-10 |
Family
ID=47930382
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210479565.3A Active CN103002326B (zh) | 2012-11-22 | 2012-11-22 | 一种非交错式音频数据读取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103002326B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113225309B (zh) * | 2021-03-19 | 2023-05-19 | 深圳市迅雷网络技术有限公司 | 多媒体文件在线播放方法、设备、服务器及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1297310A (zh) * | 1999-11-20 | 2001-05-30 | 三星电子株式会社 | 存储和检索含有附加信息的音频/视频数据的装置 |
CN1602066A (zh) * | 2003-09-25 | 2005-03-30 | 株式会社东芝 | 信息记录介质、记录和还原方法以及记录和还原设备 |
WO2006006709A1 (en) * | 2004-07-12 | 2006-01-19 | Matsushita Electric Industrial Co., Ltd. | Stream recording/reproducing apparatus |
CN101083772A (zh) * | 2007-07-10 | 2007-12-05 | 北京中星微电子有限公司 | 传输流解复用装置及方法 |
CN101179736A (zh) * | 2006-11-08 | 2008-05-14 | 中兴通讯股份有限公司 | 一种传输流节目转换成中国移动多媒体广播节目的方法 |
CN101583007A (zh) * | 2004-04-07 | 2009-11-18 | 松下电器产业株式会社 | 记录可以高速转换的流的信息记录装置和记录方法 |
CN101600118A (zh) * | 2008-06-06 | 2009-12-09 | 株式会社日立制作所 | 音视频内容信息抽取装置和方法 |
US7912357B2 (en) * | 2001-07-25 | 2011-03-22 | Samsung Electronics Co., Ltd. | Method of and apparatus for storing a program |
CN102231827A (zh) * | 2011-03-14 | 2011-11-02 | 新奥特(北京)视频技术有限公司 | 一种支持ps流媒体文件直接帧精确定位的索引方法 |
-
2012
- 2012-11-22 CN CN201210479565.3A patent/CN103002326B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1297310A (zh) * | 1999-11-20 | 2001-05-30 | 三星电子株式会社 | 存储和检索含有附加信息的音频/视频数据的装置 |
US7912357B2 (en) * | 2001-07-25 | 2011-03-22 | Samsung Electronics Co., Ltd. | Method of and apparatus for storing a program |
CN1602066A (zh) * | 2003-09-25 | 2005-03-30 | 株式会社东芝 | 信息记录介质、记录和还原方法以及记录和还原设备 |
CN101583007A (zh) * | 2004-04-07 | 2009-11-18 | 松下电器产业株式会社 | 记录可以高速转换的流的信息记录装置和记录方法 |
WO2006006709A1 (en) * | 2004-07-12 | 2006-01-19 | Matsushita Electric Industrial Co., Ltd. | Stream recording/reproducing apparatus |
CN101179736A (zh) * | 2006-11-08 | 2008-05-14 | 中兴通讯股份有限公司 | 一种传输流节目转换成中国移动多媒体广播节目的方法 |
CN101083772A (zh) * | 2007-07-10 | 2007-12-05 | 北京中星微电子有限公司 | 传输流解复用装置及方法 |
CN101600118A (zh) * | 2008-06-06 | 2009-12-09 | 株式会社日立制作所 | 音视频内容信息抽取装置和方法 |
CN102231827A (zh) * | 2011-03-14 | 2011-11-02 | 新奥特(北京)视频技术有限公司 | 一种支持ps流媒体文件直接帧精确定位的索引方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103002326A (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6903606B2 (ja) | コンテンツの送受信方法及び装置 | |
CN110019240B (zh) | 一种业务数据交互方法、装置及系统 | |
CN102857830B (zh) | 网络媒体适配器 | |
CN103650526B (zh) | 用于实时或近实时流传输的播放列表 | |
US10798145B1 (en) | Analyzing data streams | |
JP7246508B2 (ja) | Httpによる動的適応ストリーミングのための方法及び装置 | |
KR20170108094A (ko) | 다중 스크린 환경을 위한 디지털 시네마 패키지를 병합하기 위한 시스템 및 방법 | |
US20230217048A1 (en) | Just in time content conditioning | |
JP6677726B2 (ja) | コンテンツフォーマット変換の検証 | |
CN104954850B (zh) | 非线性编辑软件的调度方法和装置 | |
US10200434B1 (en) | Encoding markers in transport streams | |
Akter et al. | Performance analysis of personal cloud storage services for mobile multimedia health record management | |
US8892762B2 (en) | Multi-granular stream processing | |
CN103002326B (zh) | 一种非交错式音频数据读取方法和装置 | |
AU2014368914B2 (en) | Multiple views recording | |
US20220035724A1 (en) | Non-linear management of real time sequential data in cloud instances via time constraints | |
CN103647970B (zh) | 一种分布式转码的音视频同步方法及系统 | |
CN116166673A (zh) | 数据处理方法及装置、电子设备、计算机可读存储介质 | |
CN102231803B (zh) | 一种支持ts流媒体文件的容错方法 | |
CN105302645B (zh) | 一种任务分发方法及装置 | |
CN103078860B (zh) | 一种数字媒体内容发布方法和系统 | |
KR102153554B1 (ko) | 미디어 데이터의 처리를 위한 mmt 장치 및 방법 | |
Gao et al. | Beyond the playlist: seamless playback of structured video clips | |
JP7514319B2 (ja) | Dashおよびcmafインバンド・イベントを処理するための拡張されたw3cメディア拡張のための方法、装置およびプログラム | |
CN102857812A (zh) | 一种支持ts流媒体文件的容错方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |