CN115022442B - 音频故障时间定位方法、电子设备及存储介质 - Google Patents
音频故障时间定位方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115022442B CN115022442B CN202111540680.2A CN202111540680A CN115022442B CN 115022442 B CN115022442 B CN 115022442B CN 202111540680 A CN202111540680 A CN 202111540680A CN 115022442 B CN115022442 B CN 115022442B
- Authority
- CN
- China
- Prior art keywords
- audio
- file
- pcm
- audio data
- pcm file
- 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
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/24—Arrangements for testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24573—Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04R—LOUDSPEAKERS, MICROPHONES, GRAMOPHONE PICK-UPS OR LIKE ACOUSTIC ELECTROMECHANICAL TRANSDUCERS; DEAF-AID SETS; PUBLIC ADDRESS SYSTEMS
- H04R29/00—Monitoring arrangements; Testing arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Health & Medical Sciences (AREA)
- Otolaryngology (AREA)
- Acoustics & Sound (AREA)
- General Health & Medical Sciences (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Telephone Function (AREA)
Abstract
本申请提供了一种音频故障时间定位方法、电子设备及存储介质。该音频故障时间定位方法包括:第一电子设备在播放音频数据过程中将音频数据存储在PCM文件中,该PCM文件的属性值中包括文件创建时间。第二电子设备对第一电子设备中存储的PCM文件进行解析,确定第一音频故障在该PCM文件中发生的相对时间,并根据该相对时间和文件创建时间,确定第一音频故障发生的绝对时间。第一电子设备可以是手机,第二电子设备可以是个人计算机。这样,维修人员或研发人员可以根据音频故障发生的具体时间点,获取相应时间点的第一电子设备日志,进而可以结合该日志对音频故障进行快速有效地定位,加快音频故障的解决速度,提升用户体验。
Description
技术领域
本申请涉及智能终端领域,尤其涉及一种音频故障时间定位方法、电子设备及存储介质。
背景技术
智能终端(如手机)在进行音频播放的过程中,可能会出现故障,例如产生POP音、杂音等。其中,POP音是指音频器件在上电、断电瞬间以及上电稳定后,各种操作带来的瞬态冲击所产生的***声。杂音可能是电流音、金属音、背景噪声等。
为了方便进行音频故障定位,通常会将音频播放过程中与各处理环节对应的音频数据写入PCM(Pulse Code Modulation,脉冲编码调制)文件中存储。其中,PCM文件中存储的是模拟音频信号经模数转换直接形成的二进制序列。但是,当维修人员或研发人员解析PCM文件进行音频故障定位时,无法确认音频故障发生的具体时间点,进而无法进行快速有效地音频故障定位。
发明内容
为了解决上述技术问题,本申请提供一种音频故障时间定位方法、电子设备及存储介质,该方法可确定音频故障发生的具体时间点,加快音频故障的解决速度,提升用户体验。
第一方面,本申请提供一种音频故障时间定位方法。该方法包括:第二电子设备(如个人计算机)获取第一电子设备(如手机)中存储的PCM文件;其中,PCM文件中包括第一电子设备在播放音频数据过程中存储的音频数据,且PCM文件的属性值中包括文件创建时间;第二电子设备通过解析PCM文件,确定第一音频故障在PCM文件中发生的相对时间;第二电子设备根据相对时间和文件创建时间,确定第一音频故障发生的绝对时间。这样,维修人员或研发人员可以根据音频故障发生的具体时间点,获取相应时间点的第一电子设备日志,进而可以结合该日志对音频故障进行快速有效地定位,加快音频故障的解决速度,提升用户体验。
在一种应用场景中,第一电子设备为用户报修的存在音频故障的电子设备。在另一种应用场景中,第一电子设备为需要进行质量检测的电子设备。
示例性的,PCM文件的“创建时间”属性的属性值中存储其文件创建时间。
根据第一方面,相对时间为第i秒到第j秒;文件创建时间为t0时刻;第二电子设备根据相对时间和文件创建时间,确定第一音频故障发生的绝对时间,包括:第二电子设备将第一音频故障发生的绝对时间确定为(t0时刻+i秒)到(t0时刻+j秒)。
根据第一方面,或者以上第一方面的任意一种实现方式,PCM文件的文件名中包括文件创建时间。这样,PCM文件的文件创建时间易读性较强。
根据第一方面,或者以上第一方面的任意一种实现方式,音频故障至少包括下述之一:POP音故障、杂音故障。
根据第一方面,或者以上第一方面的任意一种实现方式,在第二电子设备确定音频故障发生的绝对时间之后,还包括:第二电子设备获取与音频故障发生的绝对时间对应的第一电子设备日志;第二电子设备结合第一电子设备日志进行音频故障定位。
第二方面,本申请提供一种音频数据存储方法。该方法,包括:在电子设备播放音频数据的过程中,电子设备获取第一音频数据;电子设备对第一音频数据进行处理,得到第二音频数据;其中,第二音频数据用于进行音频播放;电子设备确定与第二音频数据对应的第一PCM文件,并将第二音频数据写入第一PCM文件中;其中,第一PCM文件的属性值中包括文件创建时间。这样,在电子设备播放音频过程中存储音频数据的PCM文件是携带文件创建时间的,进而可以根据音频故障在PCM文件中的相对时间以及该PCM文件的创建时间,确定音频故障发生的具体时间点,以使维修人员或研发人员可以根据音频故障发生的具体时间点,获取相应时间点的第一电子设备日志,并结合该日志对音频故障进行快速有效地定位。
其中,与第二音频数据对应的第一PCM文件,指的是用于存储第二音频数据的第一PCM文件。示例性的,电子设备为手机。
其中,电子设备对第一音频数据进行的处理,可以是读取处理,也可以是重采样处理、混音处理以及音效处理等中的一项或多项。因此,第一音频数据和第二音频数据可以是相同的,也可以是不同的。第一音频数据和第二音频数据可以是电子设备进行音频播放过程中涉及的任一环节中的音频数据。
第二音频数据用于进行音频播放,可以是电子设备直接播放第二音数据,也可以是电子设备播放处理第二音频数据后得到的音频数据。
示例性的,第一音频数据可以是媒体播放应用下发的音频数据,也可以是重采样与混音处理后的音频数据。
又示例性的,第二音频数据可以是重采样和/或混音处理后的音频数据,也可以是音效处理后的音频数据。
根据第二方面,该音频数据存储方法,还包括:电子设备确定与第一音频数据对应的第二PCM文件,并将第一音频数据写入第二PCM文件中。其中,与第一音频数据对应的第二PCM文件,指的是用于存储第一音频数据的第二PCM文件。这样,电子设备进行音频播放过程中涉及的任一环节中的音频数据都被写入相应的PCM文件中,进而可以确定各环节中音频故障发生的具体时间点。
根据第二方面,或者以上第二方面的任意一种实现方式,PCM文件的文件名中包括文件创建时间。这样,PCM文件的文件创建时间易读性较强。
根据第二方面,或者以上第二方面的任意一种实现方式,电子设备确定与第二音频数据对应的第一PCM文件,包括:电子设备根据第二音频数据的来源,判断是否存在与第二音频数据对应的第一PCM文件;若否,则电子设备创建新的PCM文件,作为与第二音频数据对应的第一PCM文件。
类似的,电子设备确定与第一音频数据对应的第二PCM文件,包括:电子设备根据第一音频数据的来源,判断是否存在与第一音频数据对应的第二PCM文件;若否,则电子设备创建新的PCM文件,作为与第一音频数据对应的第二PCM文件。
根据第二方面,或者以上第二方面的任意一种实现方式,电子设备创建新的PCM文件,作为与第二音频数据对应的第一PCM文件,包括:电子设备确定第一字符串;其中,第一字符串用于表示第二音频数据的来源;电子设备获取***当前时间,并拼接第一字符串和***当前时间,得到第二字符串;电子设备根据第二字符串,创建新的PCM文件,作为与第二音频数据对应的第一PCM文件。这样,电子设备可以将文件创建时间添加至PCM文件名中,提高PCM文件的文件创建时间的易读性。
类似的,电子设备创建新的PCM文件,作为与第一音频数据对应的第二PCM文件,包括:电子设备确定第一字符串;其中,第一字符串用于表示第一音频数据的来源;电子设备获取***当前时间,并拼接第一字符串和***当前时间,得到第二字符串;电子设备根据第二字符串,创建新的PCM文件,作为与第一音频数据对应的第二PCM文件。
根据第二方面,或者以上第二方面的任意一种实现方式,该音频数据存储方法还包括:电子设备获取第二音频数据名称和与第二音频数据名称对应的ID;电子设备根据第二音频数据的来源,判断是否存在与第二音频数据对应的第一PCM文件,包括:电子设备判断是否存在目标PCM文件,其中,目标PCM文件的文件名中包括第二音频数据名称和与第二音频数据名称对应的ID的拼接字符串;电子设备确定第一字符串,包括:电子设备拼接第二音频数据名称和与第二音频数据名称对应的ID,得到第一字符串。
类似的,该音频数据存储方法还包括:电子设备获取第一音频数据名称和与第一音频数据名称对应的ID;电子设备根据第一音频数据的来源,判断是否存在与第一音频数据对应的第二PCM文件,包括:电子设备判断是否存在目标PCM文件,其中,目标PCM文件的文件名中包括第一音频数据名称和与第一音频数据名称对应的ID的拼接字符串;电子设备确定第一字符串,包括:电子设备拼接第一音频数据名称和与第一音频数据名称对应的ID,得到第一字符串。
根据第二方面,或者以上第二方面的任意一种实现方式,第一音频数据或第二音频数据的来源至少包括下述之一:媒体播放应用下发的音频数据、重采样与混音处理后的音频数据、音效处理后的音频数据。
根据第二方面,或者以上第二方面的任意一种实现方式,在电子设备播放音频数据之前,还包括:电子设备响应于接收到的第一操作,对电子设备进行ROOT处理;电子设备响应于接收到的第二操作,开启电子设备音频权限中的PCM文件存储功能。这样,只有在电子设备被ROOT且其PCM文件存储功能被开启后,电子设备播放音频数据过程中才会进行音频数据存储,以便于研发人员或售后人员基于电子设备中存储的PCM文件定位音频故障问题。
第三方面,本申请提供一种音频数据存储方法。该方法包括:在电子设备播放音频数据的过程中,电子设备获取媒体播放应用下发的第一音频数据;电子设备确定与第一音频数据对应的第一PCM文件,并将第一音频数据写入第一PCM文件中;其中,第一PCM文件的属性值中包括第一PCM文件的文件创建时间;电子设备对第一音频数据进行重采样和/或混音处理,得到第二音频数据;电子设备确定与第二音频数据对应的第二PCM文件,并将第二音频数据写入第二PCM文件中;其中,第二PCM文件的属性值中包括第二PCM文件的文件创建时间;电子设备对第二音频数据进行音效处理,得到第三音频数据;电子设备确定与第三音频数据对应的第三PCM文件,将第三音频数据写入第三PCM文件中;其中,第三PCM文件的属性值中包括第三PCM文件的文件创建时间。这样,在电子设备播放音频过程中各环节存储音频数据的PCM文件是携带文件创建时间的,进而可以根据音频故障在PCM文件中的相对时间以及该PCM文件的创建时间,确定音频故障发生的具体时间点,以使维修人员或研发人员可以根据音频故障发生的具体时间点,获取相应时间点的第一电子设备日志,并结合该日志对音频故障进行快速有效地定位。
第四方面,本申请提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行第一方面以及第一方面中任意一项的音频故障时间定位方法。
第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第五方面,本申请提供一种电子设备。该电子设备包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中一个或多个计算机程序存储在存储器上,当计算机程序被一个或多个处理器执行时,使得电子设备执行第二方面以及第二方面中任意一项的音频数据存储方法,或者使得电子设备执行第三方面以及第三方面中任意一项的音频数据存储方法。
第五方面以及第五方面的任意一种实现方式分别与第二方面以及第二方面的任意一种实现方式相对应,或者分别与第三方面以及第三方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第六方面,本申请提供了一种计算机可读介质,该计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得电子设备执行第一方面以及第一方面中任意一项的音频故障时间定位方法,或者使得电子设备执行第二方面以及第二方面中任意一项的音频数据存储方法,或者使得电子设备执行第三方面以及第三方面中任意一项的音频数据存储方法。
第六方面以及第六方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应,或者分别与第二方面以及第二方面的任意一种实现方式相对应,或者分别与第三方面以及第三方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,或者可参见上述第二方面以及第二方面的任意一种实现方式所对应的技术效果,或者可参见上述第三方面以及第三方面的任意一种实现方式所对应的技术效果,此处不再赘述。
附图说明
图1为示例性示出的一种应用场景示意图;
图2为示例性示出的电子设备的硬件结构示意图;
图3为示例性示出的电子设备的软件结构示意图;
图4为本申请实施例提供的模块交互示意图;
图5为本申请实施例提供的音频数据存储至PCM文件的流程示意图;
图6为本申请实施例提供的音频故障时间定位方法的流程示意图;
图7为示例性示出的一种PCM文件解析示意图;
图8为示例性示出的另一种PCM文件解析示意图;
图9为示例性示出的一种装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个***是指两个或两个以上的***。
在一种应用场景中,用户使用电子设备(如手机)进行音频播放时,可能会出现POP音、杂音等故障。此时,用户可以通过换机等方式将存在音频故障的电子设备投递至研发人员或售后人员处进行故障分析及处理。如图1所示,研发人员或售后人员可通过ROOT软件对存在音频故障的手机进行ROOT处理。示例性的,在获取到ROOT权限后,研发人员或售后人员可以开启音频权限中的PCM文件存储功能,参照图1。
当手机的PCM文件存储功能被开启后,在手机播放音频数据的过程中,各个环节处理后的音频数据都会存储至相应的PCM文件中。其中,在手机播放音频数据时,音频播放器读取媒体播放应用下发的音频数据,并将读取到的音频数据发送至重采样及混音模块;重采样及混音模块对接收的音频数据进行重采样和/或混音处理,并将处理后的音频数据发送至音效处理模块;音效处理模块对接收到的音频数据进行音效处理,并将处理后的音频数据发送至音频硬件抽象层进行播放。
示例性的,在手机播放音频数据的过程中,媒体播放应用下发的音频数据会保存至PCM文件1中。例如,PCM文件1的名称为“记录应用下发的音频数据”。后续,重采样与混音处理过的音频数据会保存至PCM文件2中。例如,PCM文件2的名称为“记录重采样与混音处理后的音频数据”。再接着,音效处理过的音频数据会保存至PCM文件3中。例如,PCM文件3的名称为“音效处理后的音频数据”。
由此,研发人员或售后人员在进行音频故障复现后,即可根据手机存储的这些PCM文件中记录的音频数据进行音频故障分析。示例性的,研发人员或售后人员可以通过专业软件解析这些PCM文件以定位音频故障问题,如确认是哪个环节出现故障才导致手机音频异常。
在另一种可能的应用场景中,用户使用电子设备(如手机)进行音频播放时,可能会出现POP音、杂音等故障。此时,用户可以开启手机音频权限中的PCM文件存储功能,以存储在手机异常播放音频数据的过程中各个环节处理后的音频数据。进而,用户通过换机的方式将该手机投递至研发人员或售后人员处进行故障处理时,研发人员或售后人员可以直接根据手机中存储的这些PCM文件进行音频故障分析,无需再进行音频故障复现。在此种应用场景中,在普通用户权限下,手机音频权限中的PCM文件存储功能就可以被开启或关闭。因此,用户可以自主选择是否开启手机音频权限中的PCM文件存储功能。其中,为了节省手机的存储空间,手机音频权限中的PCM文件存储功能默认为关闭状态。
然而,研发人员或售后人员无法根据手机中存储的这些PCM文件直接确认音频异常发生的具体时间点,进而无法快速有效地进行音频故障定位,也就无法快速解决用户问题,尽早将手机交还给用户使用。
图2示出了电子设备100的结构示意图。可选地,电子设备100可以为终端,也可以称为终端设备,终端可以为蜂窝电话(cellular phone)或平板电脑(pad)等设备,本申请不做限定。需要说明的是,电子设备100的结构示意图可以适用于图1中的手机。应该理解的是,图2所示电子设备100仅是电子设备的一个范例,并且电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图2中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110可以包括一个或多个接口,如PCM接口,通用串行总线(universal serial bus,USB)接口等。PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。显示屏194用于显示图像,视频等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。摄像头193用于捕获静态图像或视频。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理,使得电子设备100实现本申请实施例中的音频数据存储方法。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
压力传感器用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器可以设置于显示屏194。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。
按键190包括开机键,音量键等。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
电子设备100的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android***为例,示例性说明电子设备100的软件结构。
图3是本申请实施例的电子设备100的软件结构框图。
电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为四层,从上至下分别为应用程序层,应用程序框架层,硬件抽象层(hardware abstraction layer,HAL),以及内核层。
应用程序层可以包括一系列应用程序包。
如图3所示,应用程序包可以包括媒体播放应用。其中,媒体播放应用可以是任意能够播放音频的应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图3所示,应用程序框架层可以包括音频播放器,重采样及混音模块,音效处理模块,PCM文件存储模块等。
音频播放器用于读取媒体播放应用待播放的音频数据。其中,该音频数据可以是未解码的音频文件(如MP3文件),也可以是已解码的音频文件(如PCM文件)。例如,音频播放器可以为Media Player,AudioTrack等。
重采样及混音模块用于对媒体播放应用待播放的音频数据进行重采样操作和/或混音操作。其中,重采样及混音模块也可以是由重采样模块和混音模块构成的,由重采样模块对音频数据进行重采样操作,由混音模块对至少两路音频数据进行混音处理。
音效处理模块用于对重采样及混音后的音频数据进行音效处理。例如,音效处理模块可以对音频数据添加杜比音效、重低音音效等。
PCM文件存储模块用于将音频数据写入PCM文件中,如将音频播放器读取的音频数据、重采样及混音模块处理过的音频数据以及音效处理模块处理过的音频数据分别写入相应的PCM文件中。
HAL层为位于操作***内核与硬件电路之间的接口层。HAL层包括但不限于:音频硬件抽象层(音频HAL)。其中,音频HAL用于对音频数据进行处理,例如,对音频数据进行降噪、定向增强等处理。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。其中,音频驱动用于驱动音频播放硬件,如扬声器、受话器等。
可以理解的是,图3示出的软件结构中的层以及各层中包含的部件,并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的层,以及每个层中可以包括更多或更少的部件,本申请不做限定。
可以理解的是,电子设备为了实现本申请中的音频数据存储方法,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供一种音频数据存储方法。具体的,当电子设备(如手机)的PCM文件存储功能被开启后,在电子设备播放音频数据的过程中,各个环节处理后的音频数据都会存储至相应的PCM文件中。其中,每个PCM文件的属性值中包括文件创建时间,文件创建时间可以以时间戳的形式表示。示例性的,每个PCM文件的“创建时间”属性的属性值中存储文件创建时间。再示例性的,每个PCM文件的文件名中包括文件创建时间,如将其创建时间戳添加在其文件名中。创建时间戳,指的是与PCM文件创建时刻对应的时间戳,例如“1104212941397”,该时间戳表示11月4日21点29分41秒397毫秒。
由此,根据PCM文件的创建时间戳,以及音频故障(如POP音、杂音等)在该PCM文件中出现的相对时间(如第i秒至第j秒(i<j)),即可计算出音频故障发生的具体时间(也可以称之为绝对时间)。进而,研发人员或售后人员可以结合在该具体时间内的电子设备日志,快速有效地进行音频故障定位,以快速解决用户问题,尽早将手机交还给用户使用。
下述以电子设备为手机为例,对媒体播放应用(如音乐播放应用)播放音频数据的过程中,各个环节处理后的音频数据写入PCM文件的流程进行解释说明。
如图4所示为电子设备的各模块的一种交互示意图。参照图4,与本申请提供的音频数据存储方法对应的音频数据播放流程,具体包括:
S401,响应于接收到的用户操作,媒体播放应用创建音频播放器。
用户操作,指的是用户触发的用于指示媒体播放应用进行音频播放的操作。示例性的,用户操作可以是指点击媒体播放应用显示界面中播放按键的操作。
响应于接收到的用户操作,媒体播放应用根据待播放音频的文件类型在应用程序框架层中创建匹配类型的音频播放器。示例性的,若待播放音频为未解码的音频文件,例如可以是MP3、WAV等文件,则媒体播放应用在应用程序框架层中创建的音频播放器为MediaPlayer。再示例性的,若待播放音频为已解码的音频文件,例如可以是PCM文件,则媒体播放应用在应用程序框架层中创建的音频播放器为AudioTrack。如果媒体播放应用创建的音频播放器为AudioTrack,媒体播放应用还需一并指定音频数据的播放参数,如采样率、通道数、位宽等。
需要指出的是,在媒体播放应用的音频播放完成时,或者在媒体播放应用退出时,媒体播放应用本次创建的音频播放器会被销毁。当响应于接收到的用户操作,媒体播放应用需要再次进行音频播放时,会重新创建音频播放器。
其中,不同媒体播放应用创建的音频播放器,或者,同一个媒体播放应用在不同时刻创建的音频播放器,可以通过身份标识(ID)进行区分。不同媒体播放应用创建的多个音频播放器是可以同时存在的。可选的,音频播放器的ID按照创建时间先后进行顺序编号。示例性的,在媒体播放应用需要创建音频播放器时,媒体播放应用根据当前缓存的音频播放器ID确定其要创建的音频播放器的ID,并根据该ID创建音频播放器。例如,若当前缓存的音频播放器ID为1至n,则媒体播放应用将其要创建的音频播放器的ID确定为n+1。再例如,若当前不存在缓存的音频播放器ID,则媒体播放应用可以将其要创建的音频播放器的ID确定为1。
S402,音频播放器读取媒体播放应用的待播放音频数据,并调用PCM文件存储模块将该待播放音频数据写入PCM文件1,PCM文件1标记为“记录应用下发的音频数据”的PCM文件。
在媒体播放应用创建完成音频播放器之后,媒体播放应用可以将待播放音频数据所对应的音频文件的存储地址,例如可以是URL(Uniform Resource Locator,统一资源***)或者媒体播放应用中的数据存储路径等,发送给音频播放器。音频播放器根据该读取地址读取媒体播放应用的待播放音频数据,并调用PCM文件存储模块将其读取到的音频流写入PCM文件1。
音频播放器可以通过文件写入调用函数(如FileWrite函数)调用PCM文件存储模块完成音频数据写入PCM文件的操作。示例性的,文件写入函数的参数可以包括但不限于:音频数据名称,ID,以及待存储的音频数据。
在本实施例中,当音频播放器调用PCM文件存储模块执行音频数据写入PCM文件的操作时,文件写入函数的参数可以包括:音频数据名称为“记录应用下发的音频数据”,如PCM_FROM_APP;ID为音频播放器的ID;待存储的音频数据即为音频播放器读取到的媒体播放应用的待播放音频数据。其中,“记录应用下发的音频数据”仅仅是对存储音频播放器读取应用下发的音频数据环节中的音频数据的示例性表达,本实施例对此不做限定。
在本实施例中,PCM文件存储模块响应于音频播放器的调用,可以执行如图5所示的数据写入流程。参照图5,本实施例提供的PCM文件存储模块存储音频播放器读取应用下发的音频数据环节中的音频数据的流程,具体包括:
S501,PCM文件存储模块获取文件写入调用函数中的音频数据名称和ID。
PCM文件存储模块在被音频播放器调用时,PCM文件存储模块获取到的音频数据名称为“记录应用下发的音频数据(如PCM_FROM_APP)”,PCM文件存储模块获取到的ID为音频播放器的ID。
S502,PCM文件存储模块拼接音频数据名称和ID,确定第一字符串。
假设,音频播放器的ID为1,则PCM文件存储模块拼接音频数据名称和ID,可以得到音频数据名称“PCM_FROM_APP”和ID“1”的拼接字符串,作为第一字符串。其中,第一字符串用于表示待存储的音频数据的来源。本实施例对拼接字符不做具体限定,例如可以是“_”、“&”等。示例性的,该拼接字符串可以为“PCM_FROM_APP_1”。
S503,PCM文件存储模块判断是否已创建文件名中包含第一字符串的PCM文件,若否,则执行S504,若是,则执行S506。
在本实施例中,PCM文件的文件名中除了包括音频数据名称和ID的拼接字符串,还包括PCM文件的创建时间戳。其中,音频数据名称和ID的拼接字符串用于指示PCM文件中存储的音频数据的来源;创建时间戳用于指示PCM文件的创建时间。
示例性的,在音频播放器读取应用下发的音频数据环节中创建的PCM文件,其文件名可以为:PCM_FROM_APP_1_1104212941397.pcm。其中,“PCM_FROM_APP_1”为音频数据名称和ID的拼接字符串,用于指示该PCM文件中存储的音频数据为媒体播放应用下发的音频数据,且对应的音频播放器ID为1;“1104212941397”为该PCM文件的创建时间戳,用于指示该PCM文件的创建时间,具体表示该PCM文件的创建时间为11月4日21点29分41秒397毫秒。其中,“1104212941397”仅仅是时间戳的示例性表达,本实施例对时间戳的表达形式不做限定。
PCM文件存储模块判断在***中是否已创建文件名包含第一字符串的PCM文件,如判断是否已创建文件名包含字符串“PCM_FROM_APP_1”的PCM文件。例如,若***中已存在文件名为“PCM_FROM_APP_1_1104212941397.pcm”的PCM文件,则PCM文件存储模块判断出在***中已创建文件名包含第一字符串“PCM_FROM_APP_1”的PCM文件。此时,PCM文件存储模块可以将音频播放器待存储的音频数据直接写入到文件名为“PCM_FROM_APP_1_1104212941397.pcm”的PCM文件中。
PCM文件存储模块如果判断出在***中未创建文件名包含该字符串的PCM文件,如未创建文件名包含字符串“PCM_FROM_APP_1”的PCM文件,则PCM文件存储模块此时需要创建文件名包含字符串“PCM_FROM_APP_1”的PCM文件。
S504,PCM文件存储模块获取***当前时间,并拼接第一字符串和***当前时间,得到第二字符串。
PCM文件存储模块在需要创建文件名包含第一字符串的PCM文件时,获取***当前时间并将当前时间与第一字符串进行拼接中,如将与当前时间对应的时间戳拼接在第一字符串后,得到第二字符串。
如果PCM文件存储模块判断出在***中未创建文件名包含第一字符串“PCM_FROM_APP_1”的PCM文件,则PCM文件存储模块获取***当前时间,并将当前时间对应的时间戳“1104221001258”拼接在第一字符串后,得到第二字符串。本实施例对拼接字符不做具体限定,例如可以是“_”、“&”等。示例性的,拼接时间戳后的第二字符串可以为“PCM_FROM_APP_1_1104221001258”。
S505,PCM文件存储模块根据第二字符串创建PCM文件。
示例性的,PCM文件存储模块在第二字符串后拼接PCM文件后缀确定文件名,并根据该文件名创建PCM文件。
PCM文件存储模块在第二字符串后拼接PCM文件后缀“.pcm”,即可得到PCM文件的文件名。例如,拼接时间戳后的字符串为“PCM_FROM_APP_1_1104221001258”,则PCM文件存储模块在第二字符串后拼接PCM文件后缀“.pcm”,即可得到PCM文件的文件名“PCM_FROM_APP_1_1104221001258.pcm”。
在确定PCM文件的文件名之后,PCM文件存储模块随即按照该文件名创建PCM文件。示例性的,在该PCM文件创建完成后,***中此时存在文件名“PCM_FROM_APP_1_1104221001258.pcm”的PCM文件,也即在***中已创建文件名包含拼接字符串“PCM_FROM_APP_1”的PCM文件。进而,PCM文件存储模块可以将待存储的音频数据写入该PCM文件中,也即写入文件名包含字符串“PCM_FROM_APP_1”的PCM文件中。
S506,PCM文件存储模块将待存储的音频数据写入对应的PCM文件中。
在本步骤中,写入音频数据的PCM文件,指的是文件名中包含音频数据名称和ID的拼接字符串的PCM文件。如果PCM文件存储模块判断出***中已存在该PCM文件,则直接将待存储的音频数据写入该PCM文件中。如果PCM文件存储模块判断出***中未存在该PCM文件,则会在新建对应的PCM文件后,再将待存储的音频数据写入该PCM文件中。
需要注意的是,每当任意一个媒体播放应用创建一个音频播放器,PCM文件存储模块就会创建一个与该音频播放器对应的PCM文件,用于存储该音频播放器读取到的媒体播放应用下发的音频数据。示例性的,媒体播放应用播放音频的过程中,在音频播放器读取应用下发的音频数据环节中创建的PCM文件的文件名可以记录为“PCM_FROM_APP_ID_创建时间戳.pcm”。
电子设备(如个人计算机)可以按照PCM文件的存储地址从手机中导出文件名中包括字符串“PCM_FROM_APP”的PCM文件,也即导出在音频播放器读取应用下发的音频数据环节中创建的PCM文件。进而,电子设备通过专业软件对这些PCM文件进行解析,判断这些PCM文件中是否存在音频故障,如POP音、杂音等。
如果任意一个PCM文件中存在音频故障,则电子设备不仅可以获取音频故障在该PCM文件中出现的相对时间(如第i秒至第j秒(i<j)),还可以根据该PCM文件的文件名获取该PCM文件的创建时间。由此,电子设备可以根据该PCM文件的创建时间,以及音频故障在该PCM文件中出现的相对时间,计算得到音频故障发生的绝对时间。也即,在该PCM文件创建时间的基础上,累加音频故障在该PCM文件中出现的相对时间,即可得到音频故障发生的绝对时间。
示例性的,PCM文件的创建时间对应的时间戳为“1104221001258”,音频故障在该PCM文件中出现的相对时间为第3秒到第5秒,则音频故障发生的绝对时间为由时间戳“1104221004258”至时间戳“1104221006258”之间的时间段,也即11月4日22点10分4秒258毫秒至11月4日22点10分6秒258毫秒之间的时间段。进而,电子设备可以按照音频故障发生的绝对时间导出相应时间段内的手机日志,以便于研发人员或售后人员结合手机日志对音频播放器读取应用下发的音频数据环节中的手机音频故障进行快速有效地定位,尽早解决用户问题。
S403,音频播放器将读取到的媒体播放应用的待播放音频数据,发送至重采样及混音模块。
本实施例对S402和S402的时序不做限定。
S404,重采样及混音模块对接收到的音频数据进行重采样处理和/或混音处理,并调用PCM文件存储模块将其输出的音频数据写入PCM文件2,PCM文件2标记为“记录重采样与混音处理后的音频数据”的PCM文件。
在响应于接收到的用户操作,媒体播放应用创建音频播放器时,***应用程序框架层中的线程管理服务会创建一个音频播放线程,用于播放音频数据。其中,音频播放器、重采样及混音模块和音效处理模块都会运行在该音频播放线程上。
需要指出的是,该音频播放线程在创建时,会与音频HAL的一个输出(OUTPUT)绑定。在该音频播放线程与音频HAL的某个OUTPUT绑定后,允许在该音频播放线程上播放的音频数据的采样率也就确定了,也即是与该OUTPUT匹配的采样率。示例性的,若该音频播放线程绑定的音频HAL OUTPUT的编号为29,则仅允许在该音频播放线程上播放采样率为48000的音频数据,不允许在该音频播放线程上播放其他采样率的音频数据。当重采样及混音模块和音效处理模块都会运行在该音频播放线程上之后,重采样及混音模块和音效处理模块均可以获取到该音频播放线程绑定的音频HAL OUTPUT的编号。
在本步骤中,重采样及混音模块根据实际情况对接收到的音频数据进行相应的处理,可以是单独的重采样处理或单独的混音处理,可以是既重采样处理又混音处理,还可以是不做任何处理。
示例性的,若重采样及混音模块接收到的仅是一个音频播放器发送的音频数据,则重采样及混音模块根据该音频数据的采样率判断是否需要对该音频数据进行重采样处理。若该音频数据的采样率与音频播放线程允许的采样率不符,则重采样及混音模块需要对该音频数据进行重采样处理,否则不需要对该音频线程进行重采样处理。
又示例性的,若重采样及混音模块接收到的是同时存在的至少两个音频播放器(分别由不同的媒体播放应用创建的音频播放器)发送的音频数据,则重采样及混音模块不仅需要根据音频数据的采样率与音频播放线程允许的采样率是否相符,来判断是否需要对该音频数据进行重采样处理,还需要对这至少两个音频播放器发送的音频数据进行混音处理。
重采样及混音模块调用PCM文件存储模块将其输出的音频数据写入PCM文件2。
需要指出的是,由于重采样及混音模块是按照实际情况对接收到的音频数据进行相应的处理,故重采样及混音模块输出的音频数据可以是重采样处理和/或混音处理后的音频数据,也可以是被重采样及混音模块透传的音频数据。
类似的,重采样及混音模块可以通过文件写入调用函数(如FileWrite函数)调用PCM文件存储模块完成音频数据写入PCM文件的操作。示例性的,文件写入函数的参数可以包括但不限于:音频数据名称,ID,以及待存储的音频数据。
在本实施例中,当重采样及混音模块调用PCM文件存储模块执行音频数据写入PCM文件的操作时,文件写入函数的参数可以包括:音频数据名称为“记录重采样与混音处理后的音频数据”,如PCM_AFTER_MIX;ID为与音频播放线程绑定的音频HAL OUTPUT的编号;待存储的音频数据即为重采样及混音模块输出的音频数据。其中,“记录重采样与混音处理后的音频数据”仅仅是对存储音频重采样及混音环节中的音频数据的示例性表达,本实施例对此不做限定。
在本实施例中,PCM文件存储模块响应于重采样及混音模块的调用,可以执行如图5所示的数据写入流程。参照图5,本实施例提供的PCM文件存储模块存储音频重采样及混音环节中的音频数据的流程,依旧包括如S501~S506所述的步骤,在此不再赘述。
PCM文件存储模块在被重采样及混音模块调用时,PCM文件存储模块获取到的音频数据名称为“记录重采样与混音处理后的音频数据(如PCM_AFTER_MIX)”,PCM文件存储模块获取到的ID为与音频播放线程绑定的音频HAL OUTPUT的编号。
假设,音频播放线程绑定的音频HAL OUTPUT的编号为29,则PCM文件存储模块拼接音频数据名称和ID,可以得到音频数据名称“PCM_AFTER_MIX”和ID“29”的拼接字符串。本实施例对拼接字符不做具体限定,例如可以是“_”、“&”等。示例性的,该拼接字符串可以为“PCM_AFTER_MIX_29”。
示例性的,在音频重采样及混音环节中创建的PCM文件,其文件名可以为:PCM_AFTER_MIX_29_1104212942348.pcm。其中,“PCM_AFTER_MIX_29”为音频数据名称和ID的拼接字符串,用于指示该PCM文件中存储的音频数据为重采样及混音模块输出的音频数据,且与音频播放线程绑定的音频HAL OUTPUT的编号为29;“1104212942348”为该PCM文件的创建时间戳,用于指示该PCM文件的创建时间,具体表示该PCM文件的创建时间为11月4日21点29分42秒348毫秒。
PCM文件存储模块判断在***中是否已创建文件名包含该字符串的PCM文件,如判断是否已创建文件名包含第一字符串“PCM_AFTER_MIX_29”的PCM文件。例如,若***中已存在文件名为“PCM_AFTER_MIX_29_1104212942348.pcm”的PCM文件,则PCM文件存储模块判断出在***中已创建文件名包含字符串“PCM_AFTER_MIX_29”的PCM文件。此时,PCM文件存储模块可以将音频播放器待存储的音频数据直接写入到文件名为“PCM_AFTER_MIX_29_1104212942348.pcm”的PCM文件中。
PCM文件存储模块如果判断出在***中未创建文件名包含第一字符串的PCM文件,如未创建文件名包含第一字符串“PCM_AFTER_MIX_29”的PCM文件,则PCM文件存储模块此时需要创建文件名包含第一字符串“PCM_AFTER_MIX_29”的PCM文件。PCM文件存储模块在需要创建文件名包含第一字符串“PCM_AFTER_MIX_29”的PCM文件时,获取***当前时间并将当前时间拼接在第一字符串“PCM_AFTER_MIX_29”后,如将与当前时间对应的时间戳“1104221003144”拼接至第一字符串“PCM_AFTER_MI X_29”后,得到第二字符串。进而,PCM文件存储模块可以根据第二字符串创建PCM文件。本实施例对拼接字符不做具体限定,例如可以是“_”、“&”等。示例性的,拼接时间戳后的第二字符串可以为“PCM_AFTER_MIX_29_1104221003144”。
PCM文件存储模块在拼接时间戳后的第二字符串后拼接PCM文件后缀“.pcm”,即可得到PCM文件的文件名。例如,拼接时间戳后的第二字符串为“PCM_AFTER_MI X_29_1104221003144”,则PCM文件存储模块在第二字符串后拼接PCM文件后缀“.pcm”,即可得到PCM文件的文件名“PCM_AFTER_MIX_29_1104221003144.pcm”。
在确定PCM文件的文件名之后,PCM文件存储模块随即按照该文件名创建PCM文件。示例性的,***中此时存在文件名“PCM_AFTER_MIX_29_1104221003144.pcm”的PCM文件,也即在***中已创建文件名包含第一字符串“PCM_AFTER_MIX_29”的PCM文件。进而,PCM文件存储模块可以将待存储的音频数据写入该PCM文件中,也即写入文件名包含第一字符串“PCM_AFTER_MIX_29”的PCM文件中。
需要注意的是,当音频播放线程完成音频播放之后,该音频播放线程会被销毁。因此,在不同时刻创建的多个音频播放线程可能与音频HAL的同一个OUTPUT绑定。进而,针对不同的音频播放线程,如果这些音频播放线程均与音频HAL的同一个OUTPUT绑定,则重采样及混音模块运行在这些音频播放线程中的任意一个音频播放线程上时,其输出的音频数据都会存储在一个相同的PCM文件中。示例性的,假设同时运行的音乐线程和游戏线程均与音频HAL的同一个OUTPUT绑定,则音乐线程上运行的重采样及混音模块输出的音频数据,与游戏线程上运行的重采样及混音模块输出的音频数据,都会存储在同一个PCM文件2中。其中,这个PCM文件的文件名中包括的音频数据名称用于指示“记录重采样与混音处理后的音频数据”,如“PCM_AFTER_MIX”;这个PCM文件的文件名中包括的ID为上述提到的与这些音频播放线程绑定的音频HAL的同一个OUTPUT的编号。示例性的,媒体播放应用播放音频的过程中,在音频重采样及混音环节中创建的PCM文件的文件名可以记录为“PCM_AFTER_MIX_ID_创建时间戳.pcm”。
由于本申请提供的音频数据存储方法应用于维修人员或研发人员对手机进行音频故障定位的场景下,所以通常只会存在一个音频播放线程与音频HAL的同一个OUTPUT绑定的情形。
假设,与音频HAL的同一个OUTPUT绑定的第一音频播放线程和第二音频播放线程是先后创建的,如第二音频播放线程是在第一音频播放线程销毁后创建的。示例性的,在第一音频播放线程销毁后,PCM文件存储模块可以按照与第一音频播放线程绑定的OUTPUT匹配的音频数据处理周期,向与该OUTPUT对应的PCM文件2写入空数据,直至第二音频播放线程创建后与该OUTPUT绑定,以此确保PCM文件2中存储的音频数据相对时间的准确性。
又示例性的,为了区分与同一个OUTPUT绑定的不同音频播放线程对应的PCM文件2,可以将PCM文件2的文件名中的ID设置为OUTPUT的编号和次序号的拼接字符,如29_1。其中,次序号用于标识当前该OUTPUT被绑定的次数序号。此时,当重采样及混音模块调用PCM文件存储模块执行音频数据写入PCM文件的操作时,文件写入函数的参数可以包括:音频数据名称为“记录重采样与混音处理后的音频数据”,如PCM_AFTER_MIX;ID为与音频播放线程绑定的音频HAL OUTPUT的编号和次序号的拼接字符;待存储的音频数据即为重采样及混音模块输出的音频数据。此场景下PCM文件存储模块存储重采样与混音处理后的音频数据的方式与前述相似,在此不再赘述。
再示例性的,为了区分与同一个OUTPUT绑定的不同音频播放线程对应的PCM文件2,还可以在前一个音频播放线程销毁后,将相应的PCM文件2导出至个人计算机。此时,若下一个音频播放线程与该OUTPUT绑定,则当重采样及混音模块调用PCM文件存储模块执行音频数据写入PCM文件的操作时,PCM文件存储模块会创建新的PCM文件2。
电子设备(如个人计算机)可以按照PCM文件的存储地址从手机中导出文件名中包括字符串“PCM_AFTER_MIX”的PCM文件,也即导出在音频重采样及混音环节中创建的PCM文件。电子设备通过专业软件对这些PCM文件进行解析,判断这些PCM文件中是否存在音频故障,如POP音、杂音等。如果任意一个PCM文件中存在音频故障,则电子设备不仅可以获取音频故障在该PCM文件中出现的相对时间(如第i秒至第j秒(i<j)),还可以根据该PCM文件的文件名获取该PCM文件的创建时间。由此,电子设备可以根据该PCM文件的创建时间,以及音频故障在该PCM文件中出现的相对时间,计算得到音频故障发生的绝对时间。也即,在该PCM文件创建时间的基础上,累加音频故障在该PCM文件中出现的相对时间,即可得到音频故障发生的绝对时间。进而,电子设备可以按照音频故障发生的绝对时间导出相应时间段内的手机日志,以便于研发人员或售后人员结合手机日志对音频重采样及混音环节中的手机音频故障进行快速有效地定位,尽早解决用户问题。
S405,重采样及混音模块将其输出的音频数据,发送至音效处理模块。
本实施例对S404和S405的时序不做限定。
S406,音效处理模块对接收到的音频数据进行音效处理,并调用PCM文件存储模块将音效处理过的音频数据写入PCM文件3,PCM文件3标记为“记录音效处理后的音频数据”的PCM文件中。
关于音效处理模块对接收到的音频数据进行音效处理的操作,可以参照现有技术中的音效处理操作,在此不再赘述。
音效处理模块调用PCM文件存储模块将其输出的音频数据写入PCM文件3。类似的,音效处理模块可以通过文件写入调用函数(如FileWrite函数)调用PCM文件存储模块完成音频数据写入PCM文件的操作。示例性的,文件写入函数的参数可以包括但不限于:音频数据名称,ID,以及待存储的音频数据。
在本实施例中,当音效处理模块调用PCM文件存储模块执行音频数据写入PCM文件的操作时,文件写入函数的参数可以包括:音频数据名称为“记录音效处理后的音频数据”,如PCM_AFTER_EFFECT_HANDLE;ID为与音频播放线程绑定的音频HAL OUTPUT的编号;待存储的音频数据即为音效处理模块输出的音频数据。其中,“记录音效处理后的音频数据”仅仅是对存储音频音效处理环节中的音频数据的示例性表达,本实施例对此不做限定。
在本实施例中,PCM文件存储模块响应于音效处理模块的调用,可以执行如图5所示的数据写入流程。参照图5,本实施例提供的PCM文件存储模块存储音频音效处理环节中的音频数据的流程,依旧包括如S501~S506所述的步骤,在此不再赘述。
PCM文件存储模块在被音效处理模块调用时,PCM文件存储模块获取到的音频数据名称为“记录音效处理后的音频数据”(如PCM_AFTER_EFFECT_HANDLE),PCM文件存储模块获取到的ID为与音频播放线程绑定的音频HAL OUTPUT的编号。
假设,音频播放线程绑定的音频HAL OUTPUT的编号为29,则PCM文件存储模块拼接音频数据名称和ID,可以得到音频数据名称“PCM_AFTER_EFFECT_HANDLE”和ID“29”的拼接字符串。本实施例对拼接字符不做具体限定,例如可以是“_”、“&”等。示例性的,该拼接字符串可以为“PCM_AFTER_EFFECT_HANDLE_29”。
示例性的,在音频音效处理环节中创建的PCM文件,其文件名可以为:PCM_AFT ER_EFFECT_HANDLE_29_1104212943125.pcm。其中,“PCM_AFTER_EFFECT_HAN DLE_29”为音频数据名称和ID的拼接字符串,用于指示该PCM文件中存储的音频数据为音效处理模块输出的音频数据,且与音频播放线程绑定的音频HAL OUTPUT的编号为29;“1104212943125”为该PCM文件的创建时间戳,用于指示该PCM文件的创建时间,具体表示该PCM文件的创建时间为11月4日21点29分43秒125毫秒。
PCM文件存储模块判断在***中是否已创建文件名包含该字符串的PCM文件,如判断是否已创建文件名包含第一字符串“PCM_AFTER_EFFECT_HANDLE_29”的PCM文件。例如,若***中已存在文件名为“PCM_AFTER_EFFECT_HANDLE_29_1104212943125.pcm”的PCM文件,则PCM文件存储模块判断出在***中已创建文件名包含第一字符串“PCM_AFTER_EFFECT_HANDLE_29”的PCM文件。此时,PCM文件存储模块可以将音频播放器待存储的音频数据直接写入到文件名为“PCM_AFTER_EFFECT_HANDLE_29_1104212943125.pcm”的PCM文件中。
PCM文件存储模块如果判断出在***中未创建文件名包含第一字符串的PCM文件,如未创建文件名包含第一字符串“PCM_AFTER_EFFECT_HANDLE_29”的PCM文件,则PCM文件存储模块此时需要创建文件名包含第一字符串“PCM_AFTER_EFFECT_HA NDLE_29”的PCM文件。PCM文件存储模块在需要创建文件名包含第一字符串“PCM_AFTER_EFFECT_HANDLE_29”的PCM文件时,获取***当前时间并将当前时间拼接在第一字符串“PCM_AFTER_EFFECT_HANDLE_29”后,如将与当前时间对应的时间戳“1104221004169”拼接在第一字符串“PCM_AFTER_EFFECT_HANDLE_29”后,得到第二字符串。进而,PCM文件存储模块可以根据第二字符串创建PCM文件。本实施例对拼接字符不做具体限定,例如可以是“_”、“&”等。示例性的,拼接时间戳后的第二字符串可以为“PCM_AFTER_EFFECT_HANDLE_29_1104221004169”。
PCM文件存储模块在拼接时间戳后的第二字符串后拼接PCM文件后缀“.pcm”,即可得到PCM文件的文件名。例如,拼接时间戳后的第二字符串为“PCM_AFTER_EF FECT_HANDLE_29_1104221004169”,则PCM文件存储模块在第二字符串后拼接PCM文件后缀“.pcm”,即可得到PCM文件的文件名“PCM_AFTER_EFFECT_HANDLE_29_1104221004169.pcm”。
在确定PCM文件的文件名之后,PCM文件存储模块随即按照该文件名创建PCM文件。示例性的,***中此时存在文件名“PCM_AFTER_EFFECT_HANDLE_29_1104221004169.pcm”的PCM文件,也即在***中已创建文件名包含第一字符串“PCM_AFTER_EFFECT_HANDLE_29”的PCM文件。进而,PCM文件存储模块可以将待存储的音频数据写入该PCM文件中,也即写入文件名包含第一字符串“PCM_AFTER_EFFECT_HAN DLE_29”的PCM文件中。
需要注意的是,当音频播放线程完成音频播放之后,音频播放线程会被销毁。因此,在不同时刻创建的多个音频播放线程可能与音频HAL的同一个OUTPUT绑定。进而,针对不同的音频播放线程,如果这些音频播放线程均与音频HAL的同一个OUTPUT绑定,则音效处理模块运行在这些音频播放线程中的任意一个音频播放线程上时,其输出的音频数据都会存储在一个相同的PCM文件中。示例性的,假设同时运行的音乐线程和游戏线程均与音频HAL的同一个OUTPUT绑定,则音乐线程上运行的音效处理模块输出的音频数据,与游戏线程上运行的音效处理模块输出的音频数据,都会存储在同一个PCM文件3中。其中,这个PCM文件的文件名中包括的音频数据名称用于指示“记录音效处理后的音频数据”,如“PCM_AFTER_EFFECT_HANDLE”;这个PCM文件的文件名中包括的ID为上述提到的与这些音频播放线程绑定的音频HAL的同一个OUTPUT的编号。示例性的,媒体播放应用播放音频的过程中,在音频音效处理环节中创建的PC M文件的文件名可以记录为“PCM_AFTER_EFFECT_HANDLE_ID_创建时间戳.pcm”。
由于本申请提供的音频数据存储方法应用于维修人员或研发人员对手机进行音频故障定位的场景下,所以通常只会存在一个音频播放线程与音频HAL的同一个OUTPUT绑定的情形。
假设,与音频HAL的同一个OUTPUT绑定的第一音频播放线程和第二音频播放线程是先后创建的,如第二音频播放线程是在第一音频播放线程销毁后创建的。示例性的,在第一音频播放线程销毁后,PCM文件存储模块可以按照与第一音频播放线程绑定的OUTPUT匹配的音频数据处理周期,向与该OUTPUT对应的PCM文件3写入空数据,直至第二音频播放线程创建后与该OUTPUT绑定,以此确保PCM文件3中存储的音频数据相对时间的准确性。
又示例性的,为了区分与同一个OUTPUT绑定的不同音频播放线程对应的PCM文件3,可以将PCM文件3的文件名中的ID设置为OUTPUT的编号和次序号的拼接字符,如29_1。其中,次序号用于标识当前该OUTPUT被绑定的次数序号。此时,当音效处理模块调用PCM文件存储模块执行音频数据写入PCM文件的操作时,文件写入函数的参数可以包括:音频数据名称为“记录音效处理后的音频数据”,如PCM_AFTER_EFFECT_HANDLE;ID为与音频播放线程绑定的音频HAL OUTPUT的编号和次序号的拼接字符;待存储的音频数据即为音效处理模块输出的音频数据。此场景下PCM文件存储模块存储音效处理后的音频数据的方式与前述相似,在此不再赘述。
再示例性的,为了区分与同一个OUTPUT绑定的不同音频播放线程对应的PCM文件3,还可以在前一个音频播放线程销毁后,将相应的PCM文件3导出至个人计算机。此时,若下一个音频播放线程与该OUTPUT绑定,则当音效处理模块调用PCM文件存储模块执行音频数据写入PCM文件的操作时,PCM文件存储模块会创建新的PCM文件3。
电子设备(如个人计算机)可以按照PCM文件的存储地址从手机中导出文件名中包括字符串“PCM_AFTER_EFFECT_HANDLE”的PCM文件,也即导出在音频音效处理环节中创建的PCM文件。电子设备通过专业软件对这些PCM文件进行解析,判断这些PCM文件中是否存在音频故障,如POP音、杂音等。如果任意一个PCM文件中存在音频故障,则电子设备不仅可以获取音频故障在该PCM文件中出现的相对时间(如第i秒至第j秒(i<j)),还可以根据该PCM文件的文件名获取该PCM文件的创建时间。由此,电子设备可以根据该PCM文件的创建时间,以及音频故障在该PCM文件中出现的相对时间,计算得到音频故障发生的绝对时间。也即,在该PCM文件创建时间的基础上,累加音频故障在该PCM文件中出现的相对时间,即可得到音频故障发生的绝对时间。进而,电子设备可以按照音频故障发生的绝对时间导出相应时间段内的手机日志,以便于研发人员或售后人员结合手机日志对音频音效处理环节中的手机音频故障进行快速有效地定位,尽早解决用户问题。
S407,音效处理模块将音效处理过的音频数据发送至音频HAL。
本实施例对S406和S407的时序不做限定。
S408,音频HAL调用内核层中的音频驱动。
S409,音频驱动调用扬声器进行音频播放。
其中,音频HAL调用音频驱动,音频驱动调用扬声器以及扬声器响应于音频驱动的调用进行音频播放时,也会进行相应的处理,具体处理过程可以参照已有技术实施例中的技术方案,本申请不再赘述。
在本步骤中,音频驱动还可以调用其他音频输出设备,如受话器、耳机等进行音频播放,本实施例对此不做限定。
在上述实施例中,手机播放音频数据时各个环节处理后的音频数据都会存储至相应的PCM文件中,包括:将媒体播放应用下发的音频数据保存至PCM文件1中,PCM文件1标记为“记录应用下发的音频数据”的PCM文件中;将重采样与混音处理过的音频数据会保存至PCM文件2中,PCM文件2标记为“记录重采样与混音处理后的音频数据”的PCM文件中;将音效处理过的音频数据会保存至PCM文件3中,PCM文件3标记为“音效处理后的音频数据”的PCM文件。其中,这些PCM文件中每个PCM文件的文件名中均包括用于表示创建时间戳的字符串。由此,根据PCM文件的创建时间戳,以及音频故障(如POP音、杂音等)在该PCM文件中出现的相对时间(如第i秒至第j秒(i<j)),即可计算出音频故障发生的具体时间。
在上述实施例的基础上,作为一种可选的实施方式,可以将重采样及混音模块划分为重采样模块和混音模块。其中,重采样模块和混音模块都会运行在音频播放线程上,并可以获取到该音频播放线程绑定的音频HAL OUTPUT的编号。
重采样模块用于对音频数据进行重采样处理,具体可以根据实际情况对接收到的音频数据进行相应的处理。当接收到的音频数据的采样率与音频播放线程允许的采样率不符时,重采样模块对接收到的音频数据进行重采样处理;当接收到的音频数据的采样率与音频播放线程允许的采样率相符时,重采样模块对接收到的音频数据进行透传处理。
混音模块用于对至少两路音频数据进行混音处理,具体可以根据实际情况对接收到的音频数据进行相应的处理。当接收到来自不同音频播放器的至少两路音频数据时,音效处理模块对接收到的至少两路音频数据进行混音处理;当仅接收到一路音频数据时,音效处理模块对接收到的至少两路音频数据进行混音处理;音效处理模块对接收到的音频数据进行透传处理。
其中,音频数据播放流程可以包括:响应于接收到的用户操作,媒体播放应用创建音频播放器;音频播放器读取媒体播放应用的待播放音频数据,并调用PCM文件存储模块将该待播放音频数据写入PCM文件1,PCM文件1标记为“记录应用下发的音频数据”的PCM文件;音频播放器将读取到的媒体播放应用的待播放音频数据,发送至重采样模块;重采样模块根据实际情况对接收到的音频数据进行处理,并调用PCM文件存储模块将其输出的音频数据写入PCM文件21,PCM文件21标记为“记录重采样处理后的音频数据”的PCM文件;重采样模块将其输出的音频数据发送至混音模块;混音模块根据实际情况对接收到的音频数据进行处理,并调用PCM文件存储模块将其输出的音频数据写入PCM文件22,PCM文件22标记为“记录混音处理后的音频数据”的PCM文件;混音模块将其输出的音频数据发送至音效处理模块;音效处理模块对接收到的音频数据进行音效处理,并调用PCM文件存储模块将音效处理过的音频数据写入PCM文件3,PCM文件3标记为“记录音效处理后的音频数据”的PCM文件;音效处理模块将音效处理过的音频数据发送至音频HAL;音频HAL调用内核层中的音频驱动;音频驱动调用扬声器进行音频播放。
这样,在本实施方式中,手机播放音频数据的环节可以划分为:音频播放器读取应用下发的音频数据环节、音频重采样环节、音频混音环节和音频音效处理环节。也即音频重采样环节和音频混音环节为两个独立的音频处理环节。手机播放音频数据时各个环节处理后的音频数据都会存储至相应的PCM文件中,具体包括:将媒体播放应用下发的音频数据保存至PCM文件1,PCM文件1标记为“记录应用下发的音频数据”的PCM文件;将音频重采样处理过的音频数据会保存至PCM文件21,PCM文件21标记为“记录重采样处理后的音频数据”的PCM文件;将音频混音处理过的音频数据会保存至PCM文件22,PCM文件22标记为“记录混音处理后的音频数据”的PCM文件;将音效处理过的音频数据会保存至PCM文件3,PCM文件3标记为“音效处理后的音频数据”的PCM文件。其中,每个PCM文件的文件名中均包括用于表示创建时间戳的字符串。这些PCM文件中每个PCM文件的文件名中均包括用于表示创建时间戳的字符串。由此,根据PCM文件的创建时间戳,以及音频故障(如POP音、杂音等)在该PCM文件中出现的相对时间(如第i秒至第j秒(i<j)),即可计算出音频故障发生的具体时间。
关于PCM文件存储模块被调用将音频数据写入PCM文件的操作,可以详见前述实施例,在此不再赘述。本实施方式其他未尽详细解释之处也可以参见前述实施例,在此不再赘述。
本申请实施例还提供一种音频故障时间定位方法。具体的,电子设备(如个人计算机)根据音频故障在PCM文件中的相对时间以及该PCM文件的创建时间戳,可以确定音频故障发生的具体时间点,以使研发人员可以结合该具体时间点的设备日志对音频故障进行快速有效的定位,加快音频故障的解决速度,提升用户体验。
参照图6,本申请提供的音频故障时间定位方法的流程,具体包括:
S601,电子设备获取PCM文件。
其中,PCM文件为存在音频故障的电子设备(如手机)中存储的PCM文件,该PCM文件中存储的是与该电子进行音频播放相关的音频数据。
而且,该PCM文件的属性值中包括文件创建时间。
示例性的,PCM文件的“创建时间”属性的属性值中存储文件创建时间。
又示例性的,PCM文件的文件名中包括文件创建时间。
其中,文件创建时间可以以时间戳的形式表示,例如“1104212941397”。其中,“1104212941397”仅仅是时间戳的示例性表达,本实施例对时间戳的表达形式不做限定。
在一种应用场景中,电子设备(如手机)在播放音频数据的过程中,各个环节处理后的音频数据都会存储至相应的PCM文件中。例如,将媒体播放应用下发的音频数据保存至PCM文件1中,PCM文件1标记为“记录应用下发的音频数据”的PCM文件中;将重采样与混音处理过的音频数据会保存至PCM文件2中,PCM文件2标记为“记录重采样与混音处理后的音频数据”的PCM文件;将音效处理过的音频数据会保存至PCM文件3中,PCM文件3标记为“音效处理后的音频数据”的PCM文件。
其中,每个PCM文件携带其创建时间戳,如将其创建时间戳添加在其文件名中。
示例性的,在音频播放器读取应用下发的音频数据环节中创建的PCM文件,其文件名可以为:PCM_FROM_APP_1_1104212941397.pcm。其中,“PCM_FROM_APP_1”为音频数据名称和ID的拼接字符串,用于指示该PCM文件中存储的音频数据为媒体播放应用下发的音频数据,且对应的音频播放器ID为1;“1104212941397”为该PCM文件的创建时间戳,用于指示该PCM文件的创建时间,具体表示该PCM文件的创建时间为11月4日21点29分41秒397毫秒。其中,“1104212941397”仅仅是时间戳的示例性表达,本实施例对时间戳的表达形式不做限定。
示例性的,在音频重采样及混音环节中创建的PCM文件,其文件名可以为:PCM_AFTER_MIX_29_1104212942348.pcm。其中,“PCM_AFTER_MIX_29”为音频数据名称和ID的拼接字符串,用于指示该PCM文件中存储的音频数据为重采样及混音模块输出的音频数据,且与音频播放线程绑定的音频HAL OUTPUT的编号为29;“1104212942348”为该PCM文件的创建时间戳,用于指示该PCM文件的创建时间,具体表示该PCM文件的创建时间为11月4日21点29分42秒348毫秒。
示例性的,在音频音效处理环节中创建的PCM文件,其文件名可以为:PCM_AFT ER_EFFECT_HANDLE_29_1104212943125.pcm。其中,“PCM_AFTER_EFFECT_HAN DLE_29”为音频数据名称和ID的拼接字符串,用于指示该PCM文件中存储的音频数据为音效处理模块输出的音频数据,且与音频播放线程绑定的音频HAL OUTPUT的编号为29;“1104212943125”为该PCM文件的创建时间戳,用于指示该PCM文件的创建时间,具体表示该PCM文件的创建时间为11月4日21点29分43秒125毫秒。
电子设备可以根据PCM文件在手机中的存储地址,以及PCM文件名中的音频数据名称,导出在手机播放音频数据的各个环节中创建的PCM文件。
S602,电子设备解析PCM文件,判断PCM文件中是否存在音频故障,若是,则执行S603,若否,则结束流程。
电子设备通过专业解析工具(如PCM音频分析助手等)解析PCM文件,判断PCM文件中是否存在音频故障,例如可以是判断PCM文件中是否存在POP音、杂音等。如果该PCM文件中不存在音频故障,则结束对该PCM文件的处理流程。
S603,电子设备获取该PCM文件的创建时间以及确定音频故障在该PCM文件中的相对时间。
电子设备根据PCM文件携带的创建时间戳确定该PCM文件的创建时间。示例性的,该PCM文件的创建时间戳为“1104212941397”时,该PCM文件的创建时间为11月4日21点29分41秒397毫秒。
在该PCM文件中存在音频故障的情况下,电子设备可以根据PCM文件的解析结果,直接确定音频故障在该PCM文件中的相对时间。
参照图7所示的PCM文件解析示例,在该PCM文件中,第3-4秒之间出现了POP音,具体表现为波形的截断。由此可知,音频故障在该PCM文件中的相对时间为第3-4秒。
参照图8所示的PCM文件解析示例,在该PCM文件中,第2.475-3.44秒之间出现了杂音(金属音),具体表现为波形的幅度变化较大。由此可知,音频故障在该PCM文件中的相对时间为第2.475-3.44秒。
S604,电子设备根据该PCM文件的创建时间以及确定音频故障在该PCM文件中的相对时间,确定音频故障发生的绝对时间。
电子设备在该PCM文件的创建时间的基础上,叠加音频故障在该PCM文件中的相对时间,即可计算出音频故障发生的绝对时间。
参照图7所示的PCM文件解析示例,POP音在PCM文件中的相对时间为第3-4秒。假设该PCM文件的创建时间为11月4日21点29分41秒397毫秒。在该PCM文件的创建时间的基础上,叠加POP音在PCM文件中的相对时间“第3-4秒”,即可计算出POP音发生的绝对时间为11月4日21点29分44秒397毫秒至11月4日21点29分45秒397毫秒。
参照图8所示的PCM文件解析示例,金属音在PCM文件中的相对时间为第2.475-3.44秒。假设该PCM文件的创建时间为11月4日21点29分41秒397毫秒。在该PCM文件的创建时间的基础上,叠加POP音在PCM文件中的相对时间“第2.475-3.44秒”,即可计算出金属音发生的绝对时间为11月4日21点29分43秒872毫秒至11月4日21点29分44秒837毫秒。
针对每个携带创建时间戳的PCM文件,电子设备都可以按照如步骤S601~S604所述对其进行分析,判断PCM文件中是否存在音频故障。进而,电子设备在判断出PCM文件中存在音频故障时,都可以根据音频故障在PCM文件中的相对时间以及该PCM文件的创建时间戳,确定音频故障发生的具体时间点。
由此,电子设备可以对在手机播放音频数据的过程各个处理环节中创建的PCM文件进行分析,如分析标记为“记录应用下发的音频数据”的PCM文件,标记为“记录重采样与混音处理后的音频数据”的PCM文件,以及标记为“音效处理后的音频数据”的PCM文件。这些PCM文件的文件名中均包括文件创建时间戳。在手机播放音频数据的过程中,无论是哪个处理环节中发生音频故障,电子设备都可以据此方法确定音频故障发生的具体时间点。
在电子设备确定音频故障发生的绝对时间之后,即可根据音频故障发生的绝对时间,也即根据音频故障发生的具体时间点,获取相应时间段内的手机日志,并结合手机日志对手机的音频故障进行定位,以此加快手机音频故障的定位速度,使得手机的音频故障可以尽早被解决。
一个示例中,图9示出了本申请实施例的一种装置900的示意性框图,装置900可包括:处理器901和收发器/收发管脚902,可选地,还包括存储器903。
装置900的各个组件通过总线904耦合在一起,其中总线904除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图中将各种总线都称为总线904。
可选地,存储器903可以用于存储上述音频数据存储方法实施例或音频故障时间定位方法实施例中的指令。该处理器901可用于执行存储器903中的指令,并控制接收管脚接收信号,以及控制发送管脚发送信号。
装置900可以是上述音频数据存储方法实施例或音频故障时间定位方法实施例中的电子设备或电子设备的芯片。
其中,上述音频数据存储方法实施例或音频故障时间定位方法实施例中涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
上述本申请实施例提供的一种音频数据存储方法中终端100所执行的步骤,也可以由终端100中包括的一种芯片***来执行,其中,该芯片***可以包括处理器和蓝牙芯片。该芯片***可以与存储器耦合,使得该芯片***运行时调用该存储器中存储的计算机程序,实现上述终端100执行的步骤。其中,该芯片***中的处理器可以是应用处理器也可以是非应用处理器的处理器。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的音频数据存储方法或者音频故障时间定位方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的音频数据存储方法或者音频故障时间定位方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的音频数据存储方法或者音频故障时间定位方法。
其中,本实施例提供的电子设备(如手机)、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的音频数据存储方法中的有益效果,此处不再赘述。
本实施例提供的电子设备(如个人计算机)、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的音频故障时间定位方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (17)
1.一种音频故障时间定位方法,其特征在于,包括:
获取电子设备中存储的脉冲编码调制PCM文件;其中,所述PCM文件包括所述电子设备在播放音频数据过程中存储的音频数据,且所述PCM文件的属性值中包括文件创建时间;
通过解析所述PCM文件,确定音频故障在所述PCM文件中发生的相对时间;
根据所述相对时间和所述文件创建时间,确定所述音频故障发生的绝对时间;所述绝对时间用于获取对应的电子设备日志以结合所述电子设备日志进行音频故障定位。
2.根据权利要求1所述的方法,其特征在于,所述相对时间为第i秒到第j秒;所述文件创建时间为t0时刻;
其中,所述根据所述相对时间和所述文件创建时间,确定所述音频故障发生的绝对时间,包括:
将所述音频故障发生的绝对时间确定为(t0时刻+i秒)到(t0时刻+j秒)。
3.根据权利要求1所述的方法,其特征在于,所述PCM文件的文件名中包括所述文件创建时间。
4.根据权利要求1所述的方法,其特征在于,所述音频故障至少包括下述之一:
POP音故障、杂音故障。
5.根据权利要求1所述的方法,其特征在于,在所述确定所述音频故障发生的绝对时间之后,还包括:
获取与所述音频故障发生的绝对时间对应的电子设备日志;
结合所述电子设备日志进行音频故障定位。
6.一种音频故障时间定位方法,其特征在于,应用于第一电子设备中,包括:
在所述第一电子设备播放音频数据的过程中,获取第一音频数据;
对所述第一音频数据进行处理,得到第二音频数据;其中,所述第二音频数据用于进行音频播放;
确定与所述第二音频数据对应的第一PCM文件;
将所述第二音频数据写入所述第一PCM文件中;其中,所述第一PCM文件的属性值中包括所述第一PCM文件的文件创建时间;
将所述第一PCM文件发送至第二电子设备,以使所述第二电子设备通过解析所述第一PCM文件确定第一音频故障在所述第一PCM文件中发生的第一相对时间,并根据所述第一相对时间和所述第一PCM文件的文件创建时间,确定所述第一音频故障发生的绝对时间;所述绝对时间用于获取对应的第一电子设备日志以结合所述第一电子设备日志进行音频故障定位。
7.根据权利要求6所述的方法,其特征在于,在获取第一音频数据之后,还包括:
确定与所述第一音频数据对应的第二PCM文件;
将所述第一音频数据写入所述第二PCM文件中;其中,所述第二PCM文件的属性值中包括所述第二PCM文件的文件创建时间;
将所述第二PCM文件发送至所述第二电子设备,以使所述第二电子设备通过解析所述第二PCM文件确定第二音频故障在所述第二PCM文件中发生的第二相对时间,并根据所述第二相对时间和所述第二PCM文件的文件创建时间,确定所述第二音频故障发生的绝对时间。
8.根据权利要求6或7所述的方法,其特征在于,所述PCM文件的文件名中包括所述文件创建时间。
9.根据权利要求8所述的方法,其特征在于,所述确定与所述第二音频数据对应的第一PCM文件,包括:
根据所述第二音频数据的来源,判断是否存在与所述第二音频数据对应的第一PCM文件;
若否,则创建新的PCM文件,作为与所述第二音频数据对应的第一PCM文件。
10.根据权利要求9所述的方法,其特征在于,所述创建新的PCM文件,包括:
确定第一字符串;其中,所述第一字符串用于表示所述第二音频数据的来源;
获取***当前时间,并拼接所述第一字符串和所述***当前时间,得到第二字符串;
根据所述第二字符串,创建新的PCM文件。
11.根据权利要求10所述的方法,其特征在于,还包括:
获取第二音频数据名称和与所述第二音频数据名称对应的ID;
所述根据所述第二音频数据的来源,判断是否存在与所述第二音频数据对应的第一PCM文件,包括:
判断是否存在目标PCM文件,其中,所述目标PCM文件的文件名中包括所述第二音频数据名称和与所述第二音频数据名称对应的ID的拼接字符串;
所述确定第一字符串,包括:
拼接所述第二音频数据名称和与所述第二音频数据名称对应的ID,得到所述第一字符串。
12.根据权利要求6所述的方法,其特征在于,所述第一音频数据或所述第二音频数据的来源至少包括下述之一:
媒体播放应用下发的音频数据、重采样与混音处理后的音频数据、音效处理后的音频数据。
13.根据权利要求6或7所述的方法,其特征在于,在所述电子设备播放音频数据之前,还包括:
响应于接收到的第一操作,对所述电子设备进行ROOT处理;
响应于接收到的第二操作,开启所述电子设备音频权限中的PCM文件存储功能。
14.一种音频故障时间定位方法,其特征在于,应用于第一电子设备中,包括:
在所述第一电子设备播放音频数据的过程中,获取媒体播放应用下发的第一音频数据;
确定与所述第一音频数据对应的第一PCM文件,将所述第一音频数据写入所述第一PCM文件中;其中,所述第一PCM文件的属性值中包括所述第一PCM文件的文件创建时间;
对所述第一音频数据进行重采样和/或混音处理,得到第二音频数据;
确定与所述第二音频数据对应的第二PCM文件,将所述第二音频数据写入所述第二PCM文件中;其中,所述第二PCM文件的属性值中包括所述第二PCM文件的文件创建时间;
对所述第二音频数据进行音效处理,得到第三音频数据;
确定与所述第三音频数据对应的第三PCM文件,将所述第三音频数据写入所述第三PCM文件中;其中,所述第三PCM文件的属性值中包括所述第三PCM文件的文件创建时间;
将目标PCM文件发送至第二电子设备,以使所述第二电子设备通过解析所述目标PCM文件确定目标音频故障在所述目标PCM文件中发生的相对时间,并根据所述相对时间和所述目标PCM文件的文件创建时间,确定所述目标音频故障发生的绝对时间;其中,所述目标PCM文件为所述第一PCM文件、所述第二PCM文件和所述第三PCM文件中的一个PCM文件;所述绝对时间用于获取对应的第一电子设备日志以结合所述第一电子设备日志进行音频故障定位。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-5任一项所述的音频故障时间定位方法。
16.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个计算机程序,其中所述一个或多个计算机程序存储在所述存储器上,当所述计算机程序被所述一个或多个处理器执行时,使得所述电子设备执行如权利要求6-13任一项所述的音频故障时间定位方法,或者执行如权利要求14所述的音频故障时间定位方法。
17.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-5任一项所述的音频故障时间定位方法,或者执行如权利要求6-13任一项所述的音频故障时间定位方法,或者执行如权利要求14所述的音频故障时间定位方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111540680.2A CN115022442B (zh) | 2021-12-16 | 2021-12-16 | 音频故障时间定位方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111540680.2A CN115022442B (zh) | 2021-12-16 | 2021-12-16 | 音频故障时间定位方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115022442A CN115022442A (zh) | 2022-09-06 |
CN115022442B true CN115022442B (zh) | 2023-06-09 |
Family
ID=83064935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111540680.2A Active CN115022442B (zh) | 2021-12-16 | 2021-12-16 | 音频故障时间定位方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115022442B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078448A (zh) * | 2019-08-06 | 2020-04-28 | 华为技术有限公司 | 一种处理音频异常的方法及电子设备 |
CN111913867A (zh) * | 2020-09-07 | 2020-11-10 | 京东数字科技控股股份有限公司 | 故障反馈方法、装置、设备及存储介质 |
CN113672420A (zh) * | 2021-08-10 | 2021-11-19 | 荣耀终端有限公司 | 故障检测方法及电子设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107786931B (zh) * | 2016-08-24 | 2021-03-23 | 中国电信股份有限公司 | 音频检测方法及装置 |
CN106531202B (zh) * | 2016-11-14 | 2019-11-22 | 腾讯音乐娱乐(深圳)有限公司 | 一种音频处理方法及装置 |
CN106803426A (zh) * | 2016-12-07 | 2017-06-06 | 广州视源电子科技股份有限公司 | 音频文件存储方法和*** |
CN113704014B (zh) * | 2021-08-24 | 2022-11-01 | 荣耀终端有限公司 | 日志获取***、方法、电子设备及存储介质 |
-
2021
- 2021-12-16 CN CN202111540680.2A patent/CN115022442B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078448A (zh) * | 2019-08-06 | 2020-04-28 | 华为技术有限公司 | 一种处理音频异常的方法及电子设备 |
CN111913867A (zh) * | 2020-09-07 | 2020-11-10 | 京东数字科技控股股份有限公司 | 故障反馈方法、装置、设备及存储介质 |
CN113672420A (zh) * | 2021-08-10 | 2021-11-19 | 荣耀终端有限公司 | 故障检测方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115022442A (zh) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111078448B (zh) | 一种处理音频异常的方法及电子设备 | |
EP3629561A1 (en) | Data transmission method and system, and bluetooth headphone | |
CN109286725B (zh) | 翻译方法及终端 | |
CN113890932A (zh) | 一种音频控制方法、***及电子设备 | |
CN113630910A (zh) | 蜂窝通信功能的使用方法及相关装置 | |
CN111382418B (zh) | 应用程序权限管理方法、装置、存储介质与电子设备 | |
CN112579038A (zh) | 一种内置录音方法、装置、电子设备和存储介质 | |
CN114996168A (zh) | 一种多设备协同测试方法、测试设备及可读存储介质 | |
CN113971969A (zh) | 一种录音方法、装置、终端、介质及产品 | |
CN116208704A (zh) | 一种声音处理方法及其装置 | |
CN115022442B (zh) | 音频故障时间定位方法、电子设备及存储介质 | |
CN111556406B (zh) | 音频处理方法、音频处理装置及耳机 | |
CN113923305A (zh) | 一种多屏协同的通话方法、***、终端及存储介质 | |
CN115531889A (zh) | 一种多应用录屏方法及装置 | |
CN115243236A (zh) | 一种音频数据无缝切换方法 | |
CN113867851A (zh) | 电子设备操作引导信息录制方法、获取方法和终端设备 | |
CN111131019A (zh) | 一种多路http通道复用的方法及终端 | |
CN110737765A (zh) | 多轮对话的对话数据处理方法及相关装置 | |
EP4167580A1 (en) | Audio control method, system, and electronic device | |
CN114006969B (zh) | 一种窗口启动方法和电子设备 | |
CN114416011B (zh) | 一种终端、音频控制方法及存储介质 | |
CN117492689B (zh) | 音频处理方法及电子设备 | |
WO2022078085A1 (zh) | 同步信号块的测量方法、装置和移动终端 | |
WO2022068654A1 (zh) | 一种终端设备交互方法及装置 | |
CN117714584A (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 |