Android系统迅速崛起,超越iOS和Symbian成为第一大智能设备操作系统,它的占有率还有迅速扩张的趋势,将有大量的多媒体设备采用这个系统,那么Android是否适合作为影音设备的操作系统使用呢?我们今天就来了解一下Android的音频架构。

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

Linux ALSA音频架构示意

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

Android系统下的ALSA库文件

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

在桌面版本的Linux当中,为了兼容各类声卡,Linux也设置了一个SRC[Sample Rate Converter,采样频率转换]的环节,当当前采样率低于48kHz时强制SRC到48kHz输出。这个SRC环节位于ALSA的插件模块中的混音器部分。Android针对这个进行了改进。

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

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

Android 2.3的系统文件夹下已经没有了ALSA库文件

Android 2.3后的音频架构示意

Android 2.3起,架构已经做了修改,在针对内部代码进行了优化,去除了冗余代码,理论上让系统能变得更加高效,可以将新架构理解为一个精简的或者为智能终端设备定制的ALSA架构。遗憾的是,它同样存在SRC严重劣化的问题,通过测试可以证明。

测试可以发现,Android 2.3的新架构对音质起不到正面作用。

Android 3.0专门为平板电脑设计,影音体验变得更加重要了,是不是新系统在音质方面会有新的的进步呢,测试结果依然是令人失望的。

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

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

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

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

Android音频架构的局限性也使得其难以成为优质的影音平台,如果你希望设计一款基于Android的高清影音播放器,那么首先需要做的不是设计硬件,而是去修改现有架构的不足,或者干脆设计一个专用的架构来取代Android的通用架构。从源代码分析,Android和原生的Linux底层能支持各种采样率,开源也使得其具有改造基础,因此,在技术实力强劲的公司手里,Android也可以乌鸡变凤凰。

get="_blank">播放器,那么首先需要做的不是设计硬件,而是去修改现有架构的不足,或者干脆设计一个专用的架构来取代Android的通用架构。从源代码分析,Android和原生的Linux底层能支持各种采样率,开源也使得其具有改造基础,因此,在技术实力强劲的公司手里,Android也可以乌鸡变凤凰。

更多相关文章

  1. Android架构分析之Android开发环境搭建
  2. Android(安卓)display架构分析(二)
  3. android音频口通信——2FSK信号调制
  4. Android使用FFmpeg(六)--ffmpeg实现音视频同步播放
  5. [新技术]新技术
  6. Android(安卓)SDK Manager 的介绍
  7. android之wifi体系架构源码流程分析
  8. Android(安卓)display架构分析(五)
  9. Android中的背景音频与MediaSessionCompat

随机推荐

  1. android 混淆
  2. Android 3.0 Platform Highlights
  3. Android进度条实例
  4. Android使用意图链接活动和意图筛选器
  5. Android获取IMEI和ICCID
  6. android美女更衣
  7. Android 震动 和 停止 代码
  8. Android Volley完全解析
  9. (64位)ubuntu 11.10编译android 2.3准备的
  10. Android使用系统API进行音视频编码