The groupId
readonly property of the MediaDeviceInfo
interface returns a DOMString
that is a group identifier. Two devices have the same group identifier if they belong to the same physical device; for example, a monitor with both a built-in camera and microphone.
Syntax
var groupID = mediaDeviceInfo.groupId;
Value
A DOMString
which uniquely identifies the group of related devices to which this device belongs.
Specifications
Specification | Status | Comment |
Media Capture and StreamsThe definition of 'groupId' in that specification. | Candidate Recommendation | Initial definition. |
Examples
In this example, we assemble a list of the devices which are part of the same group as a given device. This might be used to produce a user interface that gathers associated devices together for presentation purposes, or to make it easy for the user to choose to use the built-in camera and microphone on the same display at the same time.
const getDeviceGroup = mainDevInfo => {
let devList = [];
navigator.mediaDevices.enumerateDevices()
.then(devices => {
devices.forEach(device => {
if (device.groupId === mainDevInfo.groupId) {
devList.push(device);
}
});
});
return devList;
};
The getDeviceGroup()
function takes as input the MediaDeviceInfo
object describing the device for which a group list is to be built. The function starts by initializing the result array, devList
, to be an empty array.
Then navigator.mediaDevices.enumerateDevices()
is called to get the list of all media devices. Once the promise resolves, we walk the list using forEach()
. For each device, if its groupId
matches the main device's groupId
, we push the MediaDeviceInfo
object onto the list.
Finally, the list, which now contains a MediaDeviceInfo
object for each device in the same group, is returned to the caller.
This could be altered easily to either leave out the passed-in device from the returned list, or to place it at the top of the list, by comparing the two objects' deviceId
values, only pushing the device onto the result list if it doesn't match.
This version of the example puts the passed-in device at the top of the result list, then adds any other members of the group that are found:
const getDeviceGroup = mainDevInfo => {
let devList = [mainDevInfo];
navigator.mediaDevices.enumerateDevices()
.then(devices => {
devices.forEach(device => {
if ((device.groupId === mainDevInfo.groupId) &&
(device.deviceId !== mainDevInfo.deviceId)) {
devList.push(device);
}
});
});
return devList;
};
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
groupId
|
Chrome Full support 55 Full support 55 Notes' For earlier versions, this interface is available through the adapter.js polyfill |
Edge
Full support 12 |
Firefox Full support 39 Full support 39 Notes' Prior to Firefox 67, related devices are not actually grouped together by |
IE
No support No |
Opera No support No No support No Notes' This property can be used in Opera by using the adapter.js polyfill. |
Safari
No support No |
WebView Android Full support 55 Full support 55 Notes' For earlier versions, this interface is available through the adapter.js polyfill |
Chrome Android Full support 55 Full support 55 Notes' For earlier versions, this interface is available through the adapter.js polyfill |
Firefox Android Full support 39 Full support 39 Notes' Prior to Firefox 67, related devices are not actually grouped together by |
Opera Android No support No No support No Notes' This property can be used in Opera by using the adapter.js polyfill. |
Safari iOS
No support No |
Samsung Internet Android Full support 6.0 Full support 6.0 Notes' For earlier versions, this interface is available through the adapter.js polyfill |
Legend
- Full support
- Full support
- No support
- No support
- See implementation notes.'
- See implementation notes.
MediaDeviceInfo.groupId by Mozilla Contributors is licensed under CC-BY-SA 2.5.