<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 視頻會議流程 ### 獲取token ``` post-uri: https://ip:3004/createToken/ 參數: {"role":"presenter","username":"user","room":""} ``` ### 加入會議室 解析token ``` JSONObject jsonToken = new JSONObject( new String(Base64.decode(token, Base64.DEFAULT))); ``` 解析出來的token是 ``` {"tokenId":"5f253b987171911f9b70dc6e","host":"xxx:8080","secure":true,"signature":"NmRiMGVmOWUxZTZhODIyY2YxYzUwYjkzZjBiMWIyZDBkYTQ1MWFlYTNhZjNlMWFkYjg1NmFjNWU0ZTFhNGJlNQ=="} ``` 初始化 socketio參數,開始連接服務器 ``` socketClient = IO.socket(url, opt); socketClient.connect(); ``` 獲取到會議室信息 ``` //通過token加入服務器 conferenceClient.join(token, new ActionCallback<ConferenceInfo>() {} // 發送登錄服務器到指令 socketClient.emit("login",....); // 處理服務器返回回來的會議室信息 observer.onRoomConnected((JSONObject) args[1]); public void onRoomConnected(final JSONObject info) {} // 創建會議信息對象 conferenceInfo = new ConferenceInfo(info); // 加入會議室成功 joinCallback.onSuccess(conferenceInfo); // 添加會議室流id信息 remoteStreamIdList.add(remoteStream.id()); remoteStreamMap.put(remoteStream.id(), remoteStream); ``` ### 采集和推流 采集信息 ``` capturer = OwtVideoCapturer.create(vga ? 640 : 1280, vga ? 480 : 720, 30, true, isCameraFront); localStream = new LocalStream(capturer, new MediaConstraints.AudioTrackConstraints()); localStream.attach(localRenderer); ``` 推流關鍵函數: ``` sendSignalingMessage("publish", publishMsg, args -> {} conferenceClient.publish(localStream, setPublishOptions(), callback); ``` ### 拉流 選擇一個流 ``` private View.OnClickListener subscribe = new View.OnClickListener() { public void onClick(View v) {} } ``` 選擇編碼: ``` public void chooseCodec(RemoteStream remoteStream) {} ``` 開始拉流 ``` conferenceClient.subscribe(remoteStream, options,) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看