> For the complete documentation index, see [llms.txt](https://portal-integracao.intelbras.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://portal-integracao.intelbras.com.br/defense-ia-and-lite/readme/visualizacao-ao-vivo.md).

# Visualização Ao Vivo

Guia de endpoints e exemplos para iniciar streaming ao vivo (StartVideo), encerrar talk de áudio (StopTalk) e obter URL FLV de um canal.

### Como usar:

* Substitua as variáveis `{{host}}`, `{{loginToken}}` e demais identificadores pelos valores reais do ambiente.
* Utilize variáveis globais do seu projeto quando disponíveis para evitar hardcode.
* Ajuste parâmetros de query conforme o cenário (paginação, filtros, IDs).
* Campos JSON opcionais podem ser removidos ou adicionados sem alterar a estrutura base.
* Sempre valide os tipos esperados pelo backend antes de enviar requisições em lote.

***

### Convenções e autenticação

* Códigos de resultado (padrão): `code: 1000` indica sucesso
* Content-Type: `application/json;charset=UTF-8`
* Idioma (opcional): `Accept-Language: en`
* Autenticação: header `X-Subject-Token: {{loginToken}}` (obtenha o token no seu fluxo de login do projeto)
* Base URL: `http://{{host}}/iams/api/v1.1`

***

### Erros comuns (modelo):

| Situação                   |                       Sintoma | Como resolver                             |
| -------------------------- | ----------------------------: | ----------------------------------------- |
| Token ausente/expirado     |                         `401` | Refaça login e atualize `X-Subject-Token` |
| Content-Type incorreto     |  `415 Unsupported Media Type` | Use `application/json;charset=UTF-8`      |
| Campos obrigatórios vazios | `400` / mensagem de validação | Revise a seção **Parâmetros** do endpoint |

***

### Iniciar vídeo em tempo real

**Tópico**: Inicia a transmissão de vídeo em tempo real de um canal/câmera. A operação cria uma sessão de streaming que pode ser consumida por um player ou serviço cliente, definindo tipo de stream, protocolo e parâmetros de entrega.

* Método: `POST /brms/api/v1.0/MTS/Video/StartVideo`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.0/MTS/Video/StartVideo' 
--header 'X-Subject-Token: FE28CCCC547F46A39bf2c17cf5b3cfb8' 
--header 'Content-Type: application/json' 
--header 'Cookie: JSESSIONID=291F4548138B8F72B83DAFDE0CF2A3CF' 
--data '{
    "data": {
        "streamType": "1",
        "trackId": "",
        "channelId": "1000000$1$0$0",
        "keyCode": "",
        "dataType": "2",
        "enableRtsps": "0",
        "enableMulticast": "0"
    }
}'
```

Resposta (modelo – sucesso):

```json
{
  "code": 1000,
  "desc": "Success",
  "data": {
    "sessionId": "VID_78239123",
    "streamUrl": "rtsp://{{Host}}/live/VID_78239123",
    "protocol": "RTSP",
    "channelId": "1000000$1$0$0",
    "expiresIn": 300,
    "multicast": false
  }
}
```

### Stop Talk (Encerrar comunicação de áudio)

**Tópico**: Encerra uma sessão ativa de comunicação de áudio bidirecional entre o cliente e o dispositivo/câmera. Essa operação libera recursos de áudio e finaliza a sessão iniciada anteriormente.

* Método: `POST /brms/api/v1.0/MTS/Audio/StopTalk`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.0/MTS/Audio/StopTalk' 
--header 'Content-Type: application/json' 
--header 'X-Subject-Token: 0B4B3BCA93D94F479e5f1839da837a05' 
--header 'Cookie: Path=/; JSESSIONID=291F4548138B8F72B83DAFDE0CF2A3CF' 
--data '{
    "data": {
        "talkType": "1",
        "source": "",
        "deviceCode": "1000001",
        "target": "",
        "session": "1",
        "channelSeq": "0"
    }
}'
```

Resposta (modelo – sucesso):

```json
{
  "code": 1000,
  "desc": "Success",
  "data": {
    "session": "1",
    "deviceCode": "1000001",
    "status": "stopped",
    "releasedResources": true,
    "timestamp": "2026-02-20T14:22:31Z"
  }
}
```

### Obtenção do URL de mídia de streaming para visualização ao vivo (FLV)

**Tópico**: Obtém a URL de streaming em formato **FLV** para visualização ao vivo de um canal/câmera. Essa URL pode ser consumida diretamente por players compatíveis ou aplicações web para reprodução em tempo real.

* Método: `POST /brms/api/v1.0/MTS/Audio/StopTalk`
* Headers: `X-Subject-Token`, `Content-Type`

Exemplo (curl):

```bash
curl --location 'https://{{Host}}/brms/api/v1.1/video/live/channel/1000014$1$0$0/flv?streamType=2&protocol=http' 
--header 'X-Subject-Token: 0B4B3BCA93D94F479e5f1839da837a05' 
--header 'Cookie: Path=/; JSESSIONID=291F4548138B8F72B83DAFDE0CF2A3CF'
```

Resposta (modelo – sucesso):

```json
{
    "code": 1000,
    "desc": "Success",
    "data": {
        "streamUrl": "http://10.100.61.138:7886/live/cameraid/1000014%240/substream/2.flv"
    }
}
```

***

Notas Finais:

* Sempre valide o **token (`X-Subject-Token`)** antes de iniciar vídeo ou sessões de áudio, falhas de autenticação podem retornar sucesso HTTP com erro lógico.
* Sessões iniciadas com **StartVideo** possuem validade temporária; implemente renovação automática ou encerramento explícito.
* Evite abrir múltiplas sessões de streaming para o mesmo canal sem controle, isso pode gerar consumo excessivo de recursos.
* A URL FLV retornada é **temporária** e depende do token ativo; trate expiração como comportamento esperado.
* Em players web, valide compatibilidade com **FLV streaming** (ex.: uso de bibliotecas apropriadas).
* Sempre finalize sessões de áudio com **StopTalk** para liberar recursos no dispositivo.
* Padronize logs para operações de streaming e áudio, facilitando auditoria e troubleshooting.
* Em ambientes concorrentes, controle sessões ativas para evitar conflitos de áudio/vídeo.
* Normalize tipos de dados enviados (string vs número) conforme esperado pelo backend..

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://portal-integracao.intelbras.com.br/defense-ia-and-lite/readme/visualizacao-ao-vivo.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
