示例#1
0
 public static GenerateTestUserSig GetInstance()
 {
     if (mInstance == null)
     {
         mInstance = new GenerateTestUserSig();
     }
     return(mInstance);
 }
示例#2
0
        private void JoinBtn_Click(object sender, RoutedEventArgs e)
        {
            if (GenerateTestUserSig.SDKAPPID == 0)
            {
                ShowMessage("Error: 请先在 GenerateTestUserSig 填写 sdkappid 信息");
                return;
            }

            string userId = this.userTextBox.Text;
            string roomId = this.roomTextBox.Text;

            if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(roomId))
            {
                ShowMessage("房间号或用户号不能为空!");
                return;
            }

            DataManager.GetInstance().userId = userId;
            DataManager.GetInstance().roomId = uint.Parse(roomId);

            // 从本地计算获取 userId 对应的 userSig
            // 注意!本地计算是适合在本地环境下调试使用,正确的做法是将 UserSig 的计算代码和加密密钥放在您的业务服务器上,
            // 然后由 App 按需向您的服务器获取实时算出的 UserSig。
            // 由于破解服务器的成本要高于破解客户端 App,所以服务器计算的方案能够更好地保护您的加密密钥。
            string userSig = GenerateTestUserSig.GetInstance().GenTestUserSig(userId);

            if (string.IsNullOrEmpty(userSig))
            {
                ShowMessage("userSig 获取失败,请检查是否填写账号信息!");
                return;
            }

            MainWindow mainWindow = new MainWindow();

            mainWindow.Show();
            mainWindow.EnterRoom();
            this.Close();
        }
示例#3
0
        public void EnterRoom()
        {
            // 设置进房所需的相关参数
            TRTCParams trtcParams = new TRTCParams();

            trtcParams.sdkAppId = GenerateTestUserSig.SDKAPPID;
            trtcParams.roomId   = DataManager.GetInstance().roomId;
            trtcParams.userId   = DataManager.GetInstance().userId;
            trtcParams.userSig  = GenerateTestUserSig.GetInstance().GenTestUserSig(DataManager.GetInstance().userId);
            // 如果您有进房权限保护的需求,则参考文档{https://cloud.tencent.com/document/product/647/32240}完成该功能。
            // 在有权限进房的用户中的下面字段中添加在服务器获取到的privateMapKey。
            trtcParams.privateMapKey = "";
            trtcParams.businessInfo  = "";
            trtcParams.role          = DataManager.GetInstance().roleType;
            // 若您的项目有纯音频的旁路直播需求,请配置参数。
            // 配置该参数后,音频达到服务器,即开始自动旁路;
            // 否则无此参数,旁路在收到第一个视频帧之前,会将收到的音频包丢弃。
            if (DataManager.GetInstance().pureAudioStyle)
            {
                trtcParams.businessInfo = "{\"Str_uc_params\":{\"pure_audio_push_mod\": 1}}";
            }
            else
            {
                trtcParams.businessInfo = "";
            }

            // 用户进房
            mTRTCCloud.enterRoom(ref trtcParams, DataManager.GetInstance().appScene);

            // 设置默认参数配置
            TRTCVideoEncParam   encParams = DataManager.GetInstance().videoEncParams; // 视频编码参数设置
            TRTCNetworkQosParam qosParams = DataManager.GetInstance().qosParams;      // 网络流控相关参数设置

            mTRTCCloud.setVideoEncoderParam(ref encParams);
            mTRTCCloud.setNetworkQosParam(ref qosParams);
            mTRTCCloud.setLocalViewFillMode(DataManager.GetInstance().videoFillMode);
            mTRTCCloud.setLocalViewMirror(DataManager.GetInstance().isLocalVideoMirror);
            mTRTCCloud.setLocalViewRotation(DataManager.GetInstance().videoRotation);
            mTRTCCloud.setVideoEncoderMirror(DataManager.GetInstance().isRemoteVideoMirror);

            // 设置美颜
            if (DataManager.GetInstance().isOpenBeauty)
            {
                mTRTCCloud.setBeautyStyle(DataManager.GetInstance().beautyStyle, DataManager.GetInstance().beauty,
                                          DataManager.GetInstance().white, DataManager.GetInstance().ruddiness);
            }

            // 设置大小流
            if (DataManager.GetInstance().pushSmallVideo)
            {
                TRTCVideoEncParam param = new TRTCVideoEncParam
                {
                    videoFps        = 15,
                    videoBitrate    = 100,
                    videoResolution = TRTCVideoResolution.TRTCVideoResolution_320_240
                };
                mTRTCCloud.enableSmallVideoStream(true, ref param);
            }
            if (DataManager.GetInstance().playSmallVideo)
            {
                mTRTCCloud.setPriorRemoteVideoStreamType(TRTCVideoStreamType.TRTCVideoStreamTypeSmall);
            }
            // 房间信息
            mUserId = trtcParams.userId;
            mRoomId = trtcParams.roomId;
            this.infoLabel.Content = "房间号:" + mRoomId;

            // 本地主流自定义渲染 View 动态绑定和监听 SDK 渲染回调
            mTRTCCloud.startLocalPreview(IntPtr.Zero);
            AddCustomVideoView(this.videoContainer, mUserId, TRTCVideoStreamType.TRTCVideoStreamTypeBig, true);

            mTRTCCloud.startLocalAudio();
        }