OMCS 开发手册(12) -- 混音器

       当需要为基于OMCS开发的语音/视频聊天系统或视频会议系统增加录制(录音或录像)功能时,就需要用到OMCS提供的混音器组件了。

       OMCS 提供了两种混音器组件:AudioInOutMixer 和 MicrophoneConnectorMixer。 

       AudioInOutMixer 用于在客户端录制时使用,MicrophoneConnectorMixer 用于在服务端录制时使用。     

一. AudioInOutMixer

       在客户端录制时,一般需要录制当前用户所参与的语音视频会话。  OMCS.Passive.Audio.AudioInOutMixer 的作用就是将本地话筒设备的输入数据以及本地声音播放的输出数据进行混音。

       AudioInOutMixer  接口定义如下所示:

     public class IAudioInOutMixer
    {
        /// <summary>
        /// 本地话筒设备采集的一帧音频数据以及本地扬声器播放的一帧输出数据进行混音。(音频数据长度:10ms)
        /// </summary>
        event CbGeneric<byte[]> AudioMixed;

        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="mgr"></param>
        void Initialize(IMultimediaManager mgr);

        /// <summary>
        /// 释放混音器。
        /// </summary>
        void Dispose();        
    }

(1)调用Initialize 初始化混音器后,混音器变开始正常工作。

(2)AudioMixed 会每隔10ms触发一次,每次输出10ms的混音数据。

(3)当使用完毕后,需要调用混音器的Dispose方法释放混音器。     

二. MicrophoneConnectorMixer

      在服务端录制与在客户端录制是非常不一样的,差别在于:

(1)一般在客户端只需要录制一个会话,即当前登录用户参与的那个会话。而在服务端,通常需要同时录制多个会话。

(2)客户端录制时,只需要将麦克风的声音与喇叭播放的声音混音,就是全部了。

          而在服务端录制时,需要拿到参与目标会话的所有用户的声音数据进行混音。而且,还要考虑到用户动态地加入或退出目标会话的情况。

      在服务端录制时,每个录制任务都需要new一个对应的 OMCS.Passive.Audio.MicrophoneConnectorMixer 。

      MicrophoneConnectorMixer 用于将多个MicrophoneConnector的声音数据进行混音。 

      MicrophoneConnectorMixer 接口定义如下:

    public class MicrophoneConnectorMixer
    {
        /// <summary>
        /// 每隔20毫秒触发一次,输出混音数据。参数:声音最大的发言人UserID - data。
        /// 如果此时无人发言,则UserID参数为null,data为静音数据。
        /// </summary>
        event CbGeneric<string, byte[]> AudioMixed;

        /// <summary>
        /// 添加要参与混音的MicrophoneConnector。
        /// </summary>        
        void AddMicrophoneConnector(MicrophoneConnector mc);

        /// <summary>
        /// 移除参与混音的MicrophoneConnector。
        /// </summary>        
        void RemoveMicrophoneConnector(string ownerID);

        /// <summary>
        /// 释放混音器。
        /// </summary>
        void Dispose();        
    }

(1)AudioMixed事件不仅输出了混音数据,而且还输出了发言声音最大音量的那个用户的ID。

(2)调用AddMicrophoneConnector、RemoveMicrophoneConnector 可以动态添加和移除用户。

         请特别注意: 混音器仅仅是从MicrophoneConnector 获取声音数据,并不会调用其 BeginConnector 或 Disconnect 方法。

          MicrophoneConnector 必须要连接成功后,才调用AddMicrophoneConnector将其加入到混音器中。

(3)使用完毕时,切记要调用Dispose方法释放混音器。   

 

      当很多人都同时在发言时,如果将所有的声音都加入到混音,可想而知,混音的结果就是乱哄哄的。这种情况下,我们可以只混音发言音量最大1~3个人。

      通过设置IMultimediaManager的Advanced的AudioMixedStrategy属性,即可指定需要将分贝值最大的前几个混音。 

     public enum AudioMixedStrategy
    {
        /// <summary>
        /// 只要有声音数据的line,都参与混音。
        /// </summary>
        All = 0,
        /// <summary>
        /// 只混音分贝值排名第一的line。
        /// </summary>
        DecibelTop1,
        /// <summary>
        /// 只混音分贝值排名前二的line。
        /// </summary>
        DecibelTop2,
        /// <summary>
        /// 只混音分贝值排名前三的line。
        /// </summary>
        DecibelTop3
    }

三. 在客户端录制或在服务端录制Demo

     具体可参见:OMCS Demo -- 远程录制或在服务器端录制语音、视频、屏幕

  

-----------------------------------------------------------------------------------------------------------------------------------------------   

下载免费版本的OMCS以及 demo源码

阅读 更多OMCS开发手册系列文章

Q Q:168757008

官网:www.oraycn.com

导航

首页

官方网站

联系我们

立即咨询 

站内搜索

OrayTalk 企业即时通讯系统

傲瑞通官网

详细说明

客户端下载

OrayMeeting 视频会议系统

详细说明

客户端下载

ESFramework 通信框架

详细说明

SDK与Demo下载

ESFramework FAQ

版本变更记录

OMCS 语音视频框架

详细说明

SDK与Demo下载

OMCS FAQ

版本变更记录

OVCS 视频会议Demo

详细说明

源码下载

傲瑞实用组件

SDK下载

H5Media 纯网页音视频交互

NPusher 推流组件

MCapture 语音视频采集组件

MFile 语音视频录制组件

MPlayer 语音视频播放组件

OAUS 自动升级系统

StriveEngine 轻量级的通信引擎

傲瑞组件 FAQ

授权

授权流程

产品选购指南

授权方案说明

授权SDK使用说明

其它

支持信创国产化

SDK使用技巧

联系我们