WebRTC를 사용하면 브라우저에서 사용자가 손쉽게 오디오와 영상 소스를 선택할 수 있습니다. 하지만 모든 웹 기반 영상 앱이 웹캠 영상 소스를 변경하는 컨트롤을 제공하는 것은 아닙니다.
일부 브라우저에서는 이것이 문제가 되지 않습니다. 예를 들어 Firefox와 Edge는 사이트별로 영상 소스를 선택할 수 있게 해줍니다. 하지만 Google Chrome은 특별한 chrome://settings/content/camera URL을 통해 기본 웹캠을 선택할 수 있게 해주면서도, 이 기본 카메라 설정이 WebRTC에는 적용되지 않습니다. 이에 대해 Google Chrome 포럼에서 불만을 제기한 사용자가 많지만, 아직 해결책은 보이지 않습니다.
이 때문에 영상 소스 선택 기능을 제공하지 않는 앱(vMix 등)을 사용하면서, 사이트별 영상 소스 선택을 지원하지 않는 브라우저(Chrome 등)까지 사용하는 경우, 사용자는 어찌할 도리가 없습니다. 사용자가 영상 카메라를 선택할 수 없는 영상 앱은 결국 임의로 카메라를 선택하게 되며, 그 결과 사용자가 원하는 카메라를 사용하지 못할 수 있습니다.
다행히 Chrome에서 웹 기반 영상 앱이 특정 카메라를 강제로 선택하도록 하는 간단한 우회 방법이 있습니다.
vMix의 vmixcall.com 서비스를 예로 들어 방법을 안내해 드립니다.
- Chrome을 실행하고 화상 채팅 세션을 시작합니다.
⌥ Option+⌘ Cmd+i키보드 단축키를 사용하거나More Tools→Developer Tools메뉴를 이용해 Chrome에서 “개발자 도구”를 엽니다.- 기본 “콘솔” 탭에 다음 코드를 붙여넣고 Enter 키를 누릅니다.
function gotDevices(deviceInfos) {
// Look for the Reincubate Camo video input device.
var deviceId;
for (deviceInfo of deviceInfos) {
if (deviceInfo.kind === 'videoinput' && deviceInfo.label === 'Reincubate Camo') {
deviceId = deviceInfo.deviceId
break;
}
}
if (deviceId) {
const constraints = {
audio: true,
video: { deviceId: { exact: deviceId } }
};
navigator.mediaDevices.getUserMedia(constraints).then(gotStream);
} else {
console.error('Unable to find Reincubate Camo video input device.');
}
}
function gotStream (stream) {
// Tell the vMix Call session to switch to a different stream.
try {
session.gotLocalStream(stream);
} catch {
console.error('Unable to trigger vMix Call session stream update.');
}
}
// Ask the browser for a list of media devices.
navigator.mediaDevices.enumerateDevices().then(gotDevices)
이렇게 하면 Chrome이 자동으로 Camo 영상 소스로 전환됩니다. 이 우회 방법이 제대로 작동하지 않는다면, 댓글로 알려주시거나 직접 문의해 주시면 도와드리겠습니다.
실제로는 이렇게 보입니다.
앞으로 이런 번거로움 없이 이용하고 싶다면, 영상 서비스 제공업체에 앱 내 영상 선택 기능을 추가해 달라고 요청해 보세요.
