Para fabricantes de cámaras

Dos puertas, y nunca tendrá que seguir nuestro ritmo de versiones.

Definimos un vocabulario de comandos canónico y no dejamos que las formas propias de cada fabricante crucen el bus. Ese rechazo es la invitación: implemente el vocabulario una vez, en su lenguaje y en su calendario, y su cámara será ciudadana de primera aquí.

1

Escriba el driver

Un driver es un plugin .so sobre una ABI de C estable. Seis funciones, una cabecera, unas 200 líneas para uno completo. No requiere nuestro lenguaje ni nuestro sistema de compilación, y sigue funcionando entre nuestras versiones.

$ cc -O2 -shared -fPIC -I /path/to/cam_abi.h/dir my_driver.c -o libcam_acme.so # then name it in the config the hub already reads:"camctl": { "drivers": ["/opt/acme/libcam_acme.so"] }
La orden de compilación tal como la indica el manual del controlador. Seis puntos de entrada: reboot, get_info, set_enc, set_image, ptz, get_state.
2

O hable el dialecto nativo

Responda al vocabulario canónico por REST — POST /v1/<cmd>, autodescrito en /v1/help — y no hace falta ningún driver. La cámara queda soportada el día que sale.

$ curl -s http://reference-camera:8600/v1/helpCommands (POST /v1/<command>, JSON body, Authorization: Bearer <token>): help [/<cmd>] this index; /v1/help/<cmd> details one command (GET ok) login mint a session token (8 concurrent, 3600 s lease) logout void the calling token get_info identity: model, firmware, name get_state everything readable in one call: ptz caps + enc + image set_enc change bitrate_kbps / fps on one stream set_image day_night, back_light, anti_flicker, exposure, white_balance, rotation, mirroring (canonical values) ptz continuous move; the caller owns the press/release pair reboot reseed state, void tokens, drop RTSP sessions
El /v1/help de la cámara de referencia, en extracto. Existe una versión JSON del mismo índice, para que un controlador valide la superficie al arrancar.

La cámara de referencia es el linter

Incluimos una cámara sintética que acepta solo vocabulario canónico. Pruebe contra ella y el veredicto es inequívoco: si su driver falla ahí, sigue hablando en dialecto propio. No hace falta cambiar nada de su firmware para averiguarlo.

La cabecera de la ABI y un driver de demostración completo son documentos públicos

rebootreinicia estado, corta sesiones
get_infoidentidad: modelo, firmware, nombre
set_encbitrate / fps de un flujo
set_imagedía/noche, exposición, balance de blancos — valores canónicos
ptzmovimiento continuo; el llamante gestiona pulsar/soltar
get_statetodo lo legible en una llamada

CCTV_ABI_VERSION 1 · CCTV_V1_N_OPS 6 · src/include/cam_abi.h

Por qué molestarse, honestamente

Porque el trabajo es pequeño, es suyo y no le ata a nosotros. No hay tarifa por unidad para probar, ni cadena de herramientas que adoptar, ni certificación que comprar antes de poder probar. Cómo será finalmente un listado o un programa de certificación es una conversación, y preferimos tenerla cuando su driver ya funcione.