解決ガイド · ウェブカメラテスト
カメラやマイクの「OverconstrainedError」を直す方法
OverconstrainedErrorは、ページがデバイスの提供できない設定(厳密な解像度、フレームレート、すでに存在しない特定のデバイスIDなど)を要求したことを意味します。デバイスは動作していますが、要求が厳しすぎました。訪問者は別のデバイスを選ぶかページをリセットすれば直ります。開発者は制約を緩めてください。
クイック修正チェックリスト
- 1ページを再読み込みし、特定のデバイスではなく既定のカメラやマイクを選びます。
- 2デバイスを抜き差しし、ブラウザが再び一覧に表示するよう更新します。
- 3デバイス一覧から別のカメラやマイクを選び、もう一度テストします。
- 4古いバージョンは解像度の上限を異なる形で報告するため、ブラウザを更新します。
- 5ページを開発している場合は、幅・高さ・フレームレートにexactではなくidealの値を使います。
「制約」とは
ページはgetUserMediaに制約(width、height、frameRate、facingMode、deviceId、音声オプション)を渡せます。exactとminという語は、その値を必須にします。接続中のどのデバイスも必須の値を満たせないと、ブラウザはOverconstrainedErrorで停止し、エラー内に失敗した設定を示します。
典型的な原因は、720pのカメラに1920 × 1080を要求する、カメラが1台のノートパソコンでfacingMode environmentを要求する、デバイスを抜く前に保存したdeviceIdを再利用する、などです。
開発者の対処法
exactよりidealを優先し、エラーのconstraintプロパティを読んでどの設定が失敗したかを確認し、より単純な制約で一度だけ再試行します。黙って失敗せず、ユーザーにデバイス選択を表示しましょう。ウェブカメラテストはカメラが実際に出力する解像度とフレームレートを示すので、何が可能かが分かります。
FAQ
よくある質問
OverconstrainedErrorとは何ですか?
厳密なサイズや、すでに接続されていない特定のデバイスなど、ページが要求した設定をカメラやマイクが満たせなかったことを意味します。
USBカメラを抜いた後に出るのはなぜですか?
ページが保存されたIDでそのカメラを要求し続けている可能性があります。別のデバイスを選ぶか、再読み込みして既定のデバイスを要求させてください。
OverconstrainedErrorは権限の問題ですか?
いいえ。権限のエラーはNotAllowedErrorです。これは非対応の設定に関するもので、権限の確認が原因とは限りません。
カメラが対応している内容はどう確認しますか?
ウェブカメラテストを実行し、ライブ映像と一緒に表示される解像度とフレームレートを読み取ってください。