Biblioteca que implementa o protocolo UDP Cloud da porta 32100 usado por muitas câmeras P2P. Você pode encontrar uma descrição do protocolo no wiki
npm install --save lib32100
Exigir a Biblioteca
const lib32100 = require ( 'lib32100' )
Istanciar um cliente
const client = lib32100 . client ( )
Observe que cada cliente pode lidar com um dispositivo (câmera) e vários servidores em nuvem .
Adicionar servidores
client . addServer ( { host : "myserver.example.com" , port : 32100 } )
Defina o UID do dispositivo
client . setUid ( 'PROD123456ABCDE' )
Adicionar ouvintes
client . on ( 'stun' , ( e ) => console . log ( JSON . stringify ( e ) ) )
client . on ( 'lookup' , ( e ) => console . log ( JSON . stringify ( e ) ) )
Envie comandos para os servidores Cloud
client . sendSTUNRequest ( )
client . lookupUid ( )
Adicionar endereço da câmera
client . addCamAddress ( { host : "192.168.0.100" , port : 10088 } )
Definir credenciais da câmera
client . setCamCredentials ( { user : 'admin' , pass : 'password' } )
Abrir sessão de câmera direta
client . openDirectCamSession ( { host : "192.168.0.100" , port : 10088 } )
Verifique as credenciais
client . checkCredentials ( )
Obter instantâneo
client . getSnapshot ( )
Enviar solicitação GET personalizada
client . sendGet ( '/custom_url.cgi?myparam=hello' )
Envie várias solicitações GET
client . sendMultipleGet ( [ '/custom_url1.cgi' , '/custom_url2.cgi' , '/custom_url3.cgi' ] )
Obtenha transmissão de vídeo ao vivo
client . getVideoStream ( )
Obtenha transmissão de áudio ao vivo
client . getAudioStream ( )
Parar a transmissão de vídeo
client . stopVideoStream ( )
Parar o fluxo de áudio
client . stopAudioStream ( )
Obtenha diversas informações
client . getParams ( )
client . getCameraParams ( )
client . getFactoryParam ( )
client . getStatus ( )
client . cameraControl ( )
client . getMisc ( )
client . login ( )
client . getRtsp ( )
client . getOnvif ( )
client . getRecord ( )
client . wifiScan ( )
client . getWifiScanResult ( )
Mova-se nas direções em etapas
client . stepDown ( )
client . stepLeft ( )
client . stepRight ( )
client . stepUp ( )
Mova-se em direções
client . moveDown ( )
client . moveLeft ( )
client . moveRight ( )
client . moveUp ( )
client . stopMove ( )
Fechar sessão
client . closeCamSession ( )
Você pode ouvir os seguintes eventos:
stun (server response)
lookup (server response)
lookupACK (server response)
unknownMsg (any message not yet parsable by the library)
pingpong (camera ping or pong)
close (camera closed session)
confirmed (camera comfirmed ID i.e. session opened)
ack (camera acked a message)
http (an http response)
audio (live audio data)
video (live video data)
complete (a complete http response)
lostConnection (the connection was lost)
Esta implementação não é baseada em especificações oficiais, mas puramente na engenharia reversa do protocolo. Não posso garantir que funcionará em todos os dispositivos.
MIT. Direitos autorais (c) Fabrizio Bertone