2

私はJavascriptでgetUserMedia()を使用してデモを作成し、デバイスのWebカメラを取得してビデオストリームをhtml5キャンバスに描画しています。getUserMedia()をサポートしていないブラウザーの場合、デフォルトでFlashバージョンのデモに戻ります。

これで、これはすべてChromeとOpera、およびほぼFirefox 18で正常に機能します。ただし、Firefoxにはまだ問題があります。構成ファイルでは、media.navigator.enabledがデフォルトでfalseに設定されています。これは、ユーザーがカメラを有効にするかどうかを選択できないことを意味し、私のスクリプトは、決して来ない答えを待つだけです。

今では明らかに、設定ファイルでこの設定を変更または設定することはできず、変更したくありません。ただし、「if(media.navigator.enabled)...」のように続行する前にチェックを実行できるように、このフラグの値を取得する方法はありますか?

そうでなければ、Firefox用のFlashを常に使用する必要があります。これは少し残念です。

デモはこちらです。

4

1 に答える 1

0

media.navigator.enabled設定は、ユーザーがオンにすることを想定したものではありません。falseこの機能はFirefox18では十分に成熟していないため、これはかなり設定されています。これは、これまでのところテスト用にのみ含まれています。朗報:Firefox 20ではデフォルトで有効になります。Firefox20は3月2日にリリースされる予定で、数日後、この機能はFirefoxでサポートされているとみなすことができます(ごくわずかな数のFirefoxユーザーのみが継続します)古いバージョン)。

悪いニュース:Firefoxの古いバージョンをうまく処理できるとは思いません。彼らもnavigator.mozGetUserMedia()方法を持っていますが、それは単に何もしません。タイムアウト(たとえば、フラッシュフォールバックへの1分以内の切り替えで成功コールバックもエラーコールバックも呼び出されなかった場合)を使用するか、ユーザーエージェントをスニッフィングするかを選択できます。後者は醜いですが、おそらくあなたにとってより良い解決策です:

var match = /\brv:([\d\.]+)/.exec(navigator.userAgent);
if (match && parseFloat(match[1]) < 20)
  alert("getUserMedia() not supported");

FirefoxバージョンではなくGeckoバージョンを明示的にスニッフィングしていることに注意してください。Firefoxだけでなく、Geckoベースのブラウザが他にもあります。

于 2013-01-18T09:28:07.553 に答える