“Frequently Asked Questions”

This is an AI-generated content, fully based on Viinex 3.4 documentation.

1. What is Viinex 3.4 and what are its core functionalities?

Viinex 3.4 is a comprehensive software system designed for video management and processing, as detailed in its user guide. Its core functionalities revolve around managing various media sources, handling media storage and replication, and enabling media streaming and processing.

It supports a wide array of media sources, including RTSP video streams, ONVIF devices, raw video inputs, and integration with third-party Video Management Systems (VMS) like Milestone XProtect, Geutebrück G-Core, and others. For storage, it offers local media storage with configurable limits, recording control, and both source and sink replication capabilities, including support for cloud media storage. Media streaming is facilitated through RTSP and WebRTC servers, enabling live and archived video access.

Beyond basic video handling, Viinex 3.4 provides advanced processing features such as video rendering, stream switching, and the application of rules for automated actions. It also includes general-purpose objects for interacting with Modbus GPIO devices, relational databases, executing scripts and external processes, and providing web server functionalities.

2. How does Viinex 3.4 manage security and access control for its resources?

Viinex 3.4 implements a robust authentication and authorization (authnz) system with role-based access control (RBAC). Access permissions are defined using “access control entries” (ACEs), which are tuples specifying a role, an object identifier, and an endpoint type identifier. These ACEs form an “access control list” (ACL), and Viinex 3.4 supports storing multiple independent ACLs within the same database, each identified by a unique integer acl_id.

Authentication can be handled through token authentication or digest authentication, often utilizing a “realm” string for verification, particularly for protocols like RTSP. For user management, Viinex 3.4 supports defining user accounts (e.g., password-based) and mapping users to roles. The system provides API endpoints to manage users, roles, and ACEs, allowing for dynamic modification of access rights.

The documentation also mentions the use of htdigest files as a convenient way to manage user credentials without altering configuration files directly.

3. What types of media sources can be integrated with Viinex 3.4?

Viinex 3.4 is highly versatile in the types of media sources it can integrate. It supports:

  • RTSP video sources: Standard Real-Time Streaming Protocol (RTSP) streams, a common method for IP cameras and video encoders.
  • ONVIF devices: Integration with devices conforming to the ONVIF standard, allowing for broader compatibility and control (e.g., PTZ functions).
  • Media source plugins: Extensible architecture for custom media source integrations.
  • Raw video sources: Direct input of raw video data, potentially from local capture devices.
  • Video channels from third-party VMS: Seamless integration with various commercial Video Management Systems, including:
    • Milestone XProtect
    • Geutebrück G-Core
    • Qognify (SeeTec) Cayuga
    • Pelco VideoXpert
    • Bosch BVMS
    • DSSL Trassir
    • Macroscop and Eocortex
    • Other VMS integrations via native plugins or script-driven APIs (e.g., for Hikvision and Dahua NVRs).

This broad support allows Viinex 3.4 to function as a central hub for diverse video surveillance and processing needs.

4. How does Viinex 3.4 handle video storage and replication?

Viinex 3.4 provides robust mechanisms for video storage and replication to ensure data integrity and availability.

  • Local Media Storage: Video data can be stored locally on a specified filesystem path. The configuration allows defining limits such as maximum size in gigabytes, maximum depth (retention period) in absolute or relative hours, and a percentage of free space to maintain. Crucially, the local video storage implementation requires exclusive access to its designated folder, meaning no external modifications or concurrent use by other storage instances are permitted.
  • Recording Controller: This object manages the recording status of video sources, allowing control over when and how video data is flushed to disk.
  • Replication Source and Sink: Viinex 3.4 supports media replication, where a “replication source” can send video data to a “replication sink.” This enables distributed storage scenarios and redundancy. The system can manage replication tasks, allowing for enqueuing, getting information on, managing status of, and removing replication tasks.
  • Joint Media Storage: This suggests the capability to combine multiple storage locations.
  • Cloud Media Storage: Viinex 3.4 also has provisions for storing media in cloud environments, indicating flexibility in deployment architectures.

5. What scripting capabilities does Viinex 3.4 offer for automation and custom logic?

Viinex 3.4 includes a built-in scripting system that supports JavaScript (JS) for automation and implementing custom logic. This scripting environment provides several key features:

  • Execution Model and Handlers: Scripts operate with specific handlers:
  • onload: Executed when the script is loaded.
  • ontimeout: Called after a specified delay, allowing for scheduled tasks.
  • onevent: Triggered by system events.
  • onupdate: Invoked when the script’s state is updated.
  • Timers and Delays: Scripts can schedule tasks using vnx.timeout() for a single global timer or vnx.timer.delay() to create multiple concurrent asynchronous delays with callbacks, enabling periodic or delayed actions.
  • General Purpose Functions: A vnx namespace provides functions for:
  • vnx.publish(): To publish the script’s internal state for external HTTP GET calls.
  • vnx.event(): To send custom events with a topic and data.
  • Logging: vnx.log(), vnx.debug(), vnx.error(), vnx.warning() for debugging and diagnostics.
  • Module Loading: require() for loading JS modules from predefined paths, facilitating code reuse and organization (e.g., vms-driver for VMS integrations).
  • Filesystem Access: Limited functions like unlinkSync, existsSync, renameSync, readFileSync, writeFileSync for local file operations.
  • HTTP Client: Functionality to make HTTP requests from within scripts.
  • Application Interfaces: Scripts can interact with various Viinex 3.4 application interfaces such as LayoutControl, PtzControl, RecControl, SnapshotSource, VideoStorage, and WebRTC, allowing scripts to control video display layouts, PTZ cameras, recordings, snapshots, video archives, and WebRTC sessions.
  • Script-driven VMS Integration: This is a crucial feature, allowing developers to implement custom drivers for VMS systems not natively supported, by defining how live/archive streams, credentials, snapshots, and timelines are retrieved.

6. How does Viinex 3.4 handle licensing, especially in virtualized or cloud environments?

Viinex 3.4 requires a license document to function, and it offers several flexible licensing options, particularly addressing challenges in virtualized or cloud environments:

  • Local License Document: This can be a string in the configuration, stored in the Windows registry, or a file on a Linux filesystem. These licenses are typically bound to the PC’s hardware ID.
  • USB Device (SenseLock Dongle): Licenses can be stored on a physical USB dongle. The viinex-lm-upgrade utility is provided to enumerate dongles, show license content, and update dongles remotely.
  • “Emulated” License Storage: This mimics the behavior of a SenseLock dongle but stores the license document in a fixed OS location (e.g., Windows registry key or Linux file). This is useful for software-bound licenses without needing a physical dongle.
  • Floating License Server: A Viinex 3.4 instance can act as a floating license server, allowing other Viinex instances on the network to acquire licenses dynamically. This is highly beneficial for containerized or virtualized deployments where instances might migrate between physical servers, as it decouples the license from specific hardware. The interaction is designed to be fault-tolerant, allowing clients to “survive” network outages for up to 8 hours.
  • Provisional Licenses: Viinex 3.4 can automatically connect to a Viinex key management portal to request and install licenses. An instance using provisional licensing can also serve as a floating license server for other local network instances. Provisional licenses are transient and acquired as “tickets” rather than persistent license keys.

The license document content can be queried via an HTTP API, showing product details, binding information (SenseLock or hardware ID), features licensed (e.g., number of IP video channels, replication sinks/sources), and any time limits. There’s also an API to “probe for licenses” to estimate available licenses without actually acquiring them.

7. What types of API interfaces does Viinex 3.4 expose for external integration and control?

Viinex 3.4 exposes several types of API interfaces, catering to different integration needs:

  • HTTP API: This is a primary interface for interacting with Viinex 3.4. It allows for:
    • Enumerating and obtaining metainformation on published components.
    • Authentication (challenge/response).
    • Environment details (USB dongles, license info, software version, ONVIF/raw video source discovery).
    • Video source status and live streams.
    • Video archive management (status, contents, disk usage, media export/playback, record removal).
    • Recording controller management (status, changing recording status, flushing data).
    • Managed replication tasks (enqueue, get info, manage status, remove, enumerate).
    • Snapshots (getting from live or archive sources, with scaling/resizing options).
    • Overlay control (clearing, changing bitmap/HTML).
    • Video renderer and layout control.
    • Stream switching.
    • PTZ control (getting node description, managing presets, moving, stopping motion).
    • WebRTC signaling (general info, session creation/management, status).
    • Event storage (summary, retrieval).
    • Authentication and ACL-related storage (enumerating users, getting ACL info, modifying accounts and ACLs).
    • Scripting-style API endpoint.
  • WebSocket Interface: Provides real-time communication capabilities.
  • WAMP Interface: Viinex 3.4 includes a WAMP (Web Application Messaging Protocol) client for connecting to a WebSocket server acting as a WAMP router. This enables remote calls and event publication/subscription, with support for authentication and managing configuration clusters.
  • Scripting and JS API: As detailed previously, this allows for custom logic and integration directly within Viinex 3.4 using JavaScript, interacting with internal objects and external services.
  • Native API (C/C++): The vnxvideo library provides low-level C and C++ APIs. This allows for extending Viinex 3.4 with custom video processing functionality, acquiring raw video, and implementing custom H.264 video source plugins or VMS integration plugins, offering direct control over video frames and formats.

These diverse APIs ensure that Viinex 3.4 can be integrated into various IT environments and extended to meet specific application requirements.

8. What is the significance of “objects” and “endpoints” in Viinex 3.4’s architecture?

In Viinex 3.4’s architecture, “objects” and “endpoints” are fundamental concepts for its modularity, functionality, and communication:

  • Objects: These are instances of specific functionalities within Viinex 3.4, each configured for a particular purpose. Examples include RTSP video source objects, Local media storage objects, WebRTC server objects, Modbus GPIO device objects, script objects, and objects representing connections to third-party VMS systems (milestone, geutebruck, etc.). Each object has a type and a name for identification. The configuration section of the guide lists numerous object types, each with its specific parameters and behaviors.
  • Endpoints: These define the interfaces through which objects expose their functionalities or require specific services from other objects. An object can implement one or more endpoints. Endpoints are categorized by their “type” (e.g., VideoSource, VideoStorage, PtzControl, AuthnzClient, AclProvider).
  • Public Endpoints: Some endpoints expose API methods or provide data that can be consumed by external components (e.g., via HTTP or WAMP).
  • Internal/Diamond Endpoints (⋄): Other endpoints primarily have meaning for interactions between objects within a Viinex 3.4 cluster. These endpoints do not expose public APIs themselves but signify that the object implementing them might need to access certain data or services from other objects, or their presence can modify other objects’ behavior when linked.
  • Links: Objects connect to each other through “links,” which define relationships and data flow between specific endpoints of different objects. While many endpoints can participate in multiple links, some are “saturable,” meaning they can only be part of one link (e.g., AuthnzClient can only connect to one authentication provider). The type of a link is determined by the types of the two linked endpoints, forming a bidirectional connection.

This object-endpoint-link architecture allows for a highly flexible and extensible system where functionalities can be composed, configured, and secured in a granular manner. It enables Viinex 3.4 to be tailored to various deployment scenarios by combining different objects and defining their interconnections and access policies.