zoukankan      html  css  js  c++  java
  • 聊聊Android的音频架构[zz]

      地址:http://mp3.zol.com.cn/252/2524723.htm 


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

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


    聊聊Android的音频架构
    Linux ALSA音频架构示意

      ALSA并不太好理解,它首先是一个驱动库,包含了大量的

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

    聊聊Android的音频架构
    Android 系统下的ALSA库文件

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

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

    聊聊Android的音频架构
    Meizu

    魅族 M9 智能手机-频率扫描,录音端增益20dB

    聊聊Android的音频架构
    Meizu 魅族 M9 智能

    手机-48kHz频率扫描,录音端增益20dB

    聊聊Android的音频架构
    Huawei 华为 U8800 智能手机-48kHz频率扫描

    聊聊Android的音频架构
    Lenovo 联想 乐Pad

    平板电脑-48kHz频率扫描

    聊聊Android的音频架构
    Malata 万利达 Zpad T8 平板

    电脑-48kHz频率扫描

    聊聊Android的音频架构
    SmartQ

    智器 T10 平板电脑-48kHz频率扫描

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

      对比这一组结果就能看出SRC对音质的破坏性。这问题不只是魅族 M9存在。几乎存在于所有的Android设备当中。

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

    聊聊Android的音频架构
    Android2.3的系统文件夹下已经没有了ALSA库文件

    聊聊Android的音频架构
    Android 2.3后的音频架构示意

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

    聊聊Android的音频架构
    HTC HD2 @Android 2.3 智能手机-48kHz频率扫描

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

    聊聊Android的音频架构
    ASUS 华硕 Eee Pad Transformer TF101 平板电脑-48kHz频率扫描

      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也可以乌鸡变凤凰。

    原文地址:

    http://mp3.zol.com.cn/252/2524723.html

     


  • 相关阅读:
    316 Remove Duplicate Letters 去除重复字母
    315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
    313 Super Ugly Number 超级丑数
    312 Burst Balloons 戳气球
    309 Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
    Java 类成员的初始化顺序
    JavaScript 全局
    HTML字符实体
    Java中的toString()方法
    JavaScript 弹窗
  • 原文地址:https://www.cnblogs.com/linucos/p/2982997.html
Copyright © 2011-2022 走看看