現在のHTML5ではvideoやaudioタグを使って動画、音楽などを再生できるようになっています。しかし、これらのデータはストリーミングで流したり、getUserMediaを使って取得することしかできませんでした。
そこで登場したのが Recording a media elementです。これは video/audioタグの内容をレコーディングし、ファイルとしてダウンロードもできるAPIになります。
使い方
まずHTMLを記述します。videoタグを使います。 #startButton
を押すとWebカメラの映像をストリーミングで流します。
さらに記録した内容を表示するDOMを用意します。
JavaScriptの処理
まず必要なDOMを変数化します。最後の recordingTimeMS
は録画を行うタイミングで、今回は5秒ごとにしています。細かければ動画が滑らかになりますが、CPU負荷も大きくなります。
開始した際の処理
まず開始時の処理について解説します。最初はgetUserMediaを使ってWebカメラにアクセスします。そして、映像を #preview に表示します。そして、 preview.captureStream
を使って記録を開始します。
レコーディング中は非同期処理になるので startRecording という関数の中で処理を行っています。 MediaRecorder
のインスタンスにWebカメラの映像を指定し、 start
メソッドを実行するとレコーディングが開始されます。レコーディング内容は ondataavailable
メソッドで呼び出されるので、これを変数に残し続けます。
レコーディングが終わると onstop が呼ばれます。今回は lengthInMS
で自動的に停止するようにしています。
また、プレビューを停止する場合には次のように実装することもできます。
デモ
ここまでの実装をJSFiddleにてデモできます。なお、執筆時点ではChromeとMozillaでしか動作しません。
動画リソースはWebカメラに限らず使えるでしょう。そうした時に特定の場所だけキャプチャするといった用途でも使えそうです。動画を編集するという目的にしてはCPU負荷が大きそうですが、動画コンテンツをより扱いやすくしてくれそうです。