> For the complete documentation index, see [llms.txt](https://digitalsac.gitbook.io/digicalls/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://digitalsac.gitbook.io/digicalls/digicalls-sdk/conceitos-fundamentais/midia.md).

# Mídia

O SDK captura microfone via `getUserMedia`, negocia WebRTC com o servidor DigiCalls e reproduz áudio remoto no alto-falante padrão (ou device selecionado).

### Listar dispositivos

```typescript
const { microphones, speakers } = await dc.getMultimediaDevices();
```

Retorna arrays de `MediaDeviceInfo` do navegador.

### Selecionar microfone / saída

```typescript
dc.setMic("device-id-do-mic");
dc.setOutput("device-id-do-speaker");
```

A seleção vale para **próximas** chamadas (accept/startCall). Troca durante chamada ativa requer renegociação — prefira escolher antes de atender.

### Permissão de microfone

`offer.accept()` e `startCall()` solicitam permissão de microfone. Chame a partir de um **clique do usuário** para evitar bloqueio de autoplay/policy.

### ICE / STUN / TURN

O SDK obtém servidores ICE do backend:

```
GET /api/webrtc-config  →  { iceServers: [...] }
```

Configure TURN no servidor DigiCalls (`WACALLS_ICE_*`) se operadores estiverem atrás de NAT simétrico.

### Codecs

A perna operador ↔ servidor usa **Opus** via WebRTC. A perna WhatsApp (whatsmeow) usa codec nativo do WhatsApp; SIP usa **PCMU/PCMA** conforme config do device.

### Silenciar

Na chamada ativa:

```typescript
call.mute();   // desabilita track local
call.unmute();
```

Não há renegociação SDP — apenas `track.enabled = false`.

### Problemas comuns

| Sintoma             | Causa provável                           |
| ------------------- | ---------------------------------------- |
| Sem áudio           | ICE falhou — verifique TURN              |
| Microfone bloqueado | Permissão negada ou sem gesto do usuário |
| Eco                 | Use fone ou AEC do navegador             |

Veja Solução de problemas.
