Apakah kekangan yang perlu saya lalui kepada getUserMedia() untuk mendapatkan dua mediaStreamTracks video?
P粉818317410
P粉818317410 2023-10-23 17:03:58
0
1
609

Saya boleh mendapatkan mediaDevices jenis "videoinput" melalui navigator.mediaDevices.enumerateDevices() Janji.

Saya boleh mendapatkan mediaStream melalui navigator.mediaDevices.getUserMedia(constraints) janji.

Untuk mempunyai dua runut video dalam userMedia, apakah yang sepatutnya constraints kelihatan?

P粉818317410
P粉818317410

membalas semua(1)
P粉060528326

Anda boleh mendapatkan paling banyak satu runut video dan satu runut audio setiap kali anda membuat panggilan getUserMedia(), tetapi ia boleh dipanggil beberapa kali. Walau bagaimanapun, ini mungkin bertanya kepada pengguna beberapa kali, bergantung pada https, penyemak imbas dan tindakan pengguna.

Ikuti standard (pada masa ini memerlukan adapter.js dalam Chrome), untuk mendapatkan peranti "videoinput" tertentu, gunakan deviceId 约束将其 deviceId 传递到 getUserMedia dalam:

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));
Kata kunci

exact memerlukan kekangan, memastikan ia hanya mengembalikan kekangan yang betul, jika tidak, ia gagal.

Jika anda mahukan dua kamera, anda perlu menggunakan yang berbeza deviceId 再次调用 getUserMedia dan berharap sistem pengendalian yang anda gunakan menyokongnya (cth. telefon biasanya tidak).

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan