Biblioteca que implementa el protocolo de nube UDP del puerto 32100 utilizado por muchas cámaras P2P. Puedes encontrar una descripción del protocolo en la wiki.
npm install --save lib32100
Requerir la biblioteca
const lib32100 = require ( 'lib32100' )
Instanciar un cliente
const client = lib32100 . client ( )
Tenga en cuenta que cada cliente puede manejar un dispositivo (cámara) y varios servidores en la nube .
Agregar servidores
client . addServer ( { host : "myserver.example.com" , port : 32100 } )
Configurar el UID del dispositivo
client . setUid ( 'PROD123456ABCDE' )
Agregar oyentes
client . on ( 'stun' , ( e ) => console . log ( JSON . stringify ( e ) ) )
client . on ( 'lookup' , ( e ) => console . log ( JSON . stringify ( e ) ) )
Enviar comandos a los servidores de la nube
client . sendSTUNRequest ( )
client . lookupUid ( )
Agregar dirección de cámara
client . addCamAddress ( { host : "192.168.0.100" , port : 10088 } )
Establecer credenciales de cámara
client . setCamCredentials ( { user : 'admin' , pass : 'password' } )
Abrir sesión de cámara directa
client . openDirectCamSession ( { host : "192.168.0.100" , port : 10088 } )
comprobar credenciales
client . checkCredentials ( )
Obtener instantánea
client . getSnapshot ( )
Enviar solicitud GET personalizada
client . sendGet ( '/custom_url.cgi?myparam=hello' )
Enviar múltiples solicitudes GET
client . sendMultipleGet ( [ '/custom_url1.cgi' , '/custom_url2.cgi' , '/custom_url3.cgi' ] )
Obtener transmisión de video en vivo
client . getVideoStream ( )
Obtener transmisión de audio en vivo
client . getAudioStream ( )
Detener transmisión de vídeo
client . stopVideoStream ( )
Detener la transmisión de audio
client . stopAudioStream ( )
Obtener información diversa
client . getParams ( )
client . getCameraParams ( )
client . getFactoryParam ( )
client . getStatus ( )
client . cameraControl ( )
client . getMisc ( )
client . login ( )
client . getRtsp ( )
client . getOnvif ( )
client . getRecord ( )
client . wifiScan ( )
client . getWifiScanResult ( )
Moverse en direcciones en pasos
client . stepDown ( )
client . stepLeft ( )
client . stepRight ( )
client . stepUp ( )
Moverse en direcciones
client . moveDown ( )
client . moveLeft ( )
client . moveRight ( )
client . moveUp ( )
client . stopMove ( )
Cerrar sesión
client . closeCamSession ( )
Puedes escuchar los siguientes 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 implementación no se basa en especificaciones oficiales sino puramente en ingeniería inversa del protocolo. No puedo garantizar que funcione en todos los dispositivos.
MIT. Copyright (c) Fabrizio Bertone