import { AgoraRtcCameraCaptureParams, AgoraRtcCameraPosition, AgoraRtcMediaSourceIndex, AgoraRtcDeviceInfo, AgoraRtcDisplayInfo, AgoraRtcMediaSourceState, AgoraRtcScreenCaptureParams, AgoraRtcScreenCaptureType, AgoraRtcVideoOrientation, AgoraRtcWindowInfo, AgoraRtcSourceManagerObserver } from '../../../core/rtc/type'; import type { IRtcEngineEx } from 'shengwang-electron-sdk'; import { AgoraRtcSourceManager } from '../../../core/rtc/source-manager'; import { AgoraRtcErrorCode } from '../../../constant'; import { CameraPreviewTaskManager } from './camera-preview-task-manager'; import { AgoraElectronMediaRecorderManager } from './media-recorder/media-recorder-manager'; export declare class AgoraRtcSourceManagerImpl implements AgoraRtcSourceManager { private _rtcEngine; private _audioDeviceManager; private _videoDeviceManager; private _currentMicrophoneDeviceId; private _microphoneStateControl; private _microphoneStateControlObserver; private _cameraStateControl; private _cameraStateControlObserver; private _screenStateControl; private _screenStateControlObserver; private _windowStateControl; private _windowStateControlObserver; private _loopbackStateControl; private _loopbackStateControlObserver; private enableObserveSystemSelectedMicrophoneChanged; private _enableSystemSelectedMicrophonePolling; private _systemSelectedMicrophonePolling; private _cameraPreviewTaskManager; private _cameraCaptureParamsMapping; private _screenCaptureStoppedResolve; private _protectedSourceIds; private _screenCaptureParamsMapping; private _mediaRecorderManager; get keepRecording(): boolean; get isCameraCapturing(): boolean; /** * 检查指定 deviceId 的摄像头是否正在采集 */ isCameraCapturingByDeviceId(deviceId: string): boolean; constructor({ rtcEngine, cameraCaptureParams, screenCaptureParams, cameraPreviewTaskManager, }: { rtcEngine: IRtcEngineEx; cameraCaptureParams: AgoraRtcCameraCaptureParams; screenCaptureParams: AgoraRtcScreenCaptureParams; cameraPreviewTaskManager: CameraPreviewTaskManager; }); addObserver(observer: AgoraRtcSourceManagerObserver): void; removeObserver(observer: AgoraRtcSourceManagerObserver): void; release(): number; private _addListener; private _removeListener; get microphoneKeepRecording(): boolean; observeSystemSelectedMicrophoneChanged(enable: boolean): AgoraRtcErrorCode; getCameraList(): Promise; getCameraSourceIndex(deviceId: string): AgoraRtcMediaSourceIndex; getCameraPosition(): AgoraRtcCameraPosition; getCameraState(deviceId: string): AgoraRtcMediaSourceState; getMicrophoneList(): Promise; getSystemSelectedMicrophone(): Promise; getMicrophoneState(deviceId: string): AgoraRtcMediaSourceState; getWindowList(): Promise; getDisplayList(): Promise; getScreenCaptureState(sourceId: string, type: AgoraRtcScreenCaptureType): AgoraRtcMediaSourceState; getLoopbackList(): AgoraRtcDeviceInfo[]; getLoopbackRecordingState(deviceId: string): AgoraRtcMediaSourceState; setCameraVideoOrientation(deviceId: string, orientation: AgoraRtcVideoOrientation): number; setCameraCaptureParams(deviceId: string, params: AgoraRtcCameraCaptureParams): number; openCamera(deviceId: string): number; closeCamera(deviceId: string): number; startCameraTest(deviceId: string): number; stopCameraTest(deviceId: string): number; switchCamera(): number; updateExcludeWindowsByDisplayId(displayId: string, excludeWindowList: string[]): number; setKeepAudioRecording(keepRecording: boolean): void; startRecordingDeviceCapture(): number; stopRecordingDeviceCapture(): number; openMicrophone(deviceId: string): number; closeMicrophone(deviceId: string): number; startMicrophoneTest(deviceId: string): number; stopMicrophoneTest(deviceId: string): number; adjustMicrophoneVolume(deviceId: string, volume: number): number; startScreenCaptureByDisplayIdWithParams(displayId: string, params: AgoraRtcScreenCaptureParams, excludeWindowList: string[]): number; startScreenCaptureByDisplayId(displayId: string, excludeWindowList: string[]): number; startScreenCaptureByWindowIdWithParams(windowId: string, params: AgoraRtcScreenCaptureParams): number; startScreenCaptureByWindowId(windowId: string, enableHighLight?: boolean): number; stopScreenCapture(sourceId: string, type: AgoraRtcScreenCaptureType, forceCleanState?: boolean): number; waitForScreenCaptureStopped(timeoutMs?: number): Promise; protectSourceId(sourceId: string): void; unprotectSourceId(sourceId: string): void; startScreenCapture(sourceId: string, params: AgoraRtcScreenCaptureParams): number; setLoopbackInstalled(installed: boolean): void; /** * 获取媒体录制管理器 * @returns 媒体录制管理器 */ getMediaRecorderManager(): AgoraElectronMediaRecorderManager; startLoopbackRecording(sourceId: string): number; stopLoopbackRecording(sourceId: string): number; adjustLoopbackVolume(deviceId: string, volume: number): number; private _startMicrophoneCapture; private _stopMicrophoneCapture; private _startCameraCaptureAndBindSource; private _stopCameraCaptureAndUnbindSource; private _startScreenCapture; private _stopScreenCapture; private _startWindowCapture; private _stopWindowCapture; private _getCameraSourceIndex; /** * 根据 VideoSourceType 查找对应的 deviceId * @param sourceType - 视频源类型 * @returns 对应的 deviceId,如果找不到则返回 undefined */ private _getDeviceIdBySourceType; private _setRecordingDevice; private _stopScreenCaptureAndUnbindSource; private _startRecordingDeviceCapture; private _stopRecordingDeviceCapture; private _pickCurrentWindowId; private _getFormattedScreenCaptureSourceInfo; private _initializeDeviceList; private _getCameraList; private _getMicrophoneList; private _getDeviceListChangedInfo; private _getSystemSelectedUniqueDeviceId; private _getSystemSelectedMicrophone; private _getCameraCaptureSourceType; private _startCameraCapture; private _stopCameraCapture; private _getCameraCaptureParams; private _getScreenCaptureParams; private _getScreenCaptureRTCParams; private _startDisplayIdCaptureAndBindSource; private _startWindowCaptureAndBindSource; private _createMicrophoneStateControlObserver; private _createCameraStateControlObserver; private _createScreenStateControlObserver; private _createLoopbackStateControlObserver; private _handleVideoDeviceStateChanged; private _handleAudioDeviceStateChanged; /** * 更新麦克风设备列表并通知观察者 */ private _updateMicrophoneDeviceList; private _handleVolumeIndicatorUpdated; private _handleScreenCaptureStateChanged; /** * 处理摄像头视频状态变化 * @param source - 视频源类型 * @param callbackCaptureEnabled - RTC 回调的采集状态 * @param isErrorState - 是否为错误状态 * @param isCloseReason - 是否为关闭原因 */ private _handleCameraVideoStateChanged; private _handleLocalVideoStateChanged; private _handleLocalAudioStateChanged; private _handleLocalAudioError; private _handlePermissionError; private _checkRecordingDefaultDevice; private _createSystemSelectedMicrophonePolling; }