Appearance
媒体事件
媒体事件用于监听音视频流状态变化、音量指示、屏幕共享等媒体相关的事件。
音频事件
audioVolume
音量指示事件,用于监听用户的音量变化。
typescript
audioVolume: (volumeInfos: AliRtcAudioVolumeInfo[], totalVolume: number) => void参数说明:
volumeInfos: 音量信息数组totalVolume: 总音量
javascript
engine.on('audioVolume', (volumeInfos, totalVolume) => {
console.log('总音量:', totalVolume);
volumeInfos.forEach(volumeInfo => {
const { uid, volume } = volumeInfo;
console.log(`用户 ${uid} 音量:`, volume);
// 更新音量指示器 UI
updateVolumeIndicator(uid, volume);
});
});
// 启用音量检测
engine.enableAudioVolumeIndication(300); // 每300ms检测一次本地媒体事件
localDeviceException
本地设备异常事件。
typescript
localDeviceException: (deviceType: AliRtcEngineLocalDeviceType, exceptionType: AliRtcEngineLocalDeviceExceptionType, message: string) => void参数说明:
deviceType: 设备类型(摄像头/麦克风/扬声器)exceptionType: 异常类型message: 异常消息
javascript
engine.on('localDeviceException', (deviceType, exceptionType, message) => {
console.error('本地设备异常:', deviceType, exceptionType, message);
switch (deviceType) {
case AliRtcEngine.AliRtcEngineLocalDeviceType.AliRtcEngineLocalDeviceCamera:
handleCameraException(exceptionType, message);
break;
case AliRtcEngine.AliRtcEngineLocalDeviceType.AliRtcEngineLocalDeviceMicrophone:
handleMicrophoneException(exceptionType, message);
break;
case AliRtcEngine.AliRtcEngineLocalDeviceType.AliRtcEngineLocalDeviceSpeaker:
handleSpeakerException(exceptionType, message);
break;
}
});
function handleCameraException(exceptionType, message) {
switch (exceptionType) {
case AliRtcEngine.AliRtcEngineLocalDeviceExceptionType.AliRtcEngineLocalDeviceExceptionDeviceNoPermission:
showCameraPermissionDialog();
break;
case AliRtcEngine.AliRtcEngineLocalDeviceExceptionType.AliRtcEngineLocalDeviceExceptionDeviceNotAvailable:
showCameraNotAvailableMessage();
break;
case AliRtcEngine.AliRtcEngineLocalDeviceExceptionType.AliRtcEngineLocalDeviceExceptionDeviceOccupied:
showCameraOccupiedMessage();
break;
}
}