為了獲得兩個影片 mediaStreamTrack,我應該將哪些約束傳遞給 getUserMedia()?
P粉818317410
P粉818317410 2023-10-23 17:03:58
0
1
598

我可以透過 navigator.mediaDevices.enumerateDevices() Promise 取得「videoinput」類型的 mediaDevices。

我可以透過 navigator.mediaDevices.getUserMedia(constraints) 承諾取得 mediaStream。

為了在 userMedia 中擁有兩個視訊軌道,constraints 應該是什麼樣子?

P粉818317410
P粉818317410

全部回覆(1)
P粉060528326

每次呼叫getUserMedia()時最多可以獲得一個視訊軌道和一個音訊軌道,但可以多次呼叫。不過,這可能會多次詢問用戶,具體取決於 https、瀏覽器以及用戶的操作。

遵循標準(目前需要在Chrome 中使用adapter.js ),以獲得特定的「videoinput " 設備,使用deviceId 約束將其deviceId 傳遞到getUserMedia 中:

navigator.mediaDevices.enumerateDevices()
.then(devices => {
  var camera = devices.find(device => device.kind == "videoinput");
  if (camera) {
    var constraints = { deviceId: { exact: camera.deviceId } };
    return navigator.mediaDevices.getUserMedia({ video: constraints });
  }
})
.then(stream => video.srcObject = stream)
.catch(e => console.error(e));

exact 關鍵字使約束成為必需,並保證它只回傳正確的約束,否則就會失敗。

如果您想要兩個攝像頭,則必須使用不同的 deviceId 再次呼叫 getUserMedia,並希望您所在的作業系統支援它(例如,手機通常不要)。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!