カメラレコーダー

Web カメラとマイクからブラウザ内で直接動画を録画し、ファイルをダウンロードできます。アップロードもサーバーも不要です。

Web カメラとマイクからブラウザ内で直接動画を録画し、ファイルをダウンロードできます。アップロードもサーバーも不要です。 Web カメラとマイクからブラウザ内で直接動画を録画し、ファイルをダウンロードできます。アップロードもサーバーも不要です。

00:00

背景

ブラウザ録画の仕組み

ブラウザでの録画は 3 段階のパイプラインです。まず getUserMedia() が、あなたが 許可した後にカメラとマイクから MediaStream を取得します--ブラウザは必ず 確認し、セキュアコンテキスト(HTTPS または localhost)を要求します。次に MediaRecorder がそのストリームを消費し、入ってくるフレームを WebM などの コンテナ形式にエンコードしながらチャンクに切ります。3 番目に、停止すると チャンクが 1 つの Blob に組み立てられ、再生とダウンロードができます。何も 送信されません。エンコードは端末上で行われ、だからブラウザレコーダーは オフラインでもファイルを生成できます。

コンテナとコーデック

コンテナとコーデックはブラウザとプラットフォームに依存します。VP8/VP9 ビデオ と Opus オーディオの WebM が最も確実で、Chrome、Firefox、Edge、Safari で 動作します。ブラウザがサポートを報告した場合に MP4 も提供されます。新しい 端末では一般的になりつつありますが普遍ではありません。ブラウザがエンコード できない形式を選ぶと、このページは自動的に WebM にフォールバックします。 録画が終わると、実際に生成されたものに合った拡張子(.webm または .mp4)の ダウンロードボタンが表示されます。

プライバシーと権限

ストリームが始まる前に、ブラウザはどのカメラとマイクを共有するか選べる権限 プロンプトを表示します。このページのデバイスドロップダウンは enumerateDevices() から埋められ、デバイスを切り替えてストリームを開き直せます。 すべての処理はローカルです。動画バイトが端末の外に出ることはなく、ページ自体も 何も保存しません。録画を停止するとカメラのインジケータライトが消え、ストリー ムのトラックが解放されるため、終了後にリソースが保持されることはありません。 一部のシステムでは、ページがストリームを保持している限り、ミュートでもカメラ ライトが点灯したままです。

実用的な注意点

プレビューは正しくミラーリングされ(ミュート再生でエコーを防止)、タイマーが 録画中の経過時間を追跡します。長時間録画では、チャンクがメモリ内で期間に 応じて増えるため、非常に長いセッションはメモリを多く使います。カメラではなく 画面を録画するには別の API(getDisplayMedia)が必要で、ここでは対象外です。 権限プロンプトを一度拒否すると、ブラウザはサイト設定をクリアするまでその 選択をロックすることが多いです。

ブラウザ標準の getUserMedia と MediaRecorder API で自社実装。録画はローカルで行われ、アップロードはありません。

よくある質問

カメラ/マイクの権限を求められるのはなぜ?
getUserMedia() はプライバシーのため常に明示的な同意を要求します。ブラウザが共有するデバイスを正確に列挙したプロンプトを表示し、一度許可すると即座にストリームが始まります。
録画が .webm で保存されるのはなぜ?
WebM(VP8/VP9 + Opus)は主要ブラウザがすべてネイティブにエンコードできるコンテナです。MP4 はブラウザがサポートを報告する場合のみ提供され、それ以外は自動的に WebM にフォールバックします。
動画はサーバにアップロードされますか?
いいえ。MediaRecorder でローカルにエンコードされ、結果はブラウザのメモリ内の Blob です。何も送信されず、ページも何も保存しません。オフラインでも録画できます。
カメラのランプが点いたままなのはなぜ?
ランプはページがライブカメラストリームを保持していることを示します。録画を停止してトラックが解放されると消えます。一部のシステムでは、ストリームがアクティブな間、ミュートや非録画でもランプが点灯したままです。
セッション途中でデバイスを変更できますか?
はい。ドロップダウンで別のカメラやマイクを選んで新しい録画を開始します。次回開始時に新しいデバイス選択でストリームを再ネゴシエーションします。
レコーダーを動かすには何が必要ですか?
getUserMedia と MediaRecorder をサポートするブラウザ(現行の全ブラウザ)、カメラとマイク、そしてセキュアコンテキスト(HTTPS または localhost)が必要です。未サポートの場合、ページはコントロールの代わりに通知を表示します。