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 制約により、ストリーム内の MediaStreamTrackisolated としてマークされている場合にも発生します。
NotSupportedError
 ユーザーのデバイスがサポートしていない MIME タイプを使用して MediaRecorder をインスタンス化しようとしました。 1つ以上の要求されたコンテナ、コーデック、またはプロファイル、その他の情報が無効である可能性があります。
UnknownError
分類できない、セキュリティに関連しないエラーが発生しました。 記録が停止し、MediaRecorderstate が非アクティブになり、最後の 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 の定義
草案 初期定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
onerrorChrome 完全対応 49Edge 未対応 なしFirefox 完全対応 25IE ? Opera 完全対応 36Safari ? WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 25Opera Android 完全対応 36Safari iOS ? Samsung Internet Android 完全対応 5.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明

関連情報