首页 » 技术分享 » 实现一个简单的语音聊天室(多人语音聊天系统)

实现一个简单的语音聊天室(多人语音聊天系统)

 

      多人语音聊天,或语音聊天室,是即时通信应用中常见的功能之中的一个,比方,QQ的语音讨论组就是我们用得比較多的。

      本文将基于最新版本号的OMCS(V3.5)实现一个简单的语音聊天室,让多个人能够进入同一个房间进行语音沟通。当然,在此之前,您必须对OMCS有所了解,而且已经阅读、理解了OMCS 开发手冊(08) -- 多人语音/视频 这篇文章的内容。先看看Demo执行效果截图:

        

    从左到右的三张图各自是:登录界面、语音聊天室的主界面、标注了各个控件的主界面。  

一. C/S结构

  非常明显,我这个语音聊天室採用的是C/S结构,整个项目结构相对照较简单,例如以下所看到的:

       

   该项目的服务端不须要编写不论什么代码,直接把OMCS服务端拿过来用;client就比較麻烦些,以下我们就重点讲client的开发。

二. client控件式开发

  client开发了多个自己定义控件,然后将它们组装到一起,以完毕语音聊天室的功能。为了便于解说,我主界面的图做了标注,以指示出各个自己定义控件。  

  如今我们分别介绍各个控件:

1. 分贝显示器 

  分贝显示器用于显示声音的大小,比方麦克风採集到的声音的大小,或扬声器播放的声音的大小。如上图中3标注的。

(1)傅立叶变换

  将声音数据转换成分贝强度使用的是傅立叶变换。其相应的是client项目中的FourierTransformer静态类。源代码比較简单,就不贴出来了,大家自己去看。

(2)声音强度显示控件 DecibelDisplayer

  DecibelDisplayer 使用的是PrograssBar来显示声音强度的大小。

  每当有声音数据交给DecibelDisplayer显示时,首先,DecibelDisplayer会调用上面的傅立叶变换将其转换为分贝,然后,将其映射为PrograssBar的相应的Value。

2.发言者控件 SpeakerPanel

  SpeakerPanel 用于表示聊天室中的一个成员,如上图中1所看到的。它显示了成员的ID,成员的声音的强度(使用DecibelDisplayer控件),以及其麦克风的状态(启用、引用)。

  这个控件非常重要,我将其源代码贴出来:

复制代码

转载自原文链接, 如需删除请联系管理员。

原文链接:实现一个简单的语音聊天室(多人语音聊天系统),转载请注明来源!

0