aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/mediadeviceinfo/index.html
blob: 347a3c186df9bcc2a94084c669d0fd8a2d574708 (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
---
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>

<p>{{Compat("api.MediaDeviceInfo")}}</p>

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

<ul>
 <li><a href="/ja/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>