媒体管理功能提供了完整的音视频采集、渲染和处理能力,包括视频配置、音频控制、渲染管理等功能。支持多种视频分辨率、音频处理、OpenGL渲染等高级特性。
在开始视频通话前,先配置视频参数:
// 设置视频采集参数 - 720P 30fps
NemoSdkAdaptor::getInstance()->setVideoProfile(XYVideoResolution_720P, XYVideoFrameRate_30);
// 设置本地视频渲染配置 - 640x480分辨率,启用渲染
NemoSdkAdaptor::getInstance()->setVideoRenderConfig(640, 480, true);
// 设置本地视频镜像翻转 - 启用镜像
NemoSdkAdaptor::getInstance()->setLocalPreviewFlip(true);
配置完成后,启动音视频采集:
// 启动摄像头采集
NemoSdkAdaptor::getInstance()->startCamera();
// 开始音频采集
NemoSdkAdaptor::getInstance()->startAudioCapture();
设置视频渲染和显示:
// 绑定OpenGL渲染
NemoSdkAdaptor::getInstance()->bindGLRender(windowHandle);
// 设置订阅参会者列表
NemoSdkAdaptor::getInstance()->setRenderResources(participantList);
管理音频采集和播放:
// 设置麦克风音量
NemoSdkAdaptor::getInstance()->setMicVolume(80);
// 设置扬声器音量
NemoSdkAdaptor::getInstance()->setSpeakerVolume(70);
// 开启音频旁路
NemoSdkAdaptor::getInstance()->setMicDataByAEEnabled(true);
API: setVideoProfile
接口定义:
virtual void setVideoProfile(XYVideoResolution resolution, XYVideoFrameRate frameRate) = 0;
参数:
resolution
: XYVideoResolution - 视频分辨率frameRate
: XYVideoFrameRate - 视频帧率示例:
// 设置720P 30fps
NemoSdkAdaptor::getInstance()->setVideoProfile(XYVideoResolution_720P, XYVideoFrameRate_30);
// 设置1080P 60fps
NemoSdkAdaptor::getInstance()->setVideoProfile(XYVideoResolution_1080P, XYVideoFrameRate_60);
API: setVideoRenderConfig
接口定义:
virtual void setVideoRenderConfig(int width, int height, bool enable) = 0;
参数:
width
: int - 渲染宽度height
: int - 渲染高度enable
: bool - 是否启用示例:
NemoSdkAdaptor::getInstance()->setVideoRenderConfig(1280, 720, true);
API: setLocalPreviewFlip
接口定义:
virtual void setLocalPreviewFlip(bool enable) = 0;
参数:
enable
: bool - 是否启用镜像翻转示例:
NemoSdkAdaptor::getInstance()->setLocalPreviewFlip(true);
API: startCamera
接口定义:
virtual void startCamera() = 0;
示例:
NemoSdkAdaptor::getInstance()->startCamera();
API: stopCamera
接口定义:
virtual void stopCamera() = 0;
示例:
NemoSdkAdaptor::getInstance()->stopCamera();
API: startAudioCapture
接口定义:
virtual void startAudioCapture() = 0;
示例:
NemoSdkAdaptor::getInstance()->startAudioCapture();
API: stopAudioCapture
接口定义:
virtual void stopAudioCapture() = 0;
示例:
NemoSdkAdaptor::getInstance()->stopAudioCapture();
API: setMicVolume
接口定义:
virtual void setMicVolume(int volume) = 0;
参数:
volume
: int - 音量值(0-100)示例:
NemoSdkAdaptor::getInstance()->setMicVolume(80);
API: setSpeakerVolume
接口定义:
virtual void setSpeakerVolume(int volume) = 0;
参数:
volume
: int - 音量值(0-100)示例:
NemoSdkAdaptor::getInstance()->setSpeakerVolume(70);
API: getMicVolume
接口定义:
virtual int getMicVolume() = 0;
返回值: int - 当前麦克风音量值(0-100)
示例:
int micVolume = NemoSdkAdaptor::getInstance()->getMicVolume();
API: getSpeakerVolume
接口定义:
virtual int getSpeakerVolume() = 0;
返回值: int - 当前扬声器音量值(0-100)
示例:
int speakerVolume = NemoSdkAdaptor::getInstance()->getSpeakerVolume();
API: bindGLRender
参数:
windowHandle
: 窗口句柄示例:
NemoSdkAdaptor::getInstance()->bindGLRender(windowHandle);
API: unbindGLRender
示例:
NemoSdkAdaptor::getInstance()->unbindGLRender();
API: paintGL
示例:
NemoSdkAdaptor::getInstance()->paintGL();
API: setRenderResources
参数:
participantList
: 参会者列表示例:
NemoSdkAdaptor::getInstance()->setRenderResources(participantList);
class MediaManager {
private:
bool _isVideoStarted = false;
bool _isAudioStarted = false;
int _micVolume = 80;
int _speakerVolume = 70;
public:
void initializeMedia() {
// 设置视频配置
setVideoConfig(XYVideoResolution_720P, XYVideoFrameRate_30);
// 设置音频配置
setAudioConfig();
}
void setVideoConfig(XYVideoResolution resolution, XYVideoFrameRate frameRate) {
NemoSdkAdaptor::getInstance()->setVideoProfile(resolution, frameRate);
NemoSdkAdaptor::getInstance()->setVideoRenderConfig(1280, 720, true);
}
void setAudioConfig() {
NemoSdkAdaptor::getInstance()->setMicVolume(_micVolume);
NemoSdkAdaptor::getInstance()->setSpeakerVolume(_speakerVolume);
NemoSdkAdaptor::getInstance()->setAudioAutoGainCtrl(true);
}
void startVideo() {
if (!_isVideoStarted) {
NemoSdkAdaptor::getInstance()->startCamera();
_isVideoStarted = true;
}
}
void stopVideo() {
if (_isVideoStarted) {
NemoSdkAdaptor::getInstance()->stopCamera();
_isVideoStarted = false;
}
}
void startAudio() {
if (!_isAudioStarted) {
NemoSdkAdaptor::getInstance()->startAudioCapture();
_isAudioStarted = true;
}
}
void stopAudio() {
if (_isAudioStarted) {
NemoSdkAdaptor::getInstance()->stopAudioCapture();
_isAudioStarted = false;
}
}
void bindGLRender(void* windowHandle) {
NemoSdkAdaptor::getInstance()->bindGLRender(windowHandle);
}
void unbindGLRender() {
NemoSdkAdaptor::getInstance()->unbindGLRender();
}
void paintGL() {
NemoSdkAdaptor::getInstance()->paintGL();
}
void setMicVolume(int volume) {
_micVolume = qBound(0, volume, 100);
NemoSdkAdaptor::getInstance()->setMicVolume(_micVolume);
}
void setSpeakerVolume(int volume) {
_speakerVolume = qBound(0, volume, 100);
NemoSdkAdaptor::getInstance()->setSpeakerVolume(_speakerVolume);
}
// 视频状态变化回调
void onVideoStatusChanged(XYVideoStatus status, const XYString& userId) {
QString userIdStr(userId.str());
emit videoStatusChanged(status, userIdStr);
}
// 音频音量变化回调
void onAudioVolumeChanged(const XYString& userId, int volume) {
QString userIdStr(userId.str());
emit audioVolumeChanged(userIdStr, volume);
}
// 麦克风能量变化回调
void onMicEnergyChanged(int energy) {
emit micEnergyChanged(energy);
}
// Getter方法
bool isVideoStarted() const { return _isVideoStarted; }
bool isAudioStarted() const { return _isAudioStarted; }
int getMicVolume() const { return _micVolume; }
int getSpeakerVolume() const { return _speakerVolume; }
};
状态 | 说明 |
| 视频已启动 |
| 视频已停止 |
| 视频已静音 |
| 视频已取消静音 |
方法 | 描述 | 链接 |
设置摄像头采集参数 | ||
设置本地视频渲染配置 | ||
设置本地视频镜像翻转 | ||
启动摄像头采集 | ||
关闭摄像头采集 |
方法 | 描述 | 链接 |
开始音频采集 | ||
停止音频采集 | ||
设置麦克风音量 | ||
设置扬声器音量 | ||
获取麦克风音量 | ||
获取扬声器音量 |
方法 | 描述 | 链接 |
绑定OpenGL渲染 | ||
解绑OpenGL渲染 | ||
OpenGL渲染 | ||
设置订阅参会者列表 |
回调 | 描述 | 链接 |
视频状态变化回调 | ||
视频流变化回调 | ||
视频帧就绪回调 | ||
麦克风状态变化回调 | ||
音频音量变化回调 | ||
麦克风能量变化回调 |
枚举 | 描述 | 链接 |
视频分辨率枚举 | ||
视频帧率枚举 | ||
视频状态枚举 |