MotoJapan's Tech-Memo

技術めも

【Javascript】カメラ起動前後のvideoタグのサイズ変化を検出する 【お家IT#12】


本件の実装の一部  
motojapan.hateblo.jp

前回の続き  
motojapan.hateblo.jp

目次

前回は、UserMediaのカメラリソースを切り替えるなどの話をした。
今回は、カメラリソースの切り替えによるVideo要素のサイズ変化を検出したい。
例えばインカムからアウトカムに切り替えるとき、解像度が異なると、Video要素のサイズが変わる。
f:id:motojapan:20171024003838p:plain

もう少しわかりやすく具体例を出して説明する。

具体例:Video要素のプレビューの中央に撮影領域を作りたい

例えば、下図のようにVideo要素のプレビューの中央に撮影領域を作りたい。(赤い枠線部分)
f:id:motojapan:20171023005112p:plain
これを作る場合、少なくともVideo要素のサイズ変化を検出してレイアウト確定時のサイズを求める必要がある。

実装:Video要素のサイズ変化を検出、確定時のサイズを取得

実は知っていればめちゃくちゃ簡単

//**************** html **********************

<video id="camera" width="720px" autoplay></video>

//************ javascript ********************

//動的に取得する関数
<script type="text/javascript">
function notify_change_size() {
    var video = document.getElementById('camera');
    video_layout_width  = video.clientWidth
    video_layout_height = video.clientHeight
}

var videoElement = document.querySelector('video#camera');
//onresizeメッセージのコールバック関数を設定する
videoElement.onresize = notify_change_size;
</script>

以上。
次回はこの具体例を少し掘り下げてどうやってVideo要素でのプレビュー上に撮影領域を作るか考える。