MediaRecorder.start()
MediaStream Recording API の一部である MediaRecorder
のメソッド start()
は、1つ以上の Blob
オブジェクトへのメディアの記録を開始します。 メディアの全期間を単一の Blob
に(または requestData()
を呼び出すまで)記録することも、一度に記録するミリ秒数を指定することもできます。 その後、その量のメディアが記録されるたびに、記録されたメディアに対応できるようにイベントが配信され、その間に、メディアの次のスライスを記録するための新しい Blob
が作成されます。
MediaRecorder
の state
が "inactive"
であると仮定すると、start()
は state
を "recording"
に設定してから、入力ストリームからメディアのキャプチャを開始します。 タイムスライス期間が経過するか、ソースメディアが終了するまで、Blob
が作成され、そこにデータが収集されます。 Blob
がその時点まで満たされるたびに(タイムスライス期間または、スライス期間が指定されていない場合はメディアの終わり)、dataavailable
イベントが記録されたデータとともに MediaRecorder
に送られます。 ソースがまだ再生中の場合は、新しい Blob
が作成され、そこに記録が続きます。
ソースストリームが終了すると、state
は "inactive"
に設定され、データ収集は停止します。 最後の dataavailable
イベントが MediaRecorder
に送られ、その後に stop
イベントが続きます。
注: ブラウザーが記録を開始または記録を続行できない場合は、DOMError
イベントを発生させようとし、続いて収集した Blob を含む MediaRecorder.dataavailable
イベントと MediaRecorder.stop
イベントを発生させようとします。
構文
MediaRecorder.start(timeslice)
パラメーター
timeslice
省略可- 各
Blob
に記録するミリ秒数。 このパラメータが含まれていない場合は、requestData()
メソッドが呼び出されてBlob
が取得され、メディアの記録を継続する新しいBlob
の作成のきっかけがない限り、メディア期間全体が単一のBlob
に記録されます。
戻り値
undefined
.
例外
すぐに検出できるエラーは DOM 例外としてスローされます。 他のすべてのエラーは、MediaRecorder
オブジェクトに送られた error
イベントを通じて報告されます。 これらのエラーに対応するために onerror
イベントハンドラを実装できます。
InvalidStateError
MediaRecorder
はinactive
状態ではありません。 すでに記録中の場合は、メディアの記録を開始できません。state
プロパティを参照してください。SecurityError
MediaStream
は記録を禁止するように設定されています。 これは、例えば、ユーザーが入力デバイスを使用するパーミッションを拒否したときにgetUserMedia()
を使用して取得されたソースの場合などです。 これは、ソースストリームのpeerIdentity
制約により、ストリーム内のMediaStreamTrack
がisolated
としてマークされている場合にも発生します。 この例外は、記録開始後にソースメディアのセキュリティオプションが変更された場合にもerror
イベントとして配信される可能性があります。UnknownError
- 記録処理中に何か他の問題が発生しました。
例
...
record.onclick = function() {
mediaRecorder.start();
console.log("レコーダー起動");
}
...
仕様
仕様 | 状態 | コメント |
---|---|---|
MediaStream Recording MediaRecorder.start() の定義 |
草案 | 初期定義 |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- MediaStream Recording API の使用
- ウェブディクタフォン: MediaRecorder + getUserMedia + Web Audio API 可視化デモ、Chris Mills 著(Github のソース)。(英語)
- simpl.info の MediaStream Recording のデモ、Sam Dutton 著。(英語)
MediaDevices.getUserMedia