AsyncUdpSocket即时通信
AsyncUdpSocket即时通信, udp点对点即时通信,加入udp多播功能,实现在局域网里群聊的效果,自动生成泡泡对话框。
回音消除 Speex AEC
一 、因为Windows不是实时操作系统,造成声卡的录音、放音他们之间有一定
时间的延时,而且这个延时的时间长每台电脑可能都不一样 。从而给回音
消除增加一定的难度,再加上房间的大小造成声音反射也不一样,更增加
回音消除的难道、复杂性 。
二、Speex 回音消除模块
Speex语音是一个开源/免费软件专利的自由音频压缩格式的语音而设计。该项目旨
在降低Speex语音的供提供免费替代昂贵的专有语音编码语音应用进入壁垒。此外,
Speex语音可适应互联网的应用,并提供有用的功能是不存在于大多数其他编解码器。
最后,Speex语音是GNU工程的一部分,是根据经修订的BSD许可证发布的。
技术
Speex语音是基于CELP的,旨在在语音压缩比特率从2到44 kbps的。对Speex语音的
功能包括:
窄带(8千赫),宽带(16千赫)和超宽带(32千赫)在同一个码流压缩
强度立体声编码
数据包丢失隐藏
可变比特率操作(VBR业务)
语音活动检测(VAD)
间断变速器(DTX的)
定点模式
声学回声消除器
噪音抑制
从Speex 的介绍可以看出它提供了回音消除这一功能,现在开源的,比较完善的回音消除模块
就是Speex了,有许多中小公司也拿它作为回音消除功能 。经过测试,Speex的消除效果还是
不错的。期待作者有更好的改进、优化。
下面简单介绍一下Speex回音消除部分的使用方法。
1 先初始化
speex_echo_state_init(m_nFrameSize, m_nFilterLen);
m_nFrameSize 是采样的帧长, 一般是 80 , 160 , 320
m_nFilterLen 是回音消除的尾长 一般是 80*10 ,160*10,320*10
2 擦除处理
speex_echo_cancellation(m_pState,( __int16 *) mic, ( __int16 *)ref,( __int16 *) out);
m_pState 是擦除句柄
mic 是录音录取到的数据
ref 是放音的数据
out 是经过擦除后的数据
3 销毁擦除句柄
speex_echo_state_destroy(m_pState);
三 、录音、放音
Windows 平台录音、放音 提供了 Win32API 和DSound 这两个模式,Vista ,Win7 提供了
WASAPI ,这种方式比较新,参考的资料少。经过测试比较 还是 Win32api(类似 waveInXXX,
waveOutXXX)的兼容性最好,win2000,win2003,xp,Vista,Win7这些系统 win32api都兼容。
推荐使用win32api进行录音、放音。
一)、录音部分使用步骤
1 打开录音设备
waveInOpen
2 启动录音
waveInStart
3 在录音的回调函数
OnCaptureAudioDataFunction
这里获取到录音的音频数据,这个音频数据用来做回音消除,因为它录取到了喇叭放出的声音。
要把喇叭放出来的声音消除掉。
4 关闭录音句柄
waveInReset //复位录音
waveInStop //停止录音
waveInClose //关闭录音
二) 、放音部分
1 打开放音设备
waveOutOpen
2 播放音频数
::waveOutPrepareHeader();
::waveOutWrite();
3 关闭播放设备
waveOutClose
ipad横竖屏切换解决方案
由于ipad的横竖屏不同,所以好的应用,横竖屏的页面布局也不一样。那么就需要横竖屏的整体解决方案。。也有一些代码可以参考。
The Swift Programming Language
已经发布的此书 都不是完整版,我给大家带来一个完整版
此书介绍:
关于Swift
Swift是一种新的编程语言,用于iOS和OS X的应用程序,建立在
最佳的C和Objective-C中,没有C的兼容性的限制。迅速
采用安全的编程模式,并增加了现代的功能,使
编程更简单,更灵活,更有趣。斯威夫特的洗涮,通过支持
成熟和备受宠爱的可可和可可触摸框架,是一个
机会重新构想如何的软件开发工作。
Swift一直是苹果公司多年的酝酿。苹果公司奠定了Swift的基础
推进我们现有的编译器,调试器和框架的基础设施。我们
简化存储管理,自动引用计数( ARC) 。我们的
框架堆栈,建立在基金会和可可的坚实基础,一直
现代化和整个标准化。 Objective-C语言本身已经进化到
支撑块,收集文字和模块,使框架采用
现代语言技术不中断。由于这个基础,
我们现在可以引入苹果软件的未来一种新的语言
发展。
Swift适合熟悉Objective-C语言的开发人员。它采用的可读性
Objective-C中的命名参数和Objective-C的动态对象的权力
模型。它提供了无缝接入现有的Cocoa框架和混合和
匹配的互操作性与Objective-C代码。从这个共同建设
地面上,Swift引入了许多新的特性和统一的程序和
语言的面向对象的部分。
Swift是友好的新的程序。它是第一个获得工业质量体系
编程语言,如表情和愉快的脚本
语言。它支持操场,一个创新的功能,它允许
程序员尝试斯威夫特代码并立即看到结果,
没有建立和运行一个应用程序的开销。
斯威夫特结合了最好的现代语言思维与智慧
更宽的苹果工程师文化。编译器是针对性能进行了优化,
和语言的发展进行了优化,在不影响
无论是。它的设计从“你好,世界”扩展到整个操作系统。
这一切都使得雨燕的开发者和苹果健全的未来投资。
Swift是一个很好的方式来写的iOS和OS X的应用程序,并且将继续发展
新的特性和功能。我们的目标雨燕是雄心勃勃。我们不能
等着看你用它创造什么
H264 Android解码
一种H264文件的解码显示Demo,调用的是经过裁剪的 ffmpeg库中的264解码部分