android2.3采用alsa作为音频系统,在asound.conf中的扬声器音量设置问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android2.3采用alsa作为音频系统,在asound.conf中的扬声器音量设置问题。相关的知识,希望对你有一定的参考价值。

android2.3采用alsa作为音频系统,在asound.conf中默认设置扬声器音量为100,但在系统启动时,总会听见一声短暂的噪音。设置为其他非0值,也会有轻微噪音。请问我该怎样修改代码消除这个BUG啊?谢谢了。
没人遇到过alsa启动时扬声器发出暴音的情况吗?顺便问一下PCM和Mixer是什么啊,它们各自都是干嘛的?

参考技术A 这个我也碰到过,是常规问题,原因在于音频系统不兼容,如果您的设置里面有“db分位噪比”选项,可以将其数值加大,一般到210即可。如果没有此选项,那您只好换个音频系统了,我就换了,以后再也没有出现类似的问题追问

换音频系统肯定是不可行的了。谢谢您的答案。

安卓系统为啥音质不好

Android 基于Linux,我们先来了解一下Linux的特点。Linux使用ALSA作为其音频架构,其全称Advanced Linux Sound Architecture,即高级Linux声音架构的意思,在2.6核心之后,ALSA成为了Linux系统默认的音频子架构。取代了之前的OSS[Open Sound System,开放式声音系统]。

ALSA并不太好理解,它首先是一个驱动库,包含了大量的声卡设备的开源驱动,并提供了核心层API与ALSA库通信,而ALSA库则是应用程序访问和操控音频硬件的中间层,这个中间层有标准接口,开发者可以无须考虑硬件差异性进行开发,它对提升开发效率是大有帮助的。ALSA可以向下兼容OSS,因为OSS已经被淘汰,其兼容的工作模式不再讨论。

这个体系被继承到了Android当中。在Android2.2[含2,2]之前,系统文件夹中能找到一个LibAudioALSA.so的文件,这就是ALSA库文件,其他应用程序调用它,与声卡设备进行指令和数据通信。Android音频架构与Linux的并无本质区别。

在桌面版本的Linux当中,为了兼容各类声卡,Linux也设置了一个SRC[Sample Rate Converter,采样频率转换]的环节,当当前采样率低于48kHz时强制SRC到48kHz输出。这个SRC环节位于ALSA的插件模块中的混音器部分。Android针对这个进行了改进。
什么是SRC?SRC即Sample Rate Converter,中文意思为采样频率转换。它被声卡爱好者所关注,大部分发烧友视SRC为音质杀手。

Android增加了一个AudioFinger,这个可以简单的理解为Android的ALSA音频子系统的标准化的插件模块,它包含了AudioMixer[混音器]、AudioResampler[重采样]等子模块,AudioResampler即我们理解的SRC,Android换了一个新名称而已。针对SRC,Android做了改进,但改进并不是以去除SRC为目的,而是修改了默认的输出频率,Android的SRC目标采样率为44.1kHz,非该值的采样率都将SRC处理。例如播放48kHz采样率的信号,输出的最终是44.1kHz,这对音质将产生负面影响。

ALSA是一个针对Linux 桌面版本设计的音频架构,它实际上是不适合智能终端设备的,起码里面大量的开源驱动代码是可以去除的,对与Android来说,这些都是废代码。从Android2.3起,启用了一个新的音频架构。它放弃了一直使用的ALSA架构,因此系统文件夹中,也不再有LibAudioALSA.so这个文件。

Android2.3起,架构已经做了修改,在针对内部代码进行了优化,去除了冗余代码,理论上让系统能变得更加高效,可以将新架构理解为一个精简的或者为智能终端设备定制的ALSA架构。遗憾的是,它同样存在SRC严重劣化的问题,通过测试可以证明。
Android 3.0专门为平板电脑设计,影音体验变得更加重要了,是不是新系统在音质方面会有新的的进步呢,测试结果依然是令人失望的。

Android系统将采样率同一为44.1kHz输出,这造成了诸多限制,它将无法实现96kHz、192kHz高清音频节目的良好回放,大量视频节目源自DVD或者蓝光碟,其采用率多为48kHz,Android设备在回放这些视频节目时,音质也将大打折扣。

理论上软件SRC可以通过更换算法来实现音质提升,但却不太现实,智能终端所采用的CPU多为ARM,ARM芯片的浮点运算力有限,而SRC需要大量的浮点运算的资源,即便有了高质量的SRC算法,其运算也是以牺牲设备性能和耗电量为代价的,实用性差。

从Android的音频架构及流程分析,可以认为,播放44.1kHz采样率的音乐节目时,不会引发SRC,音质因此可以获得保证,理论上确实如此。但它同样存在问题,不管是之前的ALSA架构还是Android2.3之后改良的架构,其驱动库都位于核心层,也就意味着音频设备厂商、用户无法象PC平台那样安装驱动来改善音质。实际测试也表明,Android设备音质普遍偏差,Soomal有大量测试可以证明。

我们再把目光投向iOS,iOS非常封闭,我们甚至无法获知其架构的具体构成,但iOS设备不存在硬件设备多样性的问题,因此要实现更好音质也会更加简单。iOS可以实现针对性的开发和改良,以实现更好的音质。实际情况也是如此,目前为止,还没有一款Android设备的音质可以媲美任意一款iOS设备,这种差距,我们认为不是来自硬件,而是操作系统。

Android音频架构的局限性也使得其难以成为优质的影音平台,如果你希望设计一款基于Android的高清影音播放器,那么首先需要做的不是设计硬件,而是去修改现有架构的不足,或者干脆设计一个专用的架构来取代Android的通用架构。从源代码分析,Android和原生的Linux底层能支持各种采样率,开源也使得其具有改造基础,因此,在技术实力强劲的公司手里,Android也可以乌鸡变凤凰。
参考技术A Android 基于Linux,我们先来了解一下Linux的特点。Linux使用ALSA作为其音频架构,其全称Advanced Linux Sound Architecture,即高级Linux声音架构的意思,在2.6核心之后,ALSA成为了Linux系统默认的音频子架构。取代了之前的OSS[Open Sound System,开放式声音系统]。

ALSA并不太好理解,它首先是一个驱动库,包含了大量的声卡设备的开源驱动,并提供了核心层API与ALSA库通信,而ALSA库则是应用程序访问和操控音频硬件的中间层,这个中间层有标准接口,开发者可以无须考虑硬件差异性进行开发,它对提升开发效率是大有帮助的。ALSA可以向下兼容OSS,因为OSS已经被淘汰,其兼容的工作模式不再讨论。

这个体系被继承到了Android当中。在Android2.2[含2,2]之前,系统文件夹中能找到一个LibAudioALSA.so的文件,这就是ALSA库文件,其他应用程序调用它,与声卡设备进行指令和数据通信。Android音频架构与Linux的并无本质区别。

在桌面版本的Linux当中,为了兼容各类声卡,Linux也设置了一个SRC[Sample Rate Converter,采样频率转换]的环节,当当前采样率低于48kHz时强制SRC到48kHz输出。这个SRC环节位于ALSA的插件模块中的混音器部分。Android针对这个进行了改进。
什么是SRC?SRC即Sample Rate Converter,中文意思为采样频率转换。它被声卡爱好者所关注,大部分发烧友视SRC为音质杀手。

Android增加了一个AudioFinger,这个可以简单的理解为Android的ALSA音频子系统的标准化的插件模块,它包含了AudioMixer[混音器]、AudioResampler[重采样]等子模块,AudioResampler即我们理解的SRC,Android换了一个新名称而已。针对SRC,Android做了改进,但改进并不是以去除SRC为目的,而是修改了默认的输出频率,Android的SRC目标采样率为44.1kHz,非该值的采样率都将SRC处理。例如播放48kHz采样率的信号,输出的最终是44.1kHz,这对音质将产生负面影响。

ALSA是一个针对Linux 桌面版本设计的音频架构,它实际上是不适合智能终端设备的,起码里面大量的开源驱动代码是可以去除的,对与Android来说,这些都是废代码。从Android2.3起,启用了一个新的音频架构。它放弃了一直使用的ALSA架构,因此系统文件夹中,也不再有LibAudioALSA.so这个文件。

Android2.3起,架构已经做了修改,在针对内部代码进行了优化,去除了冗余代码,理论上让系统能变得更加高效,可以将新架构理解为一个精简的或者为智能终端设备定制的ALSA架构。遗憾的是,它同样存在SRC严重劣化的问题,通过测试可以证明。
Android 3.0专门为平板电脑设计,影音体验变得更加重要了,是不是新系统在音质方面会有新的的进步呢,测试结果依然是令人失望的。
参考技术B 音质方面,安卓存在天生缺陷。
安卓系统上会把48khz的强制到44.1khz输出
而如果是高通芯片组,在内部又会把44.1khz的强制到48khz。所以说,安卓上,尤其是用高通芯片组的,如果没有加上独立音频解码芯片,音质基本就是悲剧。
参考技术C 不是吧,这只有两种可能,要么你下的安卓版本不行,换个官方版本试试,要么就是你手机的硬件不行追问

安卓系统天生音质缺陷。可能我对音质要求太高了吧。真不想带MP3啊 不方便 可是手机真的不行。

参考技术D 安卓系统 关音质什么事啊 ? 是手机好不好?
你在做什么 ,觉得音质不好 放歌 ?看电影?、、、追问

安卓系统天生音质缺陷。可能我对音质要求太高了吧。真不想带MP3啊 不方便 可是手机真的不行。

本回答被提问者采纳

以上是关于android2.3采用alsa作为音频系统,在asound.conf中的扬声器音量设置问题。的主要内容,如果未能解决你的问题,请参考以下文章

Linux音频子系统 - ALSA ASoC

alsa 编程

Linux ALSA 音频系统:物理链路篇

Linux ALSA 音频系统:逻辑设备篇

Linux ALSA 音频系统:物理链路篇

Linux ALSA 音频系统:物理链路篇