> ## Documentation Index
> Fetch the complete documentation index at: https://baileys.wiki/llms.txt
> Use this file to discover all available pages before exploring further.

# Mensagens de mídia

> Envie e baixe imagens, vídeos, áudio, documentos, GIFs e stickers.

O Baileys aceita mídia em três formas via `WAMediaUpload`: `Buffer`, `{ url: '...' }`, ou `{ stream: Stream }`.

```typescript theme={null}
Buffer
{ url: URL | string }
{ stream: Readable }
```

<Tip>
  Prefira `{ url }` ou `{ stream }` ao invés de `Buffer` cru — o Baileys faz streaming direto e reduz uso de RAM.
</Tip>

## Enviando mídia

### Imagem

```typescript theme={null}
await sock.sendMessage(
    jid,
    {
        image: {
            url: './Media/ma_img.png'
        },
        caption: 'hello word'
    }
)
```

### Vídeo

```typescript theme={null}
await sock.sendMessage(
    jid,
    {
        video: {
            url: './Media/ma_gif.mp4'
        },
        caption: 'hello word',
        ptv: false
    }
)
```

### GIF

O WhatsApp não suporta `.gif`. Envie como `.mp4` com `gifPlayback: true`.

```typescript theme={null}
await sock.sendMessage(
    jid,
    {
        video: fs.readFileSync('Media/ma_gif.mp4'),
        caption: 'hello word',
        gifPlayback: true
    }
)
```

### Áudio

Converta com `ffmpeg` antes de enviar:

```bash theme={null}
ffmpeg -i input.mp4 -c:a libopus -ac 1 -avoid_negative_ts make_zero output.ogg
```

```typescript theme={null}
await sock.sendMessage(
    jid,
    {
        audio: {
            url: './Media/output.ogg'
        },
        mimetype: 'audio/ogg; codecs=opus'
    }
)
```

<Note>
  Flags `ffmpeg`: `codec: libopus`, `ac: 1`, `avoid_negative_ts make_zero`.
</Note>

### Visualizar uma vez

```typescript theme={null}
await sock.sendMessage(
    jid,
    {
        image: {
            url: './Media/ma_img.png'
        },
        viewOnce: true,
        caption: 'hello word'
    }
)
```

## Geração de miniaturas

| Tipo de mídia       | Dependência        | Comando                            |
| ------------------- | ------------------ | ---------------------------------- |
| Imagens, figurinhas | `jimp` ou `sharp`  | `yarn add jimp` / `yarn add sharp` |
| Vídeos              | `ffmpeg` (sistema) | Gerenciador de pacotes do SO       |

## Baixando mídia recebida

```typescript theme={null}
import { createWriteStream } from 'fs'
import { downloadMediaMessage, getContentType } from '@whiskeysockets/baileys'

sock.ev.on('messages.upsert', async ({ messages }) => {
    for (const m of messages) {
        if (!m.message) continue
        const messageType = getContentType(m.message)

        if (messageType === 'imageMessage') {
            const stream = await downloadMediaMessage(
                m,
                'stream',
                { },
                {
                    logger,
                    reuploadRequest: sock.updateMediaMessage
                }
            )
            const writeStream = createWriteStream('./my-download.jpeg')
            stream.pipe(writeStream)
        }
    }
})
```

## Re-upload de mídia antiga

```typescript theme={null}
await sock.updateMediaMessage(msg)
```

<Note>
  `reuploadRequest: sock.updateMediaMessage` em `downloadMediaMessage` cuida disso automaticamente em 404 ou 410.
</Note>
