using Agora.Rtc; using Masuit.Tools.Systems; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo.Common.Helpers { public class AgoraHelper { public static uint _localUId; public static IRtcEngine _RtcEngineInstance; public static int Init(string appId, uint localUid = 0) { if (_RtcEngineInstance != null) { return 0; } if (null == _RtcEngineInstance) { _RtcEngineInstance = RtcEngine.CreateAgoraRtcEngine(); } RtcEngineContext rtc_engine_ctx = new RtcEngineContext(); rtc_engine_ctx.appId = appId; var ret = _RtcEngineInstance.Initialize(rtc_engine_ctx); ret = _RtcEngineInstance.InitEventHandler(new RtcEngineEventHandler()); _localUId = localUid; _RtcEngineInstance.EnableAudioVolumeIndication(200, 3, false); return ret; } public static int UnInit() { if (null != _RtcEngineInstance) { // Dispose engine _RtcEngineInstance.Dispose(); _RtcEngineInstance = null; } return 0; } /// /// 渲染用户视频 /// /// /// /// public static int SetupUserVideo(uint uid, long controlHandle) { if (_localUId == uid) { // 本地用户 return _RtcEngineInstance.SetupLocalVideo(new VideoCanvas { view = controlHandle, renderMode = RENDER_MODE_TYPE.RENDER_MODE_HIDDEN, mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_DISABLED, uid = uid, setupMode = VIDEO_VIEW_SETUP_MODE.VIDEO_VIEW_SETUP_ADD }); } else { return _RtcEngineInstance.SetupRemoteVideo(new VideoCanvas { view = controlHandle, renderMode = RENDER_MODE_TYPE.RENDER_MODE_HIDDEN, mirrorMode = VIDEO_MIRROR_MODE_TYPE.VIDEO_MIRROR_MODE_DISABLED, uid = uid, setupMode = VIDEO_VIEW_SETUP_MODE.VIDEO_VIEW_SETUP_ADD }); } } /// /// 清除已渲染的用户视频 /// /// /// /// public static int ClearUserVideo(uint uid, long controlHandle) { if (_localUId == uid) { // 本地用户 // 删除用户渲染 return _RtcEngineInstance.SetupLocalVideo(new VideoCanvas { view = controlHandle, uid = uid, setupMode = VIDEO_VIEW_SETUP_MODE.VIDEO_VIEW_SETUP_REMOVE }); } else { return _RtcEngineInstance.SetupRemoteVideo(new VideoCanvas { view = controlHandle, uid = uid, setupMode = VIDEO_VIEW_SETUP_MODE.VIDEO_VIEW_SETUP_REMOVE }); } } /// /// 渲染用户视频 /// /// /// /// /// public static int SetupUserVideo(uint uid, long controlHandle, uint delUid = 0) { if (delUid > 0) { ClearUserVideo(delUid, controlHandle); } return SetupUserVideo(uid, controlHandle); } } }