Android Multimedia框架总结(十七)音频开发基础知识

近年来,唱吧,全民K歌,QQ音乐,等成为音频软件的主流力量,音频开发一直是多媒体开发中不可或缺的部分,如为什么这个声音这么不清楚,为什么耳机里有电流声,为什么录音时,有时会碰到奇怪的回声,先看下今天的Agenda:

  • 音频开发的主要应用
  • 音频开发基础概念
  • 音频开发的具体内容
  • 常见的音频编码(压缩)方式
  • 音频算法处理的开源库
  • Android提供了哪些音频开发相关的API
  • Android音频开发

1音频开发的主要应用

  • 音频播放器 :(QQ音乐,网易云音乐)
  • 录音机 :(全民K歌)
  • 语音电话:(QQ电话,微信电话)
  • 音视频监控应用:(摄像头,录音笔)
  • 音视频直播应用:(午夜直播,心灵之声电台)
  • 音频编辑/处理软件:(ktv音效、变声, 铃声转换)
  • 蓝牙耳机/音箱 :(耳机、KBOX) 等等。

2音频开发基础概念

(1)采样率(samplerate)

是指录音设备在一秒钟内对声音信号的采样次数。 采样频率越高声音的还原就越真实越自然。单位用赫兹(Hz) 采样定理: (奈奎斯特定理) 在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍;

人耳能听到的声波的频率范围通常? 20~20000Hz

为了保证声音不失真,采样频率应在40kHz以上. 但是,常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。 例如:电话是标准的8khz采样率! 话音信号频率在0.3~3.4kHz范围内,用8kHz的抽样频率,就可获得能取代原来连续话音信号的抽样信号。 而一般CD采集采样频率为44.1kHz。 目前,一般情况下的录音都是采用44100Hz的。

(2)量化精度(位宽)

就是把采样得到的声音信号幅度转换成数字值, 用于表示信号强度。 量化精度:用多少个二进位来表示每一个采样值,也称为量化位数。 声音信号的量化位数一般是 4,6,8,12或16 bits 。 这个数值的数据类型大小可以是:4bit、8bit、16bit、32bit等等,位数越多,表示得就越精细,声音质量自然就越好。 当然,数据量也会成倍增大。 一般采用的是16bit。

(3)声道数(channels)

由于音频的采集和播放是可以叠加的. 因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。 单声道(Mono)和双声道(Stereo)比较常见,顾名思义,前者的声道数为1,后者为2。

(4)音频帧(frame)

音频跟视频很不一样,视频每一帧就是一张图像,而从上面的正弦波可以看出,音频数据是流式的,本身没有明确的一帧帧的概念。

在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频。 这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的,我们可以计算一下一帧音频帧的大小: AAC: 一个AAC帧对应的采样点个数1024, 采样率(samplerate)为 44100Hz 当前一帧的播放时间 = 1024 * 1000000/44100= 22.32ms(单位为ms) mp3: 每帧均为1152个字节 当前一帧的播放时间 = 1152* 1000000/44100= 26.122ms(单位为ms)

3音频开发的具体内容

  • 音频采集/播放
  • 音频算法处理(去噪、静音检测、回声消除、音效处理、功放/增强、混音/分离,等等)
  • 音频的编解码和格式转换
  • 音频传输协议的开发(SIP,A2DP、AVRCP,等等)

SIP:会话初始协议(Session Initiation Protocol)是一种信令协议,用于初始、 管理和终止网络中的语音和视频会话 A2DP全名是Advanced Audio Distribution Profile 蓝牙音频传输模型协定! A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。 AVRCP(Audio/Video Remote Control Profile),即音频/视频远程控制规范。

4音频开发的具体内容

什么是音频编码?

是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。

为什么要音频编码?

存储一秒钟采样率为44.1KHz,位深为16bit,双声道的PCM编码的音频信号,需要 44100*16bit*2 / 8/1024 = 172.2KB的空间,那么1分钟则约为10.09M。 这对大部分用户是不可接受的。 只有2种方法,降低采样指标或者压缩。 降低采样是不可取的,因此就有了各种各样的压缩方式。

有两类主要的音频文件格式:

有损和无损。 有损文件格式: 是基于声学心理学的模型,除去人类很难或根本听不到的声音。 无损格式,例如PCM,WAV,ALS,ALAC,TAK,FLAC,APE,WavPack(WV) 有损格式,例如MP3,AAC,WMA,Ogg 根据采样率和采样大小可以得知,相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,相对自然界的信号,任何数字音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用。因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。 我们而习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。 就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。

5音频算法处理的开源库

FFmpeg: Fast Forward MPEG Moving Picture Experts Group 先进视频编码标准 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 采用LGPL或GPL许可证。 它提供了录制、转换以及流化音视频的完整解决方案。 它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量。 不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。 FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。

FFmpeg组成组件

6Android中音频开发相关的API

  • 音频采集: MediaRecoder,AudioRecord
  • 音频播放: SoundPool,MediaPlayer,AudioTrack
  • 音频编解码: MediaCodec
  • NDK API: OpenSL ES

7Android音频的开发

播放流程: 获取流–>解码–>播放

录制播放路程: 录制音频视频–>剪辑–>编码–>上传服务器 别人播放.

直播过程 : 录制音视频–>编码–>流媒体传输–>服务器—>流媒体传输到其他app–>解码–>播放

几个重要的环节

  • 录制音频 AudioRecord
  • 视频剪辑 fmpeg
  • 音频编码 aac
  • 上传流文件 网络框架,进度监听,断点续传
  • 流媒体传输 流媒体传输协议rtmp rtsp hls
  • 音频解码 aac
  • 渲染播放 MediaPlayer

原文发布于微信公众号 - 何俊林(DriodDeveloper)

原文发表时间:2016-11-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

【Science重磅】自学习人工智能在预测心脏病发作上击败人类医生

【新智元导读】Science 今日报道,科学家使用能够自学习的人工智能技术,让计算机在预测心脏病的发作上击败了人类医生。一旦投入使用,这一新的诊疗手段每年将拯救...

3736
来自专栏知晓程序

想和外国人谈笑风生?用这 5 款小程序拿下英语!

1603
来自专栏人人都是极客

浅谈网络语音技术

当我们使用像Skype、QQ这样的工具和朋友流畅地进行语音视频聊天时,我们可曾想过其背后有哪些强大的技术在支撑?本文将对网络语音通话所使用到的技术做一些简单的介...

1592
来自专栏大数据文摘

为什么在VR中投掷体验很差——怎样改善它

1741
来自专栏新智元

AI真的会杀人?DeepMind开发了二维网格游戏来做测试

来源:DeepMind、arXiv、fortune 作者:张乾 【新智元导读】人工智能安全性的话题一直热度不减,马斯克和霍金都公开呼吁过。不过,DeepMind...

28512
来自专栏大数据文摘

DOTA2中打败Dendi的AI如何炼出?OpenAI公布两周集训细节(含实战视频)

1983
来自专栏媒矿工厂

【前沿动态】视频编码步入更压缩高性能时代

目前,针对海量多媒体数据的压缩和处理,特别是VR和HDR视频数据,开发并提出新的高性能codec及处理方案是多媒体通信应用行业共同面临的难题。MPEG已经开始着...

2051
来自专栏大数据挖掘DT机器学习

【趣味】数据挖掘(4)——借博客点击兼谈干预规则

讲过长课的老师,常在受众将发生审美疲劳之时段,安排一点有趣的内容。为消除疲劳,现来一段有趣的、与博友的自尊心和荣誉感相关的博文,议题是:挖掘科学博客的平均...

3207
来自专栏大数据文摘

[译] 天龙八步 第二弹:8步从Python白丁到专家,从基础到深度学习

2777
来自专栏PPV课数据科学社区

用Python进行数据可视化的10种方法

编译|黄念 校对|丁一 引言 艺术之美根植于其所传达的信息。有时候,现实并非我们所看到或感知到的。达芬奇(Da Vinci)和毕加索(Picass...

4627

扫码关注云+社区