aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/mediadeviceinfo/index.html
blob: c2faad1873867862f131c8f6113b20eaa378705b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
---
title: MediaDeviceInfo
slug: Web/API/MediaDeviceInfo
tags:
  - API
  - WebRTC
translation_of: Web/API/MediaDeviceInfo
---
<div>{{APIRef("WebRTC")}}</div>

<p><span class="seoSummary"><strong><code>MediaDevicesInfo</code></strong></span>インタフェースは1つメディアが入力か出力のデバイスであるかを示す情報を含みます。{{domxref("MediaDevices.enumerateDevices", "navigator.mediaDevices.enumerateDevices()")}}の呼び出しによって取得できるデバイスの一覧は、<code>MediaDeviceInfo</code>オブジェクトの配列であり、1つの要素が1つのメディアデバイスになります。</p>

<h2 id="プロパティ">プロパティ</h2>

<dl>
 <dt>{{domxref("MediaDeviceInfo.deviceId")}}{{readonlyinline}}</dt>
 <dd>デバイスの識別子の{{domxref("DOMString")}}を返します。この識別子はセッションを越えて保持されます。この識別子は、他のアプリケーションから推測可能でないものであり、呼び出しているアプリケーション元に対して固有のものになります。この識別子は、ユーザがクッキー(プライベートブラウジングでは異なる識別子が使用され、セッションを越えて保持されません)をクリアした時にリセットされます。</dd>
 <dt>{{domxref("MediaDeviceInfo.groupId")}}{{readonlyinline}}</dt>
 <dd>グループ識別子の{{domxref("DOMString")}}を返します。2つのデバイスが同一のグループ識別子を持つ場合、それらのデバイスは同一の物理デバイスに属していることになります。例として、内蔵カメラとマイクロフォンを持つモニターなど。</dd>
 <dt>{{domxref("MediaDeviceInfo.kind")}}{{readonlyinline}}</dt>
 <dd><code>"videoinput"</code><code>"audioinput"</code> 、<code>"audiooutput"</code>のどれかを返します。</dd>
 <dt>{{domxref("MediaDeviceInfo.label")}}{{readonlyinline}}</dt>
 <dd>デバイスを説明するラベルである{{domxref("DOMString")}}を返します。(例、"External USB Webcam")</dd>
</dl>

<div class="note">
<p>セキュリティ的な関係で、アクティブなメディアストリームが存在するか、メディアデバイスへの継続的な権限をユーザが付与しない限り、<code>label</code>のフィールドは常に空欄になります。デバイスラベルの組み合わせによって、ユーザを識別するためのフィンガープリントの一部として利用することができてしまいます。</p>
</div>

<h2 id="メソッド">メソッド</h2>

<p>なし。</p>

<h2 id="例"></h2>

<p>ここでは、デバイスの一覧を取得するために、{{domxref("MediaDevices.enumerateDevices", "enumerateDevices()")}}を使用しています。</p>

<pre class="brush:js">if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
  console.log("enumerateDevices() not supported.");
  return;
}

// カメラとマイクを一覧にする。

navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
  devices.forEach(function(device) {
    console.log(device.kind + ": " + device.label +
                " id = " + device.deviceId);
  });
})
.catch(function(err) {
  console.log(err.name + ": " + error.message);
});
</pre>

<p>コンソールには次のように表示されるでしょう。</p>

<pre class="eval">videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: id = RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: id = r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
</pre>

<p>もしくは、1つ以上のメディアストリームが有効の場合や、継続的な許可が与えられている場合は、次のように表示されるでしょう。</p>

<pre class="eval">videoinput: FaceTime HD Camera (Built-in) id=csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=
audioinput: default (Built-in Microphone) id=RKxXByjnabbADGQNNZqLVLdmXlS0YkETYCIbg+XxnvM=
audioinput: Built-in Microphone id=r2/xw1xUPIyZunfV1lGrKOma5wTOvCkWfZ368XCndm0=
</pre>

<h2 id="仕様">仕様</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">仕様</th>
   <th scope="col">状況</th>
   <th scope="col">コメント</th>
  </tr>
  <tr>
   <td>{{SpecName('Media Capture', '#idl-def-MediaDeviceInfo', 'MediaDevicesInfo')}}</td>
   <td>{{Spec2('Media Capture')}}</td>
   <td>初版</td>
  </tr>
 </tbody>
</table>

<h2 id="ブラウザ互換性">ブラウザ互換性</h2>

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Edge</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatChrome(55.0)}}<sup>[1]</sup></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>39</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}<sup>[2]</sup></td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Android Webview</th>
   <th>Edge</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>Firefox OS (Gecko)</th>
   <th>IE Phone</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
   <th>Chrome for Android</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>39</td>
   <td>2.5</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}<sup>[2]</sup></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}</td>
  </tr>
 </tbody>
</table>
</div>

<p>[1] 早期のバージョンでは、<a href="https://github.com/webrtc/adapter">adapter.js</a> ポリフィルを通してこのインタフェースは使用できます。</p>

<p>[2] Operaでは、<a href="https://github.com/webrtc/adapter">adapter.js</a> ポリフィルを通してこのインタフェースを使用できます。</p>

<h2 id="関連項目">関連項目</h2>

<ul>
 <li><a href="/en-US/docs/Web/API/WebRTC_API">WebRTC API</a></li>
 <li>{{domxref("MediaDevices.enumerateDevices", "navigator.mediaDevices.enumerateDevices()")}}</li>
 <li>{{domxref("MediaDevices.getUserMedia", "navigator.mediaDevices.getUserMedia()")}}</li>
</ul>