CN112437315B - 适应多***版本的音频适配方法及*** - Google Patents
适应多***版本的音频适配方法及*** Download PDFInfo
- Publication number
- CN112437315B CN112437315B CN202010911906.4A CN202010911906A CN112437315B CN 112437315 B CN112437315 B CN 112437315B CN 202010911906 A CN202010911906 A CN 202010911906A CN 112437315 B CN112437315 B CN 112437315B
- Authority
- CN
- China
- Prior art keywords
- data
- audio
- ith
- data segment
- segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/60—Information retrieval; Database structures therefor; File system structures therefor of audio data
- G06F16/68—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- 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/233—Processing of audio elementary streams
-
- 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/439—Processing of audio elementary streams
- H04N21/4392—Processing of audio elementary streams involving audio buffer management
-
- 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/439—Processing of audio elementary streams
- H04N21/4394—Processing of audio elementary streams involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams
-
- 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/439—Processing of audio elementary streams
- H04N21/4398—Processing of audio elementary streams involving reformatting operations of audio signals
-
- 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/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本申请公开了一种适应多***版本的音频适配方法,所述方法包括:获取***直播录制工具提供的第i批音频数据,i为正整数;至少基于所述第i批音频数据得到相应的第一数据片段和第二数据片段。本申请实施例提供的适应多***版本的音频适配方法可以兼容适配***版本差异导致的数据量不一致的各种音频数据,确保编码正确。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种适应多***版本的音频适配方法、***、计算机设备和计算机可读存储介质。
背景技术
网络直播是当前互联网的热门项目之一。目前市场上,人们开发了大量的基于Android操作***或IOS操作***的直播APP,用于直播操作。然而,随着Android或IOS***版本的更新迭代,这些直播APP可能无法同时适用在多个版本的操作***中。以苹果公司的IOS***为例,这些直播APP需要调用IOS***中的***直播录制工具replayKit获取音频数据,但是:13.0版本之前的IOS***的replayKit输出的音频数据与13.0版本之后的IOS***的replayKit输出的音频数据具有很大差异性。这种数据差异性无疑容易导致出现音频适配问题,进而造成编码错误。
发明内容
本申请实施例的目的是提供一种适应多***版本的音频适配方法、***、计算机设备及计算机可读存储介质,用于解决***版本差异导致的音频不适配,进而造成编码错误的问题。
本申请实施例的一个方面提供了一种适应多***版本的音频适配方法,所述方法包括:获取***直播录制工具提供的第i批音频数据,i为正整数;至少基于所述第i批音频数据得到相应的第一数据片段和第二数据片段:当i=1时,将所述第一批音频数据切分为第一个第一数据片段和第一个第二数据片段,其中,所述第一个第一数据片段的数据量为所述第一批音频数据提供的最大整数倍的切片数据量,所述第一个第二数据片段为所述第一批音频数据中除所述第一个第一数据片段之外剩余的数据片段;将所述第一个第一数据片段发送至下一个音频处理模块;及将所述第一个第二数据片段暂存至音频缓冲区;当i≥2时,基于i-1批音频数据剩余的第i-1个第二音频片段和所述第i批音频数据形成第i个第一数据片段和第i个第二数据片段,其中,所述第i个第一数据片段的数据量为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据提供的最大整数倍的切片数据量,所述第i个第二个数据片段为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据中除所述第i个第一数据片段之外剩余的数据片段;将所述第i个第一数据片段发送至所述下一个音频处理模块;及将所述第i个第二数据片段暂存至所述音频缓冲区。
可选的,还包括:确定音频的时间戳,其中,所述音频的时间戳等于主时间戳减去暂存数据时间戳;其中,所述主时间戳为第1批至第i批音频数据的时间戳增量总和,所述暂存时间戳为所述第i个第二数据片段对应的时间戳增量。
可选的,还包括:通过多个任务处理所述第i批音频数据,其中,每个任务对应一个处理操作;及将所述多个任务放入到串行队列中,以对所述第i批音频数据执行异步处理操作。
可选的,还包括:调高所述串行队列的优先级。
可选的,还包括:获取所述第i批音频数据的数据格式;及如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换。
可选的,所述数据格式包括大小端;如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换,包括:如果所述大小端不是预设大小端,则将第i个第一数据片段中的第j位数据和第j+1位数据进行置换操作,j为正整数。
可选的,所述数据格式包括声道数;如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换,包括:如果所述数据格式为单声道且所述预设数据格式为双声道,则对所述第i个第一数据片段进行声道数转换:将所述第i个第一数据片段的第k位数据拷贝到双声道指针的k*2位地址、k*2+2位地址;将所述第i个第一数据片段的第k+1位数据拷贝到双声道指针的k*2+1位地址、k*2+3位地址,k为正整数。
可选的,所述数据格式包括采样率;如果所述不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换,包括:如果所述采样率不等于预设采样率,则通过fast采样率转换策略对所述第i个第一数据片段进行采样率转换,以得到对应于所述预设采样率的第i个第一数据片段。
可选的,所述***直播录制工具为IOS***的replayKit。
本申请实施例的一个方面又提供了一种适应多***版本的音频适配***,包括:获取模块,用于获取***直播录制工具提供的第i批音频数据,i为正整数;处理模块,用于至少基于所述第i批音频数据得到相应的第一数据片段和第二数据片段:当i=1时,将所述第一批音频数据切分为第一个第一数据片段和第一个第二数据片段,其中,所述第一个第一数据片段的数据量为所述第一批音频数据提供的最大整数倍的切片数据量,所述第一个第二数据片段为所述第一批音频数据中除所述第一个第一数据片段之外剩余的数据片段;将所述第一个第一数据片段发送至下一个音频处理模块;及将所述第一个第二数据片段暂存至音频缓冲区;当i≥2时,基于i-1批音频数据剩余的第i-1个第二音频片段和所述第i批音频数据形成第i个第一数据片段和第i个第二数据片段,其中,所述第i个第一数据片段的数据量为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据提供的最大整数倍的切片数据量,所述第i个第二个数据片段为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据中除所述第i个第一数据片段之外剩余的数据片段;将所述第i个第一数据片段发送至所述下一个音频处理模块;及将所述第i个第二数据片段暂存至所述音频缓冲区。
本申请实施例的一个方面又提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述适应多***版本的音频适配方法的步骤。
本申请实施例的一个方面又提供了一种计算机可读存储介质,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述适应多***版本的音频适配方法的步骤。
本申请实施例提供的适应多***版本的音频适配方法、***、设备及计算机可读存储介质,对每批音频数据进行切分,以使送入到下一个音频处理模块的音频数据为规整的音频数据,以兼容适配***版本差异导致的数据量不一致的各种音频数据。即,任意量级音频数据的输入处理,都需要进行数据规整处理,以确保编码正确。
附图说明
图1示意性示出了根据本申请实施例的适应多***版本的音频适配方法的应用环境图;
图2示意性示出了根据本申请实施例一的适应多***版本的音频适配方法的流程图;
图3示意性示出了根据本申请实施例一的适应多***版本的音频适配方法的新增步骤流程图;
图4为图3中步骤S302的子步骤图;
图5示意性示出了根据本申请实施例一的适应多***版本的音频适配方法的另一流程图;
图6示意性示出了根据本申请实施例一的适应多***版本的音频适配方法的另一新增步骤流程图;
图7示意性示出了根据本申请实施例一的适应多***版本的音频适配方法的另一新增步骤流程图;
图8示意性示出了根据本申请实施例二的适应多***版本的音频适配***的框图;及
图9示意性示出了根据本申请实施例三的适于实现适应多***版本的音频适配方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
图1示意性示出了根据本申请实施例一的适应多***版本的音频适配方法的环境应用示意图。在直播场景下,主播端2可以将直播数据实时推送至观众端4。
主播端2,用于实时生成直播数据,并进行直播数据的推流操作。所述直播数据可以包括音频数据或视频数据。直播端2可以是基于IOS***的智能手机、平板电脑等。在另一些实施例中,直播端2可以是基于Android等***的直播设备。
观众端4,可以被配置为实时接收主播端2的直播数据。观众端4可以是任意类型的计算设备,诸如智能手机,平板设备,膝上型计算机,机顶盒,智能电视等。观众端4可以内置浏览器或专门程序,通过浏览器或专门程序接收所述直播数据以向用户输出内容。所述内容可以包括视频,音频,评论,文本数据和/或类似物。
其中,主播端2内置有***直播录制工具和直播APP(如,BilibiliLink)。
主播可以开启直播APP进行直播操作。直播APP属于应用层APP。在直播场景下,直播APP需要调用***层的***直播录制工具,通过***直播录制工具获取直播数据。因此,这就涉及到了直播APP和***直播录制工具的适配问题。不同***版本对应的***直播录制工具可能是不一样的,因此,直播APP难于兼容多个***版本,导致编码错误、丢帧、音画不同步、拉流卡顿、推流不稳定等问题。
以IOS***为例:IOS***中的***直播录制工具为replayKit。13.0版本之前的IOS***和之后的IOS***,replayKit所采用的音频数据量、采样率、声道数存在巨大差异。具体的:13.0版本之前的IOS***:replayKit的音频回调为每0.5s输出441000个字节数据、声道数为单声道、麦克风采样率为44100hz;13.0版本之后的IOS***:replayKit的音频回调为每0.023220s输出4096个字节数据、声道数为双声道、麦克风采样率变为48000hz。这种不同***版本所导致的replayKit差异,可能导致编码错误、丢帧、音画不同步、拉流卡顿、推流不稳定等问题。
本申请旨在提供直播场景下的音频适配方案以解决***版本差异问题。下文将提供多个实施例,下文提供的各个实施例可以用于解决上文描述的一个或多个技术问题,实现直播APP(如bilibili link)录屏直播的稳定推流、无丢帧、音画同步、拉流不卡顿。
实施例一
以下以IOS***及其replayKit为例进行阐述。应理解,本申请不限于IOS***的音频适配方法。
图2示意性示出了根据本申请实施例一的适应多***版本的音频适配方法的流程图。需要说明的是,下面以计算机设备(主播端2)为执行主体进行示例性描述。如图2所示,该适应多***版本的音频适配方法可以包括步骤S200~S206,其中:
步骤S200,获取***直播录制工具提供的第i批音频数据,i为正整数。
所述第i批音频数据为***直播录制工具在直播场景下实时回调的音频数据。所述第i批音频数据亦为“第i个音频数据包”,是***直播录制工具每次提供的最小数据包。13.0版本之前的IOS***中的replayKit每次提供441000个字节数据,13.0版本之后的IOS***中的replayKit每次提供2048个字节数据。因此:如果当前***为13.0版本之前的IOS***,第i批音频数据的数据量均为441000个字节;如果当前***为13.0版本之后的IOS***中,第i批音频数据的数据量均为2048个字节。
步骤S202,至少基于所述第i批音频数据得到相应的第一数据片段和第二数据片段:
当i=1时,将所述第一批音频数据切分为第一个第一数据片段和第一个第二数据片段,其中,所述第一个第一数据片段的数据量为所述第一批音频数据提供的最大整数倍的切片数据量,所述第一个第二数据片段为所述第一批音频数据中除所述第一个第一数据片段之外剩余的数据片段;将所述第一个第一数据片段发送至下一个音频处理模块;及将所述第一个第二数据片段暂存至音频缓冲区;
当i≥2时,基于i-1批音频数据剩余的第i-1个第二音频片段和所述第i批音频数据形成第i个第一数据片段和第i个第二数据片段,其中,所述第i个第一数据片段的数据量为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据提供的最大整数倍的切片数据量,所述第i个第二个数据片段为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据中除所述第i个第一数据片段之外剩余的数据片段;将所述第i个第一数据片段发送至所述下一个音频处理模块;及将所述第i个第二数据片段暂存至所述音频缓冲区。
对于不同版本的操作***而言,其为应用层每次提供的音频数据的数据量可能是不一样的。由于这种数据量的不同,就会导致混音器、编码器等容易出现编码错误和丢帧等问题。继续以IOS***为例,13.0版本之后的IOS***中的replayKit的数据回调量为固定的1024音频帧,数据大小为2048个字节,相当于***层对音频数据拆包,从而可以直接用于后续的混音或编码处理。13.0版本之前的IOS***中的replayKit的回调数据量为441000个字节/0.5s。如果将441000个字节的数据以2048个字节为单位进行拆分,每次会剩余非1024个字节整数倍的数据,这部分数据无法立即混音或者送往编码器,导致编码错误和丢帧。
有鉴于此,本申请对第i批音频数据进行规整处理,以解决数据量大小不一致的问题。具体可以参考以下示例性步骤:(1)计算切片数据量;其中,所述切片数据量可以是一个音频帧的数据量,即:1024*bytesPreFrame*声道数,bytesPreFrame用于表示每个音频帧包含的字节数。(2)建立迭代,执行(第i批音频数据/切片数据量)次,将第i批音频数据进行拆包。举例而言:在IOS***中,其编码器必须固定输入一个音频帧的数据量,因此,“迭代”是指将第i批音频数据切片成多少个音频帧的过程,以方便后续的编码处理。(3)得到第i个第一数据片段A1和第i个第二数据片段A2;其中,该第i个第一数据片段A1的数据量为切片数据量的最大整数倍,即:M*切片数据量≤第i个第一数据片段A1≤(M+1)*切片数据量,M为正整数。该第i个第一数据片段A1即是规整的数据片段,将所述第i个第一数据片段A1用于后续编码、混音等处理,可以编码正确。该第i个第二数据片段A2为不规整的数据片段,暂时不用于后续编码、混音等处理,以防止编码错误和丢帧。
应理解,所述下一个音频处理模块可以包括编码模块、混音模块等各类音频处理模块。
应理解,所述第i个第二数据片段的数据量小于一个切片数据量或者为0。
计算机设备2可以预先建立所述音频缓冲区。所述音频缓冲区可以为char类型的指针。所述音频缓冲区初始化大小应该足够大,以防止数据的溢出问题。举例而言:计算机设备2可以创建空白指针数组为音频缓冲区,用于承接所述第i个第二数据片段A2。其中,空白指针数组,是一个临时变量,且生命周期在当前迭代。
计算机设备2将第i批音频数据剩下的第i个第二数据片段A2与所述第i+1批音频数据进行整合,将整合后的总音频数据进行迭代操作,该次迭代操作有可能有以下结果:
第一、第i个第二数据片段A2与所述第i+1批音频数据的总音频数据正好是所述切片数据量的整数倍。即,所述第i+1个第一数据片段B1为第i个第二数据片段A2+所述第i+1批音频数据。
第二、第i个第二数据片段A2与所述第i+1批音频数据的总音频数据不能被所述切片数据量整除。所述第i+1个第一数据片段B1为第i个第二数据片段A2+所述第i+1批音频数据的大部分数据。所述第i+1个第二数据片段B2为所述总音频数据被迭代后剩下的数据。
例如,i=1,切片数据量为2048个字节,第1批音频数据的数据量为441000个字节,根据时间顺序:
(1)获取第1批音频数据;
(2)得到第1批音频数据中的第一个第一数据片段A1为440320个字节(2048个字节*215)的数据;
(3)得到第1批音频数据中的第一个第二数据片段A2为680个字节的数据(位于第i批音频数据最后的数据);
(4)步骤(3)中的第一个第一数据片段A1发送所述下一个音频处理模块;
(5)将步骤(3)中的第一个第二数据片段A2暂存到音频缓冲区;
(6)获取第2批音频数据;
(7)对步骤(5)中的处于音频缓冲区的680个字节的第一个第二数据片段A2和第2批音频数据整合,并进行迭代操作,其中:
(7.1)第一次迭代得到第一个对应于切片数据量的数据,即:步骤(5)中的处于音频缓冲区的680个字节的第一个第二数据片段A2+第2批音频数据中最前的1368个字节大小的数据;
(7.2)第二次迭代得到第二个对应于切片数据量的数据;
…以此类推,得到:
第二个第一数据片段B1(所述680个字节的第一个第二数据片段+所述第2批音频数据中的439640个字节数据);第二个第二数据片段B2(位于所述第2批音频数据最后的1360个字节数据)。
本实施例的适应多***版本的音频适配方法,建立通用逻辑,任意量级音频数据的输入处理,都需要经过统一处理,以确保数据的规整,以确保编码正确。可知,本实施例可以解决***版本差异的问题,实现不同***版本的音频统一适配。
上述实施例中的数据的规整操作,解决了***版本差异导致的其中一个方面的音频适配问题。以下实施例还提供了***版本差异导致的其他方面的音频适配问题。
在示例性的实施例中,为解决***版本差异导致的数据格式不统一,进而导致音频不适配的问题,如图3所示,所述适应***版本的音频适配方法,还包括步骤S300~S302,其中:步骤S300,获取所述第i批音频数据的数据格式;步骤S302,如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换。
数据格式可能涉及到多个方面,如大小端、声道数、采样率、depth(位深度)、bytePerFrame等。
(1)关于大小端:
大端(bigendian),是指数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中。
小端(littleendian),是指数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中。
所述数据格式包括大小端。如果所述数据格式中的大小端与所述预设数据格式中的大小端不同,则需要进行大小转换。如图4所示,所述步骤S302可以如下步骤:S402,如果所述大小端不是预设大小端,则将第i个第一数据片段中的第j位数据和第j+1位数据进行置换操作,j为正整数。
(2)关于采用率:
所述数据格式包括采样率。如果所述数据格式中的采样率与预设采样率不同,则需要进行采样率转换。如图4所示,所述步骤S302可以如下步骤:S404,如果所述采样率不等于预设采样率,则通过fast采样率转换策略对所述第i个第一数据片段进行采样率转换,以得到对应于所述预设采样率的第i个第一数据片段。fast采样率转换策略可以满足直播场景的实时性,也不会影响录屏***的性能。需要说明的是,采样率转换可以使用libresample库,写入数组要初始化足够大的空间。
(3)关于声道数:
所述数据格式包括声道数。如果所述数据格式中的声道数与预设数据格式中的声道数不同,需要进行声道数转换。以下通过单声道转换为双声道的示例,如图4所示,所述步骤S302可以如下步骤:S404,如果所述数据格式为单声道且所述预设数据格式为双声道,则对所述第i个第一数据片段进行声道数转换:将所述第i个第一数据片段的第k位数据拷贝到双声道指针的k*2位地址、k*2+2位地址;将所述第i个第一数据片段的第k+1位数据拷贝到双声道指针的k*2+1位地址、k*2+3位地址,k为正整数。
本发明人还发现:数据的规整操作虽然在其中一个方面解决了***版本差异导致的音频适配问题,但是也可能会衍生出另一个问题,即画音不同步。原因如下:以第一批音频数据为例,其在切分迭代过程中,向后续音频处理模块进行输送了440320个字节数据(即第一个第一数据片段A1),剩余680个字节数据(即第一个第二数据片段A2)被暂存到了音频缓冲区,而没有被立即输送到后续音频处理模块中。这个情形导致了:直播过程中的音频的时间戳会不断的额外增长,造成音画不同步。
在示例性的实施例中,为避免画音不同步,如图5所示,所述适应多***版本的音频适配方法还包括步骤S500,确定音频的时间戳。其中,所述音频的时间戳等于主时间戳减去暂存数据时间戳;其中,所述主时间戳为第1批至第i批音频数据的时间戳增量总和,所述暂存时间戳为所述第i个第二数据片段对应的时间戳增量。所述第i个第二数据片段A2所对应的暂存数据时间戳=时间戳增量*余数/(1024*bytesPreFrame*声道数),即,时间戳增量*680/(1024*bytesPreFrame*声道数)。应理解,所述时间戳增量为每批音频数据对应的时间戳增量。
不同的播放器的解码行为不同,可以以第一个音频帧的时间戳设为零点,随后音频的时间戳以此为零点,每次迭代自增一个音频帧的时间戳,不足一个音频帧要减去这部分时间(暂存数据时间戳),来保证画面和音频的时间戳是同步的,从而保证拉流不卡顿。
本发明人还发现:当计算机设备2处理较多的音频数据时,容易出现推流不稳定的问题。继续以IOS***为例,IOS***的replayKit存在进程内存50M的限制,超出此内存时会导致程序崩溃,从而导致直播推流被中断。因此,为了实现稳定推流,如图6所示,所述适应多***版本的音频适配方法还包括步骤S600~S602,其中:步骤S600,通过多个任务处理所述第i批音频数据,其中,每个任务对应一个处理操作;步骤S602,将所述多个任务放入到串行队列中,以对所述第i批音频数据执行异步处理操作。也就是说,本申请在处理音频数据流时,将任务放入自行管理的串行队列中异步执行,防止处理耗时阻塞数据回调的线程。本实施例的好处在于:一定程度上减少了运行时内存的增耗,保证推流稳定性。
为了进一步提升稳定性,如图7所示,所述适应多***版本的音频适配方法还包括步骤S604:调高所述串行队列的优先级。本实施例在于避免任务堆积,进一步提升推流稳定性。
实施例二
图8示意性示出了根据本申请实施例二的适应多***版本的音频适配***的框图,该适应多***版本的音频适配***可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。
如图8所示,该适应多***版本的音频适配***800可以包括获取模块810和处理模块820,其中:
获取模块810,用于获取***直播录制工具提供的第i批音频数据,i为正整数;
处理模块820,用于至少基于所述第i批音频数据得到相应的第一数据片段和第二数据片段:当i=1时,将所述第一批音频数据切分为第一个第一数据片段和第一个第二数据片段,其中,所述第一个第一数据片段的数据量为所述第一批音频数据提供的最大整数倍的切片数据量,所述第一个第二数据片段为所述第一批音频数据中除所述第一个第一数据片段之外剩余的数据片段;将所述第一个第一数据片段发送至下一个音频处理模块;及将所述第一个第二数据片段暂存至音频缓冲区;当i≥2时,基于i-1批音频数据剩余的第i-1个第二音频片段和所述第i批音频数据形成第i个第一数据片段和第i个第二数据片段,其中,所述第i个第一数据片段的数据量为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据提供的最大整数倍的切片数据量,所述第i个第二个数据片段为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据中除所述第i个第一数据片段之外剩余的数据片段;将所述第i个第一数据片段发送至所述下一个音频处理模块;及将所述第i个第二数据片段暂存至所述音频缓冲区
在示例性的实施例中,所述音频适配***800还包括时间戳确定模块(未图示),用于:确定音频的时间戳,其中,所述音频的时间戳等于主时间戳减去暂存数据时间戳;其中,所述主时间戳为第1批至第i批音频数据的时间戳增量总和,所述暂存时间戳为所述第i个第二数据片段对应的时间戳增量。
在示例性的实施例中,所述音频适配***800还包括任务处理模块(未图示)。所述任务处理模块用于:通过多个任务处理所述第i批音频数据,其中,每个任务对应一个处理操作;及将所述多个任务放入到串行队列中,以对所述第i批音频数据执行异步处理操作。
在示例性的实施例中,所述任务处理模块还用于:调高所述串行队列的优先级。
在示例性的实施例中,所述音频适配***800还包括格式转换模块(未图示)。所述格式转换模块,用于:获取所述第i批音频数据的数据格式;及如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换。
在示例性的实施例中,所述数据格式包括大小端;所述格式转换模块用于:如果所述大小端不是预设大小端,则将第i个第一数据片段中的第j位数据和第j+1位数据进行置换操作,j为正整数。
在示例性的实施例中,所述数据格式包括声道数;所述格式转换模块用于:如果所述数据格式为单声道且所述预设数据格式为双声道,则对所述第i个第一数据片段进行声道数转换:将所述第i个第一数据片段的第k位数据拷贝到双声道指针的k*2位地址、k*2+2位地址;将所述第i个第一数据片段的第k+1位数据拷贝到双声道指针的k*2+1位地址、k*2+3位地址,k为正整数。
在示例性的实施例中,所述数据格式包括采样率;所述格式转换模块用于:如果所述采样率不等于预设采样率,则通过fast采样率转换策略对所述第i个第一数据片段进行采样率转换,以得到对应于所述预设采样率的第i个第一数据片段。
在示例性的实施例中,所述***直播录制工具为IOS***的replayKit。
实施例三
图9示意性示出了根据本申请实施例三的适于实现适应多***版本的音频适配方法的计算机设备2的硬件架构示意图。本实施例中,计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑等。如图9所示,计算机设备2至少包括但不限于:可通过***总线相互通信链接存储器910、处理器920、网络接口930。其中:
存储器910至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器910可以是计算机设备2的内部存储模块,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器910也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(SmartMedia Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器910还可以既包括计算机设备2的内部存储模块也包括其外部存储设备。本实施例中,存储器910通常用于存储安装于计算机设备2的操作***和各类应用软件,例如适应多***版本的音频适配方法的程序代码等。此外,存储器910还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器920在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器920通常用于控制计算机设备2的总体操作,例如执行与计算机设备2进行数据交互或者通信相关的控制和处理等。本实施例中,处理器920用于运行存储器910中存储的程序代码或者处理数据。
网络接口930可包括无线网络接口或有线网络接口,该网络接口930通常用于在计算机设备2与其他计算机设备之间建立通信链接。例如,网络接口930用于通过网络将计算机设备2与外部终端相连,在计算机设备2与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯***(GlobalSystem of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code DivisionMultiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图9仅示出了具有部件910-930的计算机设备,但是应该理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器910中的适应多***版本的音频适配方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器920)所执行,以完成本申请实施例。
实施例四
本申请还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的适应多***版本的音频适配方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作***和各类应用软件,例如实施例中适应多***版本的音频适配方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
需要说明的是,以上仅为本申请的优选实施例,并非因此限制本申请的专利保护范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (12)
1.一种适应多***版本的音频适配方法,其特征在于,所述方法包括:
获取***直播录制工具提供的第i批音频数据,i为正整数;
至少基于所述第i批音频数据得到相应的第一数据片段和第二数据片段:
当i=1时,将所述第一批音频数据切分为第一个第一数据片段和第一个第二数据片段,其中,所述第一个第一数据片段的数据量为所述第一批音频数据提供的最大整数倍的切片数据量,所述第一个第二数据片段为所述第一批音频数据中除所述第一个第一数据片段之外剩余的数据片段;将所述第一个第一数据片段发送至下一个音频处理模块;及将所述第一个第二数据片段暂存至音频缓冲区;
当i≥2时,基于i-1批音频数据剩余的第i-1个第二音频片段和所述第i批音频数据形成第i个第一数据片段和第i个第二数据片段,其中,所述第i个第一数据片段的数据量为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据提供的最大整数倍的切片数据量,所述第i个第二个数据片段为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据中除所述第i个第一数据片段之外剩余的数据片段;将所述第i个第一数据片段发送至所述下一个音频处理模块;及将所述第i个第二数据片段暂存至所述音频缓冲区;
其中,所述切片数据量为能进行立即混音或者送往编码器进行编码的值。
2.根据权利要求1所述的适应多***版本的音频适配方法,其特征在于,还包括:
确定音频的时间戳,其中,所述音频的时间戳等于主时间戳减去暂存数据时间戳;其中,所述主时间戳为第1批至第i批音频数据的时间戳增量总和,所述暂存数据时间戳为所述第i个第二数据片段对应的时间戳增量。
3.根据权利要求1所述的适应多***版本的音频适配方法,其特征在于,还包括:
通过多个任务处理所述第i批音频数据,其中,每个任务对应一个处理操作;及
将所述多个任务放入到串行队列中,以对所述第i批音频数据执行异步处理操作。
4.根据权利要求3所述的适应多***版本的音频适配方法,其特征在于,还包括:
调高所述串行队列的优先级。
5.根据权利要求1所述的适应多***版本的音频适配方法,其特征在于,还包括:
获取所述第i批音频数据的数据格式;及
如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换。
6.根据权利要求5所述的适应多***版本的音频适配方法,其特征在于,所述数据格式包括大小端;
如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换,包括:
如果所述大小端不是预设大小端,则将第i个第一数据片段中的第j位数据和第j+1位数据进行置换操作,j为正整数。
7.根据权利要求5所述的适应多***版本的音频适配方法,其特征在于,所述数据格式包括声道数;
如果所述数据格式不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换,包括:
如果所述数据格式为单声道且所述预设数据格式为双声道,则对所述第i个第一数据片段进行声道数转换:
将所述第i个第一数据片段的第k位数据拷贝到双声道指针的k*2位地址、k*2+2位地址;将所述第i个第一数据片段的第k+1位数据拷贝到双声道指针的k*2+1位地址、k*2+3位地址,k为正整数。
8.根据权利要求5所述的适应多***版本的音频适配方法,其特征在于,所述数据格式包括采样率;
如果所述不是预设数据格式,则对所述第i个第一数据片段进行数据格式的转换,包括:
如果所述采样率不等于预设采样率,则通过fast采样率转换策略对所述第i个第一数据片段进行采样率转换,以得到对应于所述预设采样率的第i个第一数据片段。
9.根据权利要求1~8任意一项所述的适应多***版本的音频适配方法,其特征在于,所述***直播录制工具为IOS***的replayKit。
10.一种适应多***版本的音频适配***,其特征在于,包括:
获取模块,用于获取***直播录制工具提供的第i批音频数据,i为正整数;
处理模块,用于至少基于所述第i批音频数据得到相应的第一数据片段和第二数据片段:
当i=1时,将所述第一批音频数据切分为第一个第一数据片段和第一个第二数据片段,其中,所述第一个第一数据片段的数据量为所述第一批音频数据提供的最大整数倍的切片数据量,所述第一个第二数据片段为所述第一批音频数据中除所述第一个第一数据片段之外剩余的数据片段;将所述第一个第一数据片段发送至下一个音频处理模块;及将所述第一个第二数据片段暂存至音频缓冲区;
当i≥2时,基于i-1批音频数据剩余的第i-1个第二音频片段和所述第i批音频数据形成第i个第一数据片段和第i个第二数据片段,其中,所述第i个第一数据片段的数据量为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据提供的最大整数倍的切片数据量,所述第i个第二个数据片段为所述第i-1个第二数据片段和所述第i批音频数据的总音频数据中除所述第i个第一数据片段之外剩余的数据片段;将所述第i个第一数据片段发送至所述下一个音频处理模块;将所述第i个第二数据片段暂存至音频缓冲区;
其中,所述切片数据量为能进行立即混音或者送往编码器进行编码的值。
11.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求1至9中任一项所述的适应多***版本的音频适配方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求1至9中任一项所述的适应多***版本的音频适配方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010911906.4A CN112437315B (zh) | 2020-09-02 | 2020-09-02 | 适应多***版本的音频适配方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010911906.4A CN112437315B (zh) | 2020-09-02 | 2020-09-02 | 适应多***版本的音频适配方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112437315A CN112437315A (zh) | 2021-03-02 |
CN112437315B true CN112437315B (zh) | 2023-06-27 |
Family
ID=74689976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010911906.4A Active CN112437315B (zh) | 2020-09-02 | 2020-09-02 | 适应多***版本的音频适配方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112437315B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113923065B (zh) * | 2021-09-06 | 2023-11-24 | 贵阳语玩科技有限公司 | 基于聊天室音频的跨版本通信方法、***、介质及服务器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110415723A (zh) * | 2019-07-30 | 2019-11-05 | 广州酷狗计算机科技有限公司 | 音频分段的方法、装置、服务器及计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344887B (zh) * | 2008-06-06 | 2011-09-14 | 网易有道信息技术(北京)有限公司 | 音频搜索方法及装置 |
US9338523B2 (en) * | 2009-12-21 | 2016-05-10 | Echostar Technologies L.L.C. | Audio splitting with codec-enforced frame sizes |
CN102810313B (zh) * | 2011-06-02 | 2014-01-01 | 华为终端有限公司 | 音频解码方法及装置 |
CN108235052A (zh) * | 2018-01-09 | 2018-06-29 | 安徽小马创意科技股份有限公司 | 基于ios可选择多音频通道硬件混音、采集及播放的方法 |
CN110335615B (zh) * | 2019-05-05 | 2021-11-16 | 北京字节跳动网络技术有限公司 | 音频数据的处理方法、装置、电子设备及存储介质 |
-
2020
- 2020-09-02 CN CN202010911906.4A patent/CN112437315B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110415723A (zh) * | 2019-07-30 | 2019-11-05 | 广州酷狗计算机科技有限公司 | 音频分段的方法、装置、服务器及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112437315A (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108989885B (zh) | 视频文件转码***、分割方法、转码方法及装置 | |
US20130117271A1 (en) | Method and Apparatus for Automatically Classifying Application in Mobile Terminal | |
CN110213614B (zh) | 从视频文件中提取关键帧的方法和装置 | |
CN110704202B (zh) | 多媒体录制数据共享方法及终端设备 | |
WO2020248375A1 (zh) | 数据库间数据同步方法、***、计算机设备及存储介质 | |
EP3866481A1 (en) | Audio/video switching method and apparatus, and computer device and readable storage medium | |
CN109963167B (zh) | 音视频处理方法、服务器、装置及存储介质 | |
CN109743757B (zh) | 数据处理方法、装置、无线模组和物联网设备 | |
EP3905596A1 (en) | Internet speed measuring method and device, computer equipment and readable storage medium | |
CN109151505B (zh) | 一种视频转码方法、***、装置及计算机可读存储介质 | |
CN112437315B (zh) | 适应多***版本的音频适配方法及*** | |
CN108491315B (zh) | 页面驻留时长的统计方法、装置及计算机可读存储介质 | |
CN111367916B (zh) | 一种数据存储方法及装置 | |
US20230106217A1 (en) | Web-end video playing method and apparatus, and computer device | |
CN116170632A (zh) | 一种声音补偿方法及装置 | |
CN108234552B (zh) | 一种数据存储方法及装置 | |
CN115269063A (zh) | 进程创建方法、***、设备及介质 | |
CN111651338B (zh) | 日志格式化时间的获取***及其方法 | |
CN111061518B (zh) | 基于驱动节点的数据处理方法、***、终端设备和存储介质 | |
CN114048059A (zh) | 接口的超时时间调整方法、装置、计算机设备及存储介质 | |
CN114143486A (zh) | 视频流同步方法、装置、计算机设备和存储介质 | |
CN112423120A (zh) | 音频时延的检测方法及*** | |
CN111639055B (zh) | 差分包计算方法、装置、设备及存储介质 | |
CN111797158A (zh) | 数据同步***、方法和计算机可读存储介质 | |
CN117270902B (zh) | Ota升级包生成方法和装置、ota升级方法和装置 |
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 |