6

getUserMediaユーザーのマイクにアクセスするために使用する単純な webRTC コードがあります。そのhtmlファイル(ローカルホストに保存)をブラウザにロードすると、ブラウザはマイクアクセス許可を要求しないため、アクセスに失敗します。

しかし、w3schools.com エディター内で同じ html を実行すると、マイクへのアクセス許可が求められ、マイクへのアクセスを許可すると、正常に動作します...

この奇妙な動作はなぜですか?

4

7 に答える 7

5

ファイルシステム (file:// プレフィックス) からすぐに html ファイルを開くと、Chrome は getUserMedia 権限を自動的にブロックします。サーバーをローカルで実行する必要があります。

次のようにsinatraサーバーを起動しました:

# server.rb
require 'sinatra'

get '/' do
  File.read('index.html')
end

それから前にそれを与えます。

$ gem install sinatra
$ ruby server.rb

http://localhost:4567

于 2013-04-18T06:26:13.983 に答える
2

セキュリティのため、Chrome はドキュメントを実行するときに WebCam などのユーザー メディアを開きませんfile:/*

--disable-web-securityただし、コマンド ライン オプションを使用して chrome を起動すると、セキュリティ ポリシーをオーバーライドできます。

テストのために、--use-fake-device-for-media-streamオプションも確認してください。

: コマンド ライン オプションを指定するときは、chrome/chromium プロセスが実行されていないことを確認してください。 PStest.htmlを含むファイルを作成して試してみてください

<!DOCTYPE HTML>
<video autoplay/>
<script>
  navigator.webkitGetUserMedia({audio:true,video:true},
    function(stream){
      document.querySelector('video').src =
        URL.createObjectURL(stream);
    });
</script>

すべての chrome インスタンスを強制終了し、次のように chrome を開始します。

 chrome.exe --use-fake-device-for-media-stream --disable-web-security test.html
于 2013-06-18T08:32:37.997 に答える
2

この動作は、Chrome のセキュリティ設定が原因です。

PHP がインストールされていて、Apache やその他のより高度な Web サーバーをセットアップしたくない場合、おそらく最も簡単な方法は、内部 PHP Web サーバーをこの方法で実行することです (Web ファイルが /home/user/web/ にあると仮定します)。 :

php -S 127.0.0.1:3000 -t /home/user/web/

パラメータの説明は次のとおりです。

-S <addr>:<port> Run with built-in web server.

-t <docroot> Specify document root <docroot> for built-in web server.

サーバーを実行したら、ブラウザを起動して次の URL を開きます (テスト ファイルの名前が webrtc.html であると仮定します)。

http://127.0.0.1:3000/webrtc.html

于 2013-08-27T21:54:43.483 に答える
1

いくつかのトラブルシューティングの提案:

  • chrome://settings/content をチェックして ([メディア] まで下にスクロール)、そのサイトを誤って常に許可または常に拒否するように選択していないかどうかを確認します。(私は Chrome 26[dev] を使用しています。これは Chrome 24 の別の場所にある可能性があります。)

  • また、ブラウザを再起動してみてください。私の経験では、この Chrome のビットはまだかなりバグが多く、再起動すると修正されることがあります。

  • getUserMedia() 呼び出しにエラー ハンドラがあることを確認してください。そこに追加情報があるかもしれません。

于 2013-01-22T04:48:10.300 に答える
1

file:// のような方法でファイルをロードしていますか? クロムはこれらのファイルへのアクセスをまったく許可せず、リクエストを完全に無視しているようです。自分で試してみたところ、ファイルを開発サーバーにアップロードした後、正常に機能しました。

常に許可するように設定しても、file:// では機能しません。

于 2013-02-16T06:33:02.767 に答える
1

ローカル サーバーを使用せずに、getUsermedia API を使用する HTML5 をローカルで実行することはできません。WampServer を使用して、HTML5 ファイルを www フォルダー内に配置します。

于 2013-08-27T21:02:01.007 に答える
0

この答えはクロム用です

Chrome では、--allow-file-access-from-filesフラグを使用して、ローカル ファイルからの Web カメラ アクセスを許可できます。

マック

Mac では、ターミナルを開いて次のように入力できます。

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --allow-file-access-from-files /path/to/file.html

/path/to/file.htmlあなたのパスで変更

ウィンドウズ

Windows では、ショートカットを作成できます。Google Chrome を右クリックし、メニューで [:] を選択しCopy To -> Desktop (shortcut)、ショートカットを右クリックして [propertiesフラグの追加] をクリックします。

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files C:\path\to\file.html

この回答がお役に立てば幸いです。

于 2014-06-25T08:43:21.160 に答える