my_life

http://ticktick.blog.51cto.com/823160/1748506

 

1. 音频开发的主要应用有哪些?

 

音频播放器,录音机,语音电话,音视频监控应用,音视频直播应用,音频编辑/处理软件,蓝牙耳机/音箱,等等。

 

2. 音频开发的具体内容有哪些?

 

(1)音频采集/播放

(2)音频算法处理(去噪、静音检测、回声消除、音效处理、功放/增强、混音/分离,等等)

(3)音频的编解码和格式转换

(4)音频传输协议的开发(SIP,A2DP、AVRCP,等等)

 

3. 音频应用的难点在哪?

 

延时敏感、卡顿敏感、噪声抑制(Denoise)、回声消除(AEC)、静音检测(VAD)、混音算法,等等。

 

4. 音频开发基础概念有哪些?

 

在音频开发中,下面的这几个概念经常会遇到。

 

(1) 采样率(samplerate)

 

采样就是把模拟信号数字化的过程,不仅仅是音频需要采样,所有的模拟信号都需要通过采样转换为可以用0101来表示的数字信号,示意图如下所示:

 

wKioL1bdXQviw_TBAAAVYm_x3gk862.gif

 

蓝色代表模拟音频信号,红色的点代表采样得到的量化数值。

 

采样频率越高,红色的间隔就越密集,记录这一段音频信号所用的数据量就越大,同时音频质量也就越高

 

根据奈奎斯特理论,采样频率只要不低于音频信号最高频率的两倍,就可以无损失地还原原始的声音。

 

通常人耳能听到频率范围大约在20Hz~20kHz之间的声音,为了保证声音不失真,采样频率应在40kHz以上。常用的音频采样频率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。

 

(2) 量化精度(位宽)

 

上图中,每一个红色的采样点,都需要用一个数值来表示大小,这个数值的数据类型大小可以是:4bit、8bit、16bit、32bit等等,位数越多,表示得就越精细,声音质量自然就越好,当然,数据量也会成倍增大。

 

常见的位宽是:8bit 或者 16bit

 

(3) 声道数(channels)

 

由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。

 

单声道(Mono)和双声道(Stereo)比较常见,顾名思义,前者的声道数为1,后者为2

 

(4) 音频帧(frame)

 

这个概念在应用开发中非常重要,网上很多文章都没有专门介绍这个概念。

 

音频跟视频很不一样,视频每一帧就是一张图像,而从上面的正玄波可以看出,音频数据是流式的,本身没有明确的一帧帧的概念,在实际的应用中,为了音频算法处理/传输的方便,一般约定俗成取2.5ms~60ms为单位的数据量为一帧音频

 

这个时间被称之为“采样时间”,其长度没有特别的标准,它是根据编解码器和具体应用的需求来决定的,我们可以计算一下一帧音频帧的大小:

 

假设某通道的音频信号是采样率为8kHz,位宽为16bit,20ms一帧,双通道,则一帧音频数据的大小为:

 

int size = 8000 x 16bit x 0.02s  x 2 = 5120 bit = 640 byte

一秒的音频大小:8000(一秒钟8000个样本) * 16(每个样本16位) * 2

所以一个20ms的帧的大小需要再乘以0.02

 

5. 常见的音频编码方式有哪些?

 

上面提到过,模拟的音频信号转换为数字信号需要经过采样和量化,量化的过程被称之为编码,根据不同的量化策略,产生了许多不同的编码方式,常见的编码方式有:PCM 和 ADPCM,这些数据代表着无损的原始数字音频信号,添加一些文件头信息,就可以存储为WAV文件了,它是一种由微软和IBM联合开发的用于音频数字存储的标准,可以很容易地被解析和播放。

 

我们在音频开发过程中,会经常涉及到WAV文件的读写,以验证采集、传输、接收的音频数据的正确性。

 

6. 常见的音频压缩格式有哪些?

 

首先简单介绍一下音频数据压缩的最基本的原理:因为有冗余信息,所以可以压缩。

 

(1) 频谱掩蔽效应: 人耳所能察觉的声音信号的频率范围为20Hz~20KHz,在这个频率范围以外的音频信号属于冗余信号。

 

(2) 时域掩蔽效应: 当强音信号和弱音信号同时出现时,弱信号会听不到,因此,弱音信号也属于冗余信号。

 

下面简单列出常见的音频压缩格式:

 

MP3,AAC,OGG,WMA,Opus,FLAC,APE,m4a,AMR,等等

 

7. Adndroid VoIP相关的开源应用有哪些 ?

 

imsdroid,sipdroid,csipsimple,linphone,WebRTC 等等

 

8. 音频算法处理的开源库有哪些 ?

 

speex、ffmpeg,webrtc audio module(NS、VAD、AECM、AGC),等等

 

10. Android提供了哪些音频开发相关的API?

 

音频采集:  MediaRecoder,AudioRecord

音频播放:  SoundPool,MediaPlayer,AudioTrack (它们之间的区别可以参考这篇文章)

音频编解码: MediaCodec

NDK API:     OpenSL ES

 

11. 音频开发的延时标准是什么?

 

ITU-TG.114规定,对于高质量语音可接受的时延是300ms。一般来说,如果时延在300~400ms,通话的交互性比较差,但还可以接受。时延大于400ms时,则交互通信非常困难

 

===================

http://blog.csdn.net/u011913612/article/details/53363906

time_in_seconds:时长

视频文件的大小计算公式:

video_size = video_bitrate * time_in_seconds / 8

无压缩音频文件大小的计算公式:

audio_size = sampling_rate * bit_depth * channels * time_in_seconds / 8   (没压缩的音频大小的算法)

压缩后音频文件大小的计算公式:

audio_size = bitrate * time_in_seconds / 8

对于一个包含音频和视频的文件,其大小为二者之和。 


比如,我们有一段10分钟的视频文件,视频比特率为1500kbits,音频比特率为128kbits,那么整个文件的大小计算如下:

file_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8
file_size = (1500 kbit/s + 128 kbits/s) * 600 s
file_size = 1628 kbit/s * 600 s
file_size = 976800 kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125 KB
file_size = 119238.28125 KB / 1024 = 116.443634033203125 MB ≈ 116.44 MB
1 byte (B) = 8 bits (b)
1 kilobyte (kB or KB) = 1024 B
1 megabyte (MB) = 1024 KB, etc.

 

http://www.cnblogs.com/my_life/articles/6842155.html

视频中帧就是一个图片采样。音频中一帧一般包含多个样本,如AAC格式会包含1024个样本。

一个aac帧是由1024个样本组成的,一秒内aac的采样次数是44.1k次,所以一个aac帧的时长是1*1024/44.1k, 单位为秒)

 






分类:

技术点:

相关文章: