注册

1. 概述

随着各互联网业务玩法的不断创新,上层业务APP往往需要控制音视频输入输出。同时开启多个音视频模块也是常见需求,但手机或PC设备往往只有一个录音或者摄像头,并只允许一个APP访问,因此为了协调模块间的设备使用情况,我们将设备管理模块单独提供给用户,以提供更好的用户体验,比如模块间切换时(从连麦模式切换到通话模式)不需要关闭摄像头再开启摄像头。

Device Manager与Render Manager是整个框架系统中两个通用模块,通话或者直播都需要这两个模块。Device Manager主要用于设备管理,而Render Manager主要用于管理与控制视频渲染View。

同时Device Manager还提供一些混音、混响、美颜、调节音量/音效、设置曝光策略等接口,用户可以通过这些接口操作设备数据源。


Device Manager功能数据图


Render Manager主要用于管理用户设置的视频渲染View,用户创建视频渲染View以后,可以将View放到UI特定位置上,并通过Render Manager将某个View绑定到特定用户的视频流上完成对视频layout的控制。

注:对于Device Manager以及Render Manager对象,每个APP中只应维持一个单独的实例。

2. Device Manager基本功能代码示例

2.1 初始化并开启设备

2.2 关闭媒体设备并析构

 

3. Render Manager功能代码示例

 

4. Device Manager混音功能调用框图

以MP3背景音乐混流为例,用户可以做到以下事情:

  1. 控制混音背景/前景音量;
  2. 音乐耳返、Mic数据耳返(Mic 数据耳返只在iOS上支持);
  3. 循环播放同一音乐;
  4. 暂停、恢复混音;
  5. 在混音结束得到通知;

目前除MP3外还支持M4A以及WAVE文件格式。

mix-mp3-sequence

5. DeviceManager基本代码示例

  1. 构造并初始化DeviceManager
  1. 添加删除逻辑
  1. 添加混音逻辑以及音量控制
  1. 静音麦克风以及扬声器

 

6. 监听Device Manager事件

7. 摄像头基本代码示例

切换摄像头代码示例

8. 视频美化代码示例