Skip to content

Media devices

Alex Andres edited this page Aug 20, 2021 · 1 revision

Getting started with media devices

Cameras and microphones play a key role in WebRTC. In a more complex application, you will most likely want to check all the connected cameras and microphones and select the appropriate device for the WebRTC session. These devices can be enumerated with the class MediaDevices. With MediaDevices you can also listen for device changes, whenever a device is connected or disconnected.

Enumerating connected media devices

Query microphones:

for (AudioDevice mic : MediaDevices.getAudioCaptureDevices()) {
	System.out.println(mic);
}

Query speakers and playback devices:

for (AudioDevice speaker : MediaDevices.getAudioRenderDevices()) {
	System.out.println(speaker);
}

Query cameras:

for (VideoDevice cam : MediaDevices.getVideoCaptureDevices()) {
	System.out.println(cam);
}

Query camera capabilities:

for (VideoDevice cam : MediaDevices.getVideoCaptureDevices()) {
	System.out.println(cam);

	for (VideoCaptureCapability capability : MediaDevices.getVideoCaptureCapabilities(cam)) {
		System.out.println(capability);
	}
}

Listen for device changes

Observe whenever a device has been (dis)connected, e.g., by USB or Bluetooth.

MediaDevices.addDeviceChangeListener(new DeviceChangeListener() {

	@Override
	public void deviceConnected(Device device) {
		System.out.println("Device connected: " + device);
	}

	@Override
	public void deviceDisconnected(Device device) {
		System.out.println("Device disconnected: " + device);
	}
});
Clone this wiki locally