
Audio
xy_kok
这个作者很懒,什么都没留下…
展开
-
PCM 单双声道转换
现有PCM数据,要进行如下转换,对于16位采样的PCM来说,单声道存储方式很好理解,一段连续内存,一个个int16_t排排站。以A表示一个int16_t,内存排列如下:AAAAAAAAAAAAAAA双声道的话,L表示左声道,R表示右声道,最常见的形式如下:LRLRLRLRLRLRLRLR也有LLLLLLLLRRRRRRRR这种排列的,比较少见,这里不做分析。先定义一个宏作为通用代码:#define COMBINE(l,r) (((int32_t)(l) + (r)) >原创 2020-05-11 17:25:39 · 4118 阅读 · 0 评论 -
Opus FEC小结
前向纠错也叫前向纠错码(Forward Error Correction,简称FEC),是增加数据通讯可信度的方法。在单向通讯信道中,一旦错误被发现,其接收器将无权再请求传输。FEC 是利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收器再建数据。 FEC通过冗余编码的方式将当前帧数据冗余一些到后一帧数据,因此当发现当前帧丢失,可以通过后一帧数据恢复。int opus_原创 2017-06-23 16:43:37 · 4642 阅读 · 0 评论 -
AGC、ANS、AEC
AGC是自动增益补偿功能(Automatic Gain Control),AGC可以自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克风的距离改变时,声音有忽大忽小声的缺点。ANS是背景噪音抑制功能(Automatic Noise Suppression),ANS可探测出背景固定频率的杂音并消除背景噪音,例如:风扇、空调声自动滤除。呈现出与会者清晰的声音。原创 2017-06-27 18:07:34 · 697 阅读 · 0 评论 -
交叉工具编译ARM平台Opus音频库
最近项目中使用到opus音频库,这是一款开源的高效的音频库。其优点相对于AAC编码来说,编码效率高,据说相同带宽下,音频质量完爆AAC,而高带宽下音质接近原始音频(不喜勿喷^_^)。详情及源码见官网http://www.opus-codec.org/ 源码可以直接编译x86平台的库,想要编译ARM平台下,需一番配置。 首先配置交叉编译工具,交叉编译工具链网上有一大...原创 2018-08-03 10:57:26 · 4061 阅读 · 4 评论 -
编译IOS下Opus音频库
今天说一下为IOS编译Opus音频库遇到的坑。 首先要编译IOS的库,得找一个mac环境,并且下载了XCode,Linux或者Windows下未试过,暂时不知道怎么操作。 其次IOS需要的库比较特殊,它需要的是一个集大成者,意思是这个库中需要保护多个平台架构的各种库,比如i386 x86_64 armv7 armv7s arm64等等,即编译各个平台下的库,然后用苹果自...原创 2018-08-03 11:33:54 · 1770 阅读 · 0 评论 -
交叉编译ARM平台WebRTC库
前两天收到一个经过处理的webRTC源码,主要包含AEC,NS,AGC,VAD四项主要功能。要将其编译成一个ARM平台下库供Android APP使用。 怎么说呢,相当坑,源码好像是从GitHub上翻出来了,大牛精简抽离后,x86下可至今编译,但ARM下就需要下点功夫了。改起来相当累啊,耗时一个半工作日搞定,成果如下,请品鉴。configure时为了好看,连接符可能不太标准。...原创 2018-08-03 11:56:22 · 3638 阅读 · 9 评论