今天说说Speex。 Speex是一种音频编码格式,并专门针对语音进行优化。它支持窄带(8KHz)及宽带(16kHz)的编码,支持可变比特率(VBR)以及丢包补偿等,因此非常适合VoIP应用。...参见:http://en.wikipedia.org/wiki/Speex 不过,维基百科也指出:由于有了更好的编码OPUS出现,Speex应该淘汰了——“Xiph.Org now considers...但无论如何,FreeSWITCH支持很多音频编码,自然也支持Speex。...FreeSWITCH对speex编码的支持是在mod_speex中实现的,但是,从今天起,它被挪到核心中去了,参见:http://fisheye.freeswitch.org/changelog/freeswitch.git...当然,不管是新用户还是老用户,随时都可以输入m或1显示本账号的主菜单。
16-kHz mono5 = Nellymoser 8-kHz mono6 = Nellymoser7 = G.711 A-law logarithmic PCM8 = G.711 mu-law logarithmic...格式 4 (Nellymoser 16-kHz mono) 和格式 5 (Nellymoser 8 kHz mono),是两种特殊情况, 因为采样率字段无法表示 8 kHz 和 16 kHz。...当采样格式是格式 4 或格式 5 时,Flash 播放器会忽略采样率和声音类型两个字段。对于其他采样率的 Nellymoser 格式, 即格式 6,则正常使用采样率和声音类型两个字段。...格式 11,Speex,音频以 16 kHz采样率压缩为单声道,采样率字段值应为 0,采样位深字段值应为 1,声音类型字段值应为 0。 格式 7,8,14 和 15 保留。...16 KHz mono, 5 - Nellymoser 8 KHz mono, 10 - AAC, 11 - Speex uint8_t sound_rate; // 0 - 5.5 KHz,
speex库中音频降噪效果不错,应该是应用最广泛的吧,speex库下载地址https://www.speex.org/downloads/,可以直接下载二进制代码使用,像配置OpenCV一样配置speex.../speex_preprocess.h> #include speex/speex.h> #define HEADLEN 44 #define SAMPLE_RATE (48000) #define...i; i = 0; speex_preprocess_ctl(state, SPEEX_PREPROCESS_SET_AGC, &i); i = 80000; speex_preprocess_ctl...(state, SPEEX_PREPROCESS_SET_AGC_LEVEL, &i); i = 0; speex_preprocess_ctl(state, SPEEX_PREPROCESS_SET_DEREVERB..., &vad); speex_preprocess_ctl(state, SPEEX_PREPROCESS_SET_PROB_START, &vadProbStart); speex_preprocess_ctl
而Speex提供了声学回声消除算法库,本文就简单用Speex对一段录音进行回声消除,当然这不是实时处理的。...Speex中回声消除API封装在语音处理API中,在最新版本的Speex中将语音处理相关的API独立封装成libspeexdsp。...原文参见http://www.360doc.com/content/11/1008/18/11192_154383516.shtml,原文所用speex版本是1.1.9,我们用的是speex-1.2beta3...1、speexEC.h #ifndef SPEEX_EC_H #define SPEEX_EC_H #include #include /*在项目属性里设置VC++...目录的包含目录和库目录分别为speex库中的include和lib,我用的是speex-1.2beta3-win32*/ #include #include
AAC 0 = Linear PCM, platform endian 1 = ADPCM 2 = MP3 3 = Linear PCM, little endian 4 = Nellymoser...16-kHz mono 5 = Nellymoser 8-kHz mono 6 = Nellymoser 7 = G.711 A-law logarithmic PCM 8 = G.711...mu-law logarithmic PCM 9 = reserved 10 = AAC 11 = Speex 14 = MP3 8-Khz 15 = Device-specific...kHz 3 = 44-kHz SoundSize UB1 采样精度,对于压缩过的音频,永远是16位 0 = snd8Bit 1 = snd16Bit SoundType UB1 声道类型,对Nellymoser...为0 Data UI8n 1、如果如果AVCPacketType=1,则为AVCDecoderConfigurationRecord 2、如果AVCPacketType=1=2,则为NALU(一个或多个
显示时间(pts) = 解码时间(tag的第58字节) + CompositionTime CompositionTime的单位也是ms Script data脚本数据就是描述视频或⾳频的信息的数据,如宽度...0 = Linear PCM, platform endian ----1 = ADPCM ----2 = MP3 ----3 = Linear PCM, little endian ----4 = Nellymoser...16 kHz mono ----5 = Nellymoser 8 kHz mono ----6 = Nellymoser ----7 = G.711 A-law logarithmic PCM , reserved..., reserved ----9 = reserved ----10 = AAC (supported in Flash Player 9,0,115,0 and higher) ----11 = Speex...如果 SoundFormat=11 即Speex格式,音频使用压缩的16kHz采样率的单声道,各参数取值为SoundRate=0,SoundSize=1,SoundType=0。
GOP:Group of picture(图像组),指两个I帧之间的距离 FLV文件格式的定义 FLV格式定义:FLV是一种容器格式,它支持的音频编码有 linear PCM、ADPCM、MP3、Nellymoser...、G711 A-law PCM、G711 mu-law PCM、AAC、Speex等,支持的视频编码有H264、On2 VP6、Sorenson Spark等。
显示时间(pts) = 解码时间(tag的第5~8字节) + CompositionTime CompositionTime的单位也是msScript data脚本数据就是描述视频或⾳频的信息的数据,如宽度...ADPCM ----2 = MP3 ----3 = Linear PCM, little endian ----4 = Nellymoser...16 kHz mono ----5 = Nellymoser 8 kHz mono ----6 = Nellymoser ----7...reserved ----10 = AAC (supported in Flash Player 9,0,115,0 and higher) ----11 = Speex...如果 SoundFormat=11 即Speex格式,音频使用压缩的16kHz采样率的单声道,各参数取值为SoundRate=0,SoundSize=1,SoundType=0。
type Comment 音频格式 UB4 0 = Linear PCM, platform endian1 = ADPCM2 = MP33 = Linear PCM, little endian4 = Nellymoser...16-kHz mono5 = Nellymoser 8-kHz mono6 = Nellymoser7 = G.711 A-law logarithmic PCM8 = G.711 mu-law logarithmic...PCM 9 = reserved10 = AAC11 = Speex14 = MP3 8-Khz15 = Device-specific sound7, 8, 14, and 15:内部保留使用。
Audio 与视频格式类似 前4位为音频格式 值 类型 0 Linear PCM, platform endian 1 ADPCM 2 MP3 3 Linear PCM, little endian 4 Nellymoser...16-kHz mono 5 Nellymoser 8-kHz mono 6 Nellymoser 7 G.711 A-law logarithmic PCM 8 G.711 mu-law logarithmic...PCM 9 reserved 10 AAC 11 Speex 14 MP3 8-Khz 15 Device-specific sound 接着2位为采样率 值 类型 0 5.5-kHz 1 11-kHz
漏洞详情 这个Flash Video File exploit 是利用Nellymoser音频解码器堆中的代码超过它的最大限制长度造成缓冲区溢出漏洞。...Nellymoser编码器的硬编码大小为2的倍数(见下面代码)。因此,所需的最大缓冲区为0x400*4*2=0x2000。...然而,这忽略了Nellymoser解码函数的硬编码双重操作;可以被用来再次触发一堆缓冲区溢出。...事实上,攻击者有很多优势,在没有完全解决一个不安全的或复杂的编码之前,他们可以重新构建一个exploit绕过前面的补丁。 To be or not to be? 如果你还没安装补丁,请你现在立刻就去!
使用方便,下面见解析 低内存占用,提供捞底回收 多接口延伸,例如结果文件路径的返回,和文件的大小 基于 Speex jni 库,高效,自定义语音文件格式 解析 实例: private VoiceRecorderHelper...单位分贝 */ } } ); } 技术点 (可以不看) jni层:编译好 Speex.so
预处理器提供三个主要功能:噪声抑制自动增益控制(AGC)语音活动检测(V AD)自适应抖动缓冲区当通过UDP或RTP传输语音(或任何相关内容)时,包可能会丢失,以不同的延迟到达,甚至乱序。.../speex_echo.h"/*使用预处理器需要添加#include "speex/speex_preprocess.h"*/#include "speex/speex_preprocess.h"#include...(st, SPEEX_PREPROCESS_SET_AGC, &i); i=8000; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL...speex_preprocess_state_destroy(st); return 0;}抖动缓冲功能当通过UDP或RTP传输语音(或任何相关内容)时,包可能会丢失,以不同的延迟到达,甚至乱序...抖动缓冲器是一个共享的数据区域*/ unsigned int idx; //unsigned int是整数类型 ,存储大小为2 或 4 字节,值范围为0 到 65,535 或 0 到 4,294,967,295
公号许久没更文了,这段时间以来,自己在面临着一些抉择。未曾想过,毕业后一个月考虑的事情比大学四年加起来的还要多。也许是大学过得太安逸了,欠的债全部攒到毕业后来还...
二进制与运算规则:1&1=1 1&0=0 0&0=0 | 或 (只要有1,那么就是1) 表示按位或 按位或运算 按位或运算符“|”是双目运算符。...其功能是参与运算的两数各对应的二进位(也就是最后一位)相或。只要对应的二个二进位有一个为1时,结果位就为1。 ^ 异或 (只要一样结果就是0) 按位异或运算符。
引入头文件 #ifdef USE_SPEEX #include speex/speex.h> #endif #ifdef USE_AAC #include "aacDecoder/include/neaacdec.h...audioOutput = (i16 *)malloc(640); auto mode = speex_lib_get_mode(SPEEX_MODEID_WB); speexState...= speex_decoder_init(mode); speex_bits_init(&speexBits); #endif #ifdef USE_AAC faacHandle =...mad_stream_init(&inputStream); mad_frame_init(&frame); mad_synth_init(&synth); 解码 input对象中包含了经过协议拆包后的原始音频数据(RTMP协议或Flv...{ speex_bits_read_from(&speexBits, (const char *)input, 52); speex_decode_int(speexState
mode代表音频输出的模式:MODE_STATIC或MODE_STREAM,分别表示静态模式和流模式。...推荐使用Speex 1.2.0稳定版,由于目前Speex 已不再继续维护,官方建议使用Opus。但在某些场合,使用Speex已然足够满足需求。 ?...在jni中speex源码目录下的include/speex文件夹下,有一个speex_config_types.h.in文件,在include/speex目录下创建speex_config_types.h...[armeabi] Compile thumb : speex speex_header.c [armeabi] Compile thumb : speex speex.c [armeabi...ExecutorService接口继承自Executor 接口,它提供了更丰富的实现多线程的方法,比如,ExecutorService提供了关闭自己的方法,以及可为跟踪一个或多个异步任务执行状况而生成Future