aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/api/mediadevices/index.html
blob: 83e3452f5803e95873783fb69847ed72f60b09f1 (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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
---
title: MediaDevices
slug: Web/API/MediaDevices
translation_of: Web/API/MediaDevices
---
<div>{{APIRef("Media Capture and Streams")}}{{SeeCompatTable}}</div>

<p><span class="seoSummary">As interfaces <strong><code>MediaDevices</code></strong> proporcionam accesso aos dispositivos de entrada de midia conectados, como câmeras e microfones, bem como compartilhamento de tela. Essencialmente, isso te permite obter acesso a qualquer mídia gerada pelo hardware.</span></p>

<h2 id="Propriedades">Propriedades</h2>

<p><em>As mesmas propriedades de {{domxref("EventTarget")}}.</em></p>

<h3 id="Handlers" name="Handlers">Manipuladores de Evento</h3>

<dl>
 <dt>{{ domxref("MediaDevices.ondevicechange") }}</dt>
 <dd>O manipulador de evento para o evento {{event("devicechange")}}. Esse evento é entregue ao objeto <code>MediaDevices</code> quando uma entrada de mídia ou dispositivo de saída é conectado ou removido do computador do usuário.</dd>
</dl>

<h2 id="Métodos">Métodos</h2>

<p><em>Mesmos métodos de {{domxref("EventTarget")}}.</em></p>

<dl>
 <dt>{{ domxref("EventTarget.addEventListener()") }}</dt>
 <dd>Registra um manipulador de eventos para um tipo específico de evento.</dd>
 <dt>{{ domxref("MediaDevices.enumerateDevices()") }}</dt>
 <dd>Obtém um array de informações sobre a entrada de midia e dispositivos de saída disponíveis no sistema.</dd>
 <dt>{{domxref("MediaDevices.getSupportedConstraints()")}}</dt>
 <dd>Retorna um objeto consoante com {{domxref("MediaTrackSupportedConstraints")}} indicando quais propriedades restritivas são suportadas na interface {{domxref("MediaStreamTrack")}}. Veja {{SectionOnPage("/en-US/docs/Web/API/Media_Streams_API", "Capabilities and constraints")}} para aprender mais sobre restrições e como usá-las.</dd>
 <dt>{{ domxref("MediaDevices.getUserMedia()") }}</dt>
 <dd>Após a permissão do usuário (pedida através de um prompt), liga a câmera, microfone e/ou a tramissão de tela no sistema e fornece uma {{domxref("MediaStream")}} contendo uma faixa de vídeo e/ou áudio com a entrada.</dd>
 <dt>{{ domxref("EventTarget.removeEventListener()") }}</dt>
 <dd>Remove um escutador de evento.</dd>
</dl>

<h2 id="Exemplo">Exemplo</h2>

<pre class="brush:js">'use strict';

// Coloca as variáveis no escopo global para torná-las disponível para o Console do navegador.
var video = document.querySelector('video');
var constraints = window.constraints = {
  audio: false,
  video: true
};
var errorElement = document.querySelector('#errorMsg');

navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
  var videoTracks = stream.getVideoTracks();
  console.log('Got stream with constraints:', constraints);
  console.log('Using video device: ' + videoTracks[0].label);
  stream.onremovetrack = function() {
    console.log('Stream ended');
  };
  window.stream = stream; // torna as variáveis disponíveis para o Console do navegador
  video.srcObject = stream;
})
.catch(function(error) {
  if (error.name === 'ConstraintNotSatisfiedError') {
    errorMsg('A resolução ' + constraints.video.width.exact + 'x' +
        constraints.video.width.exact + ' px não é suportada pelo seu dispositivo.');
  } else if (error.name === 'PermissionDeniedError') {
    errorMsg('As permissões para usar sua câmera e microfone não foram fornecidas. ' +
      'Você precisa permitir o acesso da página aos seus dispositivos para ' +
      'que a demo funcione.');
  }
  errorMsg('getUserMedia error: ' + error.name, error);
});

function errorMsg(msg, error) {
  errorElement.innerHTML += '&lt;p&gt;' + msg + '&lt;/p&gt;';
  if (typeof error !== 'undefined') {
    console.error(error);
  }
}</pre>

<h2 id="Especificações">Especificações</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Especificação</th>
   <th scope="col">Status</th>
   <th scope="col">Comentário</th>
  </tr>
  <tr>
   <td>{{SpecName('Media Capture', '#mediadevices', 'MediaDevices')}}</td>
   <td>{{Spec2('Media Capture')}}</td>
   <td>Definição inicial</td>
  </tr>
 </tbody>
</table>

<h2 id="Compatibilidade">Compatibilidade</h2>

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

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Recurso</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>Suporte Básico</td>
   <td>{{CompatChrome(47)}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoDesktop("36.0")}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatOpera(30)}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>enumerateDevices()</code></td>
   <td>{{CompatChrome(51)}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatOpera(38)}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>getSupportedConstraints()</code></td>
   <td>{{CompatChrome(53)}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatGeckoDesktop(44)}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatOpera(40)}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td>Eventos <code>ondevicechange</code> e <code>devicechange</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatGeckoDesktop(51)}}<sup>[1]</sup></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td>Captura de áudio estéreo</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatGeckoDesktop(55)}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Recurso</th>
   <th>Android Webview</th>
   <th>Chrome para Android</th>
   <th>Edge</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>Firefox OS</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
   <th>Chrome para Android</th>
  </tr>
  <tr>
   <td>Suporte Básico</td>
   <td>{{CompatChrome(47)}}</td>
   <td>{{CompatChrome(47)}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatGeckoMobile("36.0")}}</td>
   <td>2.2</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatOperaMobile(30)}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>enumerateDevices()</code></td>
   <td>{{CompatChrome(51)}}</td>
   <td>{{CompatChrome(51)}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatOperaMobile(38)}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td><code>getSupportedConstraints()</code></td>
   <td>{{CompatChrome(53)}}</td>
   <td>{{CompatChrome(52)}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatGeckoMobile(50)}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatOperaMobile(40)}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td>Eventos <code>ondevicechange</code> e <code>devicechange</code></td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatGeckoMobile(51)}}<sup>[1]</sup></td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
  <tr>
   <td>Captura de áudio estéreo</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatUnknown}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>

<p>[1] O suporte para o evento <code>devicechange</code> e para {{domxref("MediaDevices.ondevicechange")}} começou no Firefox 51, mas <em>somente pra Mac</em>, e desabilitado por padrão. Ele pode ser habilitado configurando a preferência <code>media.ondevicechange.enabled</code> para <code>true</code>. O suporte para esse evendo foi adicionado para Linux e Windows — ativado por padrão — a partir do Firefox 52.</p>
</div>

<h2 id="Veja_também">Veja também</h2>

<ul>
 <li><a href="/en-US/docs/Web/API/Media_Streams_API">Media Capture and Streams API</a>: A API desta interface faz parte..</li>
 <li><a href="/en-US/docs/Web/API/WebRTC_API">WebRTC API</a></li>
 <li>{{domxref("Navigator.mediaDevices")}}: Retorna uma referência para um objeto <code>MediaDevices</code> que pode ser usado para acessar dispositivos.</li>
 <li><a href="https://github.com/chrisjohndigital/CameraCaptureJS">CameraCaptureJS:</a> Captura de vídeo e playback em HTML5 usando <em>MediaDevices</em> e a <em>MediaStream Recording API</em> (<a href="https://github.com/chrisjohndigital/CameraCaptureJS">código no GitHub</a>)</li>
 <li><a href="https://github.com/chrisjohndigital/OpenLang">OpenLang</a>: Aplicação web de laboratório de linguagem de vídeo HTML5 usando <em>MediaDevices </em>e <em>MediaStream Recording API</em> para gravação de video (<a href="https://github.com/chrisjohndigital/OpenLang">código no GitHub</a>)</li>
</ul>