Usando clientes ONVIF para visualizar fluxos de vídeo

Clientes ONVIF podem ser muitas coisas diferentes, desde sistemas de vigilância personalizados avançados até reprodutores de mídia básicos.

Se você tiver aplicado uma máscara de privacidade permanente ao seu vídeo, não conseguirá transmitir o vídeo de um cliente ONVIF.

Esta seção fornece exemplos de como conectar-se ao Milestone Open Network Bridge.

Utilizar um Cliente de Vídeo em Rede para visualizar um fluxo ao vivo

Este exemplo descreve como instalar o ONVIF Device Manager e configurá-lo para transmitir vídeo ao vivo por streaming a partir de uma instalação XProtect.

O ONVIF Device Manager é um cliente de vídeo em rede de código aberto da iDeviceDesign, que cumpre os padrões ONVIF. A ferramenta facilita a descoberta e visualização de vídeo de câmeras compatíveis com ONVIF em uma rede. No entanto, o ONVIF Device Manager transmite apenas vídeo ao vivo. Além disso, não é possível capturar e salvar os dados de vídeo no fluxo.

O ONVIF Device Manager não é compatível com codec FIPS 140-2 ou H.265.

Antes de iniciar a instalação, você precisa ter as seguintes informações:

  • As credenciais de login para o usuário que foi criado para o Milestone Open Network Bridge
  • O endereço IP ou nome do computador onde o Milestone Open Network Bridge está instalado

Para instalar o ONVIF Device Manager, siga estas etapas:

  1. Vá para o site do Gerenciador do Dispositivo Sourceforge ONVIF Device Manager (https://sourceforge.net/projects/onvifdm/) e depois faça o download e execute o instalador. Você pode instalar o ONVIF Device Manager em qualquer computador.
  2. Quando a instalação for concluída, um ícone estará disponível em sua área de trabalho. Clique duas vezes no ícone para iniciar o ONVIF Device Manager.
  3. Quando você iniciar o ONVIF Device Manager, ele descobrirá automaticamente os dispositivos compatíveis com o ONVIF na rede. Porém ele pode não descobrir o Milestone Open Network Bridge.
    • Se descobrir, pule para a etapa 6
    • Se não descobrir, adicione a ponte manualmente. Continue com a etapa 4
  4. Para adicionar um Milestone Open Network Bridge, clique em ADICIONAR.
  5. Na caixa de diálogo Adicionar dispositivo, no campo URI, forneça o nome ou endereço IP do computador onde o Milestone Open Network Bridge está instalado e o número da porta ONVIF. Por exemplo, a sequência deve parecer com o seguinte: http://[endereço IP]:580/onvif/device_service.
  6. Depois que você adicionar a ponte, ela estará disponível no fim da lista Device (Dispositivos). Selecione-a.
  7. Insira as credenciais de login do usuário que foi criado para o cliente ONVIF acima da lista. Se for um usuário do Windows, você precisará inserir o nome de domínio\usuário.

Usar um reprodutor de mídia para visualizar um fluxo de vídeo

Este exemplo descreve como usar o reprodutor de mídia VLC para recuperar e visualizar uma transmissão de vídeo ao vivo ou um vídeo gravado de uma câmera em uma instalação XProtect.

O reprodutor de mídia VLC é um reprodutor de mídia de código aberto gratuito da VideoLan, compatível com diversos protocolos de streaming, incluindo RTSP. Por exemplo, usar o reprodutor de mídia VLC é útil quando você quer uma maneira muito rápida de se conectar a uma câmera ou apenas testar a conexão com uma câmera.

Quando você se conecta a uma câmera para visualizar um vídeo gravado, o Milestone Open Network Bridge transmite as sequências de vídeo, começando pela primeira sequência.

Antes de começar, obtenha da pessoa que administra a instalação XProtect as seguintes informações:

  • As credenciais de login para a conta de usuário atribuída ao Milestone Open Network Bridge
  • O endereço IP ou nome do computador onde o Milestone Open Network Bridge está instalado

Além disso, dependendo do esquema usado, você precisa das seguintes informações:

  • Se você usa rtsp://[rtsp_server]:554/live/[camera_id]

    Então você precisa do GUID do dispositivo do qual deseja transmitir vídeo

    O GUID da câmera está disponível no Management Client. Para encontrar o GUID, selecione o servidor de gravação onde a câmera foi adicionada e, em seguida, selecione a câmera. Clique na guia Info (Informações), pressione e mantenha pressionada CTRL em seu teclado, depois clique na visualização de vídeo da câmera.

  • Se você usa rtsp://[rtsp_server]:554/live/[camera_id]/[stream_number]

    Então você precisa do número de fluxo. Este é valor numérico entre 0 e 15.

  • Se você usa rtsp://[rtsp_server]:554/live/[camera_id]/[stream_id]

    Então você precisa do ID do stream. Trata-se do GUID que identifica o fluxo no VMS XProtect.

    Os GUIDs de implementação de multifluxo do VMS XProtect atual que identificam os fluxos serão corrigidos para:

    • 28dc44c3-079e-4c94-8ec9-60363451eb40 - para stream 0

    • 28dc44c3-079e-4c94-8ec9-60363451eb41 - para stream 1

    • ...

    • 28dc44c3-079e-4c94-8ec9-60363451eb4f - para stream 15

A descrição se baseia em VLC 2.2.4 para Windows.

Para instalar o reprodutor de mídia VLC e conectá-lo ao um sistema XProtect, siga as etapas abaixo:

  1. Vá para https://www.videolan.org/vlc/, e depois baixe o instalador para o VLC media player.
  2. Execute o instalador e siga as instruções para cada etapa.
  3. Na barra de tarefas, clique em Media (Mídia) e selecione Open Network Stream (Abrir fluxo de rede).
  4. Na caixa de diálogo Open media (Abrir mídia), insira a seguinte sequência RTSP. Substitua as variáveis nos colchetes [Endereços IP Milestone Open Network Bridge] e [Camera GUID] pelas informações corretas:
    • Para visualizar um fluxo de vídeo ao vivo, insira rtsp://[Milestone Open Network Bridge IP Address]:554/live/[Camera GUID]
    • Para visualizar vídeo gravado, insira rtsp://[Milestone Open Network Bridge IP Address]:554/vod/[Camera GUID]
  5. Clique em Play, depois insira o nome de usuário e a senha da conta de usuário que foi adicionada ao Milestone Open Network Bridge.

Gerenciar a reprodução de vídeo

Os controles de reprodução cumprem com as normas do RTSP e com a Especificação de Transmissão ONVIF (https://www.onvif.org/profiles/specifications/).

Resumo da gravação

Você pode obter uma visão geral de todos os vídeos gravados disponíveis no dispositivo usando o comando GetRecordingSummary . Isso não é necessário, mas fornece informações úteis antes de realizar uma pesquisa.

Você pode usar GetRecordingSummary e/ou GetMediaAttributes para obter o carimbo de data/hora da primeira e da última gravação, mas primeiro você deve habilitar a configuração Usar configurações de câmeras no Milestone Open Network Bridge plug-in no XProtect Management Client.

Use configuration from cameras check box in the Open Network Bridge Information pane.

Gere um proxy para o serviço RecordingSearchusando o ponto final retornado pelo GetServices. Gere objetos de solicitação e resposta, em seguida, chame GetRecordingSummary.

SearchBindingProxy searchProxy( &soapSearch );

std::string searchEndpoint = "http://" + host + "/onvif/recording_search_service";

_tse__GetRecordingSummary tse__GetRecordingSummary;

_tse__GetRecordingSummaryResponse tse__GetRecordingSummaryResponse;

result = searchProxy.GetRecordingSummary( searchEndpoint.c_str(), NULL,

   &tse__GetRecordingSummary, &tse__GetRecordingSummaryResponse );

Pesquisar gravações

O método do serviço de pesquisa FindRecordings inicia uma pesquisa assíncrona na câmera. FindRecordings retorna um token que faz referência aos resultados da pesquisa. Mesmo que exista apenas uma gravação disponível, uma pesquisa é a maneira correta de obter uma referência para essa gravação.

Envie uma solicitação FindRecordings com os seguintes parâmetros obrigatórios:

  • SearchScope > IncludedSources > Token – você deve fornecer o token GUID da câmera
  • SearchScope > RecordingInformationFilter – string com os seguintes parâmetros:
    • timestamp (em formato UTC)
    • maxTimeBefore (o tempo antes da marcação de tempo solicitada, em milissegundos)
    • maxCountBefore (o número máximo de faixas antes da marcação de tempo solicitada)
    • maxTimeAfter (o tempo após a marcação de tempo solicitada, em milissegundos)
    • maxCountAfter (o número máximo de faixas após a marcação de tempo solicitada)

Por exemplo:

boolean(//Track[TrackType = “Video”]),2016-12-06T08:07:43Z,99999999,20,99999999,20

Você receberá uma resposta com um SearchToken, que é exclusivo para os critérios de pesquisa.

Passe o SearchToken para GetRecordingSearchResults e você receberá uma lista com todas as faixas correspondentes ao critério de pesquisa.

Iniciando a reprodução

Quando estiver visualizando uma reprodução de vídeo, a velocidade padrão é 1 (reprodução normal na direção de avanço).

A reprodução é iniciada por meio do método Reprodução do RTSP. Um intervalo pode ser especificado. Se nenhum intervalo for especificado, o fluxo é reproduzido do início até o final ou, se o fluxo for pausado, é retomado do ponto em que foi parado. Neste exemplo, "Intervalo: npt=3-20" instrui o servidor de RTSP para iniciar a reprodução a partir do terceiro segundo até o 20º segundo.

Por exemplo:

PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0

CSeq: 123

Session: 12345678

Require: onvif-replay

Range: npt=3-20

Rate-Control: no

Reprodução em recuo

Os dispositivos ONVIF PODEM suportar a reprodução em recuo. A reprodução em recuo é indicada utilizando o campo da plataforma Escala com um valor negativo. Por exemplo, para reproduzir em recuo sem perda de dados, um valor de -1,0 seria usado.

O Milestone Open Network Bridgesuporta os valores [-32 : 32].

PLAY rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0

CSeq: 123

Session: 12345678

Require: onvif-replay

Range: clock=20090615T114900.440Z

Rate-Control: no

Scale: -1.0

Mudança de velocidade

A velocidade é controlada pela plataforma do Controle de Frequência do RTSP. Se "Controle de Frequência=sim", então o servidor está no controle da velocidade de reprodução. O fluxo é entregue em tempo real usando os mecanismos de temporização padrão do RTP. Se "Controle de Frequência=Não", então o cliente está no controle da velocidade de reprodução. A reprodução com frequência controlada normalmente será utilizada apenas por não clientes ONVIF específicos porque eles não irão especificar "Controle de Frequência=Não".

Para controlar a velocidade da reprodução em um cliente, use os controladores fornecidos. Por exemplo, com o media player VLC, selecione Reprodução > Velocidade > Mais rápido ou Mais lento. Isso aumenta ou diminui a velocidade em 0,5.

Fim mais rápido e Fim mais lento alteram a velocidade em 0,25.

Gerenciar a reprodução do media player VLC com entradas na linha de comando

Você pode gerenciar a reprodução de vídeos no media player VLC usando linhas de comando. Consulte Ajuda da linha de comando VLC (https://wiki.videolan.org/VLC_command-line_help/) para obter detalhes.

Estes comandos permitem, por exemplo, inverter a reprodução e alterar a hora de início da reprodução.

Um exemplo típico de uma linha de comando:

>vlc.exe --rate=-1.0 --start-time=3600 "rtsp://user:1234@test01:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373"

Onde:

  • Frequência é o parâmetro de escala e velocidade
  • Hora de início são os segundos após o início do banco de dados

A seguir, estão os controles de reprodução para media player VLC:

Código

O que posso conseguir com o código?

entrada-repetir=

<integer [-2147483648 .. 2147483647]>

Repetições de entrada

Número de vezes que a mesma entrada será repetida

start-time=

<float>

Hora de início

O fluxo vai começar nesta posição (em segundos)

stop-time=

<float>

Hora do fim

O fluxo irá parar nesta posição (em segundos)

run-time=

<float>

Tempo de execução

O fluxo será executado nesta duração (em segundos)

busca-rápida-pela-entrada

nenhuma-busca-rápida-pela-entrada

Busca rápida (padrão desativado)

Favorecer a velocidade sobre a precisão durante a busca

rate=

<float>

Vel. de reprodução

Isto define a velocidade de reprodução (a velocidade nominal é de 1,0)

input-list=

<string>

Lista de entrada

Você pode dar uma lista de entradas separadas por vírgula que serão concatenadas juntas após a normal

input-slave=

<string>

Entrada escravo (experimental)

Isto permite a reprodução a partir de várias entradas ao mesmo tempo. Este recurso é experimental, nem todos os formatos são suportados. Use uma lista de entradas separadas por '#'