JavaScript デバイスのカメラから動画を撮影する
JavaScript
でデバイス(パソコン、スマホなど)のカメラから動画を撮影して、html
のWEBページに表示する方法を紹介します。
デバイスにアクセスする
デバイスにアクセスするにはnavigator.mediaDevices.getUserMedia
を実行します。
このコマンドはPromise
を返すので以下のように実装します。
const media = await navigator.mediaDevices.getUserMedia({
video: true,
audio: false, // マイクから音声も取得する場合はtrue
});
// または
navigator.mediaDevices.getUserMedia({
video: true,
audio: false, // マイクから音声も取得する場合はtrue
}).then(media => {
});
上記のコマンドを実行すると以下のように、ユーザーにカメラを起動しても良いか許可の確認ダイアログがブラウザに表示されます。
カメラの動画を表示する
以下のコントロールをhtml
に追加します。
<video id="video" width="640" height="480" autoplay></video>
このコントロールにカメラの動画を表示するように設定します。
const media = await navigator.mediaDevices.getUserMedia({
video: true,
audio: false, // マイクから音声も取得する場合はtrue
});
document.getElementById('video').srcObject = media;
// または
navigator.mediaDevices.getUserMedia({
video: true,
audio: false, // マイクから音声も取得する場合はtrue
}).then(media => {
document.getElementById('video').srcObject = media;
});
注意点
カメラやマイクなどを使用するmediaDevices
の制御はhttps
で行う必要があります。
例えばlocalhost
でwebpack-dev-server
を使って開発している場合はwebpack-dev-serverでhttpsでのアクセスを可能にする方法で紹介した方法でhttps://localhost
でアクセスできるように設定する必要があります。