瀏覽代碼

feat(rn) support getDisplayMedia

Co-authored-by: Saúl Ibarra Corretgé <s@saghul.net>
dev1
tmoldovan8x8 5 年之前
父節點
當前提交
2a2405e936
沒有連結到貢獻者的電子郵件帳戶。
共有 1 個檔案被更改,包括 23 行新增0 行删除
  1. 23
    0
      modules/RTC/ScreenObtainer.js

+ 23
- 0
modules/RTC/ScreenObtainer.js 查看文件

@@ -83,6 +83,8 @@ const ScreenObtainer = {
83 83
             };
84 84
         } else if (browser.isElectron()) {
85 85
             return this.obtainScreenOnElectron;
86
+        } else if (browser.isReactNative() && browser.supportsGetDisplayMedia()) {
87
+            return this.obtainScreenFromGetDisplayMediaRN;
86 88
         } else if (browser.supportsGetDisplayMedia()) {
87 89
             return this.obtainScreenFromGetDisplayMedia;
88 90
         }
@@ -207,6 +209,27 @@ const ScreenObtainer = {
207 209
 
208 210
                 errorCallback(new JitsiTrackError(JitsiTrackErrors.SCREENSHARING_USER_CANCELED));
209 211
             });
212
+    },
213
+
214
+    /**
215
+     * Obtains a screen capture stream using getDisplayMedia.
216
+     *
217
+     * @param callback - The success callback.
218
+     * @param errorCallback - The error callback.
219
+     */
220
+    obtainScreenFromGetDisplayMediaRN(options, callback, errorCallback) {
221
+        logger.info('Using getDisplayMedia for screen sharing');
222
+
223
+        navigator.mediaDevices.getDisplayMedia({ video: true })
224
+            .then(stream => {
225
+                callback({
226
+                    stream,
227
+                    sourceId: stream.id });
228
+            })
229
+            .catch(() => {
230
+                errorCallback(new JitsiTrackError(JitsiTrackErrors
231
+                    .SCREENSHARING_USER_CANCELED));
232
+            });
210 233
     }
211 234
 };
212 235
 

Loading…
取消
儲存