检查音频和视频设备是否使用javascript连接
我正在使用twilio视频API构建一个视频通话网络平台,我们要求在用户加入通话之前,我们必须检查用户是否有音频和视频设备连接到他的计算机,如果用户没有任何音频和视频设备,则不允许用户加入视频通话 我已经尝试了mediaDevices.enumerateDevices。下面是代码检查音频和视频设备是否使用javascript连接,javascript,angular,video,twilio,webrtc,Javascript,Angular,Video,Twilio,Webrtc,我正在使用twilio视频API构建一个视频通话网络平台,我们要求在用户加入通话之前,我们必须检查用户是否有音频和视频设备连接到他的计算机,如果用户没有任何音频和视频设备,则不允许用户加入视频通话 我已经尝试了mediaDevices.enumerateDevices。下面是代码 function getConnectedDevices(type, callback) { navigator.mediaDevices.enumerateDevices() .then(devices
function getConnectedDevices(type, callback) {
navigator.mediaDevices.enumerateDevices()
.then(devices => {
console.log(devices);
callback(filtered);
});
}
这给了我下面的json
[{
deviceId: "default",
groupId: "10684f807204708d605cc3ad0e5c4eaf763f1440775b8f79cdecf72806cc82f5",
kind: "audioinput",
label: "Default - Microphone (Realtek Audio)"
},
{
deviceId: "communications",
groupId: "10684f807204708d605cc3ad0e5c4eaf763f1440775b8f79cdecf72806cc82f5",
kind: "audioinput",
label: "Communications - Microphone (Realtek Audio)"
},
{
deviceId: "491ccf0569924a7c1264a6afd337a8f744f239d78414e80f17a07122725bb46c",
groupId: "10684f807204708d605cc3ad0e5c4eaf763f1440775b8f79cdecf72806cc82f5",
kind: "audioinput",
label: "Microphone (Realtek Audio)"
},
{
deviceId: "823160fcdef4bedf2d1769cfbcb9058fe41bc01258b811f9aef19eb21a27cb76",
groupId: "f86216b491186ac3208f9fc59d31b913e7017bafb505005d39983345ab35811f",
kind: "videoinput",
label: "Integrated Webcam (0bda:5689)"
},
{
deviceId: "default",
groupId: "10684f807204708d605cc3ad0e5c4eaf763f1440775b8f79cdecf72806cc82f5",
kind: "audiooutput",
label: "Default - Speakers / Headphones (Realtek Audio)"
},
{
deviceId: "communications",
groupId: "10684f807204708d605cc3ad0e5c4eaf763f1440775b8f79cdecf72806cc82f5",
kind: "audiooutput",
label: "Communications - Speakers / Headphones (Realtek Audio)"
},
{
deviceId: "213851f9659d4751c7c60016112d74e290d1ce398d12d774bda0c68ef590f61c",
groupId: "10684f807204708d605cc3ad0e5c4eaf763f1440775b8f79cdecf72806cc82f5",
kind: "audiooutput",
label: "Speakers / Headphones (Realtek Audio)"
}
]
通过查看json,我并不完全理解如何检查可用的音频和视频设备。因为我必须在angular中实现这一点,所以我不想使用jquery或任何插件。如果您的计算机没有连接任何音频或视频设备,那么这个阵列将是空的。看起来这里已经连接了一些设备 您要查找的是麦克风的
音频输入
,以及摄像头的视频输入
所以你可以这样做:
navigator.mediaDevices.enumerateDevices()
.then(devices => {
const microphones = devices.filter(d => d.kind === 'audioinput');
const cameras = devices.filter(d => d.kind === 'videoinput');
callback(
microphones,
cameras
);
});
如果
camers.length>0
则连接了某种类型的摄像头,如果microphones.length>0
则连接了某种类型的麦克风。您可以使用它来检查是否允许某人接听电话。如果您的计算机未连接任何音频或视频设备,则此阵列将为空。看起来这里已经连接了一些设备
您要查找的是麦克风的音频输入
,以及摄像头的视频输入
所以你可以这样做:
navigator.mediaDevices.enumerateDevices()
.then(devices => {
const microphones = devices.filter(d => d.kind === 'audioinput');
const cameras = devices.filter(d => d.kind === 'videoinput');
callback(
microphones,
cameras
);
});
如果
camers.length>0
则连接了某种类型的摄像头,如果microphones.length>0
则连接了某种类型的麦克风。您可以用它来检查是否允许某人接听电话。Twilio开发者福音传道者。这是一个很好的答案,我只想补充一点。也就是说,某些平台(尤其是iOS)不会提供来自枚举设备的结果,除非您首先通过getUserMedia
请求访问摄像头或麦克风。这里是Twilio开发者布道者。这是一个很好的答案,我只想补充一点。也就是说,在您首先通过getUserMedia
请求访问摄像头或麦克风之前,某些平台(尤其是iOS)不会向您提供来自枚举设备的结果。