MediaRecorder.onerror
MediaRecorder
インターフェイスの onerror
イベントハンドラは、エラーが発生したときに MediaStream Recording API によって呼び出されます。 メディアレコーダーの作成中または使用中に発生したエラーを処理するためのイベントハンドラを提供できます。 エラーオブジェクトは MediaRecorderErrorEvent
型で、その error
プロパティには発生したエラーを説明する DOMException
オブジェクトが含まれています。
構文
MediaRecorder.onerror = errorHandlerFunction;
値
レコーダーの有効期間中にエラーが発生したときに必ず呼び出される関数。 発生する可能性があるその他の一般的なエラーに加えて、MediaStream Recording API を使用すると、以下のエラーが特に発生する可能性があります。 どれが発生したかを判断するには、MediaRecorderErrorEvent.error.name
の値を確認してください。
InvalidStateError
- 非アクティブなレコーダーの停止や一時停止、アクティブなレコーダーの起動や再開、それ以外の場合は、間違った状態で
MediaRecorder
を操作しようとしました。 この例外は、削除されたまたは取り除かれたソースに対して要求が行われたときにも発生する可能性があります。 SecurityError
MediaStream
は記録を禁止するように設定されています。 これは、例えば、ユーザーが入力デバイスを使用するパーミッションを拒否したときにgetUserMedia()
を使用して取得されたソースの場合などです。 これは、ソースストリームのpeerIdentity
制約により、ストリーム内のMediaStreamTrack
がisolated
としてマークされている場合にも発生します。NotSupportedError
- ユーザーのデバイスがサポートしていない MIME タイプを使用して
MediaRecorder
をインスタンス化しようとしました。 1つ以上の要求されたコンテナ、コーデック、またはプロファイル、その他の情報が無効である可能性があります。 UnknownError
- 分類できない、セキュリティに関連しないエラーが発生しました。 記録が停止し、
MediaRecorder
のstate
が非アクティブになり、最後のdataavailable
イベントが残りの受信データと共にMediaRecorder
に送られ、最後にstop
イベントが送られます。
これらのエラーは、MediaRecorder
メソッドの呼び出しが原因で直接発生した場合も、録音プロセス中に発生した問題が原因で間接的に発生した場合もあります。
例
この例では、新しい MediaRecorder
インスタンスを作成し、ユーザーエージェントのデフォルトのメディア形式を使用して録画を開始します。 MediaRecorder
または、エラーの名前(セットアッププロセス中に例外がスローされた場合)のいずれかを返します。
function recordStream(stream) {
let recorder = null;
let bufferList = [];
try {
recorder = new MediaRecorder(stream);
} catch(err) {
return err.name; /* エラー名を返す */
}
recorder.ondataavailable = function(event) {
bufferList.push(event.data);
};
recorder.onerror = function(event) {
let error = event.error;
switch(error.name) {
case InvalidStateError:
showNotification("今すぐ動画を録画することはできません。 " +
"あとでもう一度試してみてください。");
break;
case SecurityError:
showNotification("セキュリティ上の制限により、" +
"指定されたソースを録音する" +
"ことはできません。");
break;
default:
showNotification("動画を録画しようとしたときに" +
"問題が発生しました。");
break;
}
};
/* ここは、ディスクへのバッファの書き込みを定期的に処理する
ワーカーを作成するのに適した場所です。 */
recorder.start(100); /* バッファあたり 100ms のタイムスライス */
return recorder;
}
仕様
仕様 | 状態 | コメント |
---|---|---|
MediaStream Recording MediaRecorder.onerror の定義 |
草案 | 初期定義 |
ブラウザーの互換性
No compatibility data found for api.MediaRecorder.onerror
.
Check for problems with this page or contribute missing data to mdn/browser-compat-data.
関連情報
- MediaStream Recording API の使用
- ウェブディクタフォン: MediaRecorder + getUserMedia + Web Audio API 可視化デモ、Chris Mills 著(Github のソース)。(英語)
- simpl.info の MediaStream Recording のデモ、Sam Dutton 著。(英語)
MediaDevices.getUserMedia()