|
楼主 |
发表于 2009-6-24
|
抖动缓冲区 JitterBuffer
抖动缓冲区用于解决网络抖动的问题。所谓网络抖动,就是网络延迟一会大一会小,在这种情况下,即使发送方是定时发送数据包的(比如每100ms发送一个包),而接收方的接收就无法同样定时了,有时一个周期内一个包都接收不到,有时一个周期内接收到好几个包。如此,导致接收方听到的声音就是一卡一卡的。
JitterBuffer工作于解码器之后,语音播放之前的环节。即语音解码完成后,将解码帧放入JitterBuffer,声卡的播放回调到来时,从JitterBuffer中取出最老的一帧进行播放。
JitterBuffer的缓冲深度取决于网络抖动的程度,网络抖动越大,缓冲深度越大,播放音频的延迟就越大。所以,JitterBuffer是利用了较高的延迟来换取声音的流畅播放的,因为相比声音一卡一卡来说,稍大一点的延迟但更流畅的效果,其主观体验要更好。
当然,JitterBuffer的缓冲深度不是一直不变的,而是根据网络抖动程度的变化而动态调整的。当网络恢复到非常平稳通畅时,缓冲深度会非常小,这样因为JitterBuffer而增加的播放延迟就可以忽略不计了。
静音检测 VAD
在语音对话中,要是当一方没有说话时,就不会产生流量就好了。静音检测就是用于这个目的的。静音检测通常也集成在编码模块中。静音检测算法结合前面的噪声抑制算法,可以识别出当前是否有语音输入,如果没有语音输入,就可以编码输出一个特殊的的编码帧(比如长度为0)。
特别是在多人视频会议中,通常只有一个人在发言,这种情况下,利用静音检测技术而节省带宽还是非常可观的。
混音算法
在多人语音聊天时,我们需要同时播放来自于多个人的语音数据,而声卡播放的缓冲区只有一个,所以,需要将多路语音混合成一路,这就是混音算法要做的事情。即使,你可以想办法绕开混音而让多路声音同时播放,那么对于回音消除的目的而言,也必需混音成一路播放,否则,回音消除最多就只能消除多路声音中的某一路。
混音可以在客户端进行,也可以在服务端进行(可节省下行的带宽)。如果使用了P2P通道,那么混音就只能在客户端进行了。如果是在客户端混音,通常,混音是播放之前的最后一个环节。
AnyChat是国内知名音视频互动开发平台,经过长达六年之久的广泛应用和复杂化环境的检测,AnyChat SDK系统在兼容性、安全性、稳定性、易用性方面具有较高的声誉。
产品跨平台
AnyChat支持跨平台的应用,服务器支持Windows、Linux、Unix等所有主流服务器操作系统,客户端目前支持Windows、Linux(x86、ARM)以及Windows Mobile、Android、iPhone平台等,目前正在研发Win Phone7等平台。AnyChat的跨平台特性,为客户提供了广阔的应用空间,如实现Windows桌面用户的语音视频交互的同时,还可以定制嵌入式硬件解决方案,实现嵌入式硬件与Windows桌面应用的互联互通,在部队远程指挥、政府应急系统、数字化家庭、移动视频监控、专家咨询、在线客服、呼叫中心以及移动音视频采集等领域有广泛的应用空间。
视频技术
AnyChat采用国际领先的视频编码标准H.264(MPEG-4 part 10 AVC /H.264)编码,H.264/AVC 在压缩效率方面有着特殊的表现,一般情况下达到 MPEG-2 及 MPEG-4 简化类压缩效率的大约 2 倍。H.264具有许多与旧标准不同的新功能,它们一起实现了编码效率的提高。特别是在帧内预测与编码、帧间预测与编码、可变矢量块大小、四分之一像素运动估计、多参考帧预测、自适应环路去块滤波器、整数变换、量化与变换系数扫描、熵编码、加权预测等实现上都有其独特的考虑。
采用先进去马赛克技术,保障在视频通讯过程中不出现花屏、马赛克等现象。
音频技术
AnyChat采用先进的AAC(Advanced Audio Coding)语音编码体系,AAC是 MPEG1/2 Audio 的下一代有损音频编码, 并且是 MPEG-4 使用的音频编码,AAC采用了感知子带技术(perceptual sub-band technology),与MP3等其它编码器相比,AAC编码器很大程度地改善了数据压缩率和声音品质。
全面支持静音检测(VAD)、噪音抑制(NS)、自动增益(AGC)以及回音消除(AEC)等音效处理,极大提高用户体验。
P2P技术
AnyChat针对可不经过服务器中转的音视频应用,采用了P2P通信技术,该技术的核心在于防火墙的穿越。使用P2P通信技术,可以大大的减轻系统服务器的负荷,并成几何倍数的扩大系统的容量,且并不会因为在线用户数太多而导致服务器的网络阻塞。
支持UPNP协议,自动搜索网络中的UPNP设备,主动打开端口映射,提高P2P通信效率。
高性能网络核心
AnyChat服务器模块采用完成端口实现高性能的系统架构,采用重叠I/O机制,通过线程池和缓冲池的管理,极高的优化了系统结构,提高了系统的性能。特别是在多CPU的服务器上,AnyChat服务器更能发挥服务器多处理器的优势。
AnyChat采用佰锐科技拥有自主知识产权的“MultiPath”P2P网络路由算法,将服务器上的用户组成一个P2P互通的网络,流媒体数据在用户之间传递,减少对服务器的网络带宽占用,实现了一个高性能P2P网络核心。
传统的P2P网络应用(如P2P在线影院)所采用的算法需要长时间(如30秒,或更长)的缓冲,不适合即时通讯领域所要求的低延迟的目标,“MultiPath”P2P网络路由算法便是针对即时通讯领域专门设计的P2P网络算法,它保留了P2P网络原有的网络带宽优势,同时又极大的降低了中间的缓冲时间。
开放的接口
AnyChat SDK分为客户端SDK和AnyChat Server SDK两大部分,其中客户端SDK用于实现语音、视频的交互以及其它客户端相关的功能,而服务器SDK主要实现业务层逻辑控制,以及与第三方平台的互联等。客户端SDK和服务器SDK均支持C++、C#、VB.Net以及Delphi等开发语言。AnyChat SDK采用模块化技术体系,良好的平台兼容性与可扩展性,丰富的API函数,为上层应用提供了开放的应用接口。
AnyChat内核开放CODEC接口,支持集成第三方的音视频编、解码器,可实现嵌入式终端设备上的硬件编解码。 |
|