AVCoders.Camera 2026.11.1

Prefix Reserved
dotnet add package AVCoders.Camera --version 2026.11.1
                    
NuGet\Install-Package AVCoders.Camera -Version 2026.11.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AVCoders.Camera" Version="2026.11.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AVCoders.Camera" Version="2026.11.1" />
                    
Directory.Packages.props
<PackageReference Include="AVCoders.Camera" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AVCoders.Camera --version 2026.11.1
                    
#r "nuget: AVCoders.Camera, 2026.11.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AVCoders.Camera@2026.11.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AVCoders.Camera&version=2026.11.1
                    
Install as a Cake Addin
#tool nuget:?package=AVCoders.Camera&version=2026.11.1
                    
Install as a Cake Tool

AVCoders.Camera

PTZ camera and auto-tracking drivers for the AV Coders device library. Built on AVCoders.Core. Targets .NET 8.0 and .NET 10.0.

Install

dotnet add package AVCoders.Camera

Published to nuget.org. See the repository README for details.

Drivers

  • SonyVisca
  • AverVisca — implements ITrackingCamera
  • CrestronIvCam (IV-CAM-P12, IV-CAM-P20)
  • CrestronIvCamI12 (IV-CAM-I12) — implements ITrackingCamera
  • LumensCL510
  • LumensCL511
  • AutomateVX (1 Beyond)

Usage

Drivers derive from CameraBase and talk to hardware through a transport from AVCoders.CommunicationClients. See the repository README for full wiring, logging and tracing setup.

SonyVisca and the drivers built on it (AverVisca, CrestronIvCam, CrestronIvCamI12) poll in the background from construction. Dispose() stops the poll and unsubscribes the driver from its client.

IV-CAM-I12 multi-camera switching

CrestronIvCamI12 switches its own USB output between itself (camera 1) and up to four companion cameras (2–5) on the same TCP connection (port 5500). The companions get no commands. SetCompanionIp, ClearCompanionIps, SelectCamera and SetIntelligentSwitching drive it; ActiveCamera, IntelligentSwitching and CompanionIps report it. Each poll refreshes them, and QueryStatus() (on every SonyVisca-based driver) runs the poll inquiries immediately. While intelligent switching is on, the active camera is also checked every second. Selecting a camera by hand turns intelligent switching off until it's turned back on. A companion slot reads null until the camera has reported it and "" when the camera reports it empty. SetCompanionIp returns false when it rejects the slot or the address. Requires camera firmware 2.1.02 or later.

Cameras that can't reply

If the camera is wired one-way (transmit only), set DeviceSendsResponses = false on the driver. Drivers that normally wait for replies (SonyVisca, AverVisca) then stop polling and update power, preset, tracking and communication state as each command is handed to the transport. With replies on, the communication state becomes Okay only on a reply from the camera. LumensCL510 and LumensCL511 never read replies, so they report false from construction and logs a warning if asked to change.

Assumed feedback is only as good as the transport: if a client queues or drops bytes while it is disconnected, the driver cannot tell and still reports the command as done.

How SonyVisca matches replies

With IP headers (VISCA over IP), every reply echoes the sequence number of the message it answers, and the driver matches on that.

Without IP headers (serial, or raw TCP such as the IV-CAM's port 5500) there is no sequence number, so the driver keeps every command and inquiry it sent, in send order, and matches each reply to the one it answers. This follows the Sony VISCA protocol (Documentation\Sony\VISCA.pdf p5): a command gets an ACK and an inquiry doesn't; the completion or error carries the socket number the ACK named; socket 0 is for inquiries and requests that use no socket; and the camera has two command buffers, so a completion can arrive after later traffic.

  • An ACK goes to the oldest command still waiting for one, which then sits in the socket the ACK named.
  • An inquiry reply goes to the oldest waiting inquiry whose reply has that length: 4 bytes for power, 5 for pan/tilt status and 10 for the version (VISCA.pdf p25–26). A lost power reply therefore can't hand the pan/tilt or version reply to the wrong inquiry. A reply of a length no waiting inquiry expects is logged as a warning with its raw bytes and answers nothing.
  • A completion or error in socket 1 or 2 goes to the command in that socket, however much traffic came in between. A completion with no ACK before it goes to the oldest command still waiting for its ACK.
  • A socket 0 error goes to the oldest inquiry or command still waiting for a reply. A command's syntax error is reported against that command, as before. Only a metadata inquiry's own syntax error (version, pan/tilt status) shows Not supported.
  • Inquiries go one at a time: the next is sent once the camera answers the one before, or after 1 s without an answer. Commands go straight out. Each poll drops inquiries still queued from the last one, and a connection change drops the whole queue. An IV-CAM-I12 silently drops inquiries when more than two await a reply (unverified: bench observation, no log kept).
  • An inquiry or ACK that hasn't come back within 1 s is dropped, logged at Debug, and takes no later reply.
  • A connection change forgets every request still waiting, so nothing sent on the old connection takes a reply on the new one.
  • Inquiries with the same reply length are still matched by order alone: power and the IV-CAM-I12 tracking state are both 4 bytes. The tracking reply length comes from the driver's existing parsing (unverified).

A camera that stops answering

Both modes count polls that got no reply at all from the camera. After 3 in a row, communication goes to Error, which raises the Critical communication issue, and the event list and a Warning log line show the raw No reply to <bytes> for the last poll's inquiries. The next reply sets communication back to Okay. Polling carries on unchanged. While communication is in Error, the version and pan/tilt status read issues aren't raised as well.

Pan/tilt status

While the camera is On, SonyVisca asks for the pan/tilt status each poll and decodes it per the Sony manual's PAN-TILT STATUS CODE table (Documentation\Sony\50531551M.pdf p107). A defective pan or tilt mechanism, a pan or tilt position that can't be detected, a failed pan/tilt operation and a failed initialisation each raise a Major issue (pan-mechanism, tilt-mechanism, pan-position, tilt-position, pan-tilt-operation, pan-tilt-initialisation). Each clears on the next status reply without it. A reply with no fault shows Pan/Tilt Status: Normal: <raw reply>; a reply with a fault removes that Detail while the issue stands. A camera that rejects the inquiry with a syntax error shows Pan/Tilt Status: Not supported: <raw> and isn't asked again until it reconnects.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on AVCoders.Camera:

Package Downloads
AVCoders.SignalR.Camera

SignalR hub and bridge for AV Coders cameras: power, preset recall and tracking mode broadcast to connected UIs.

AVCoders.Crestron.TouchPanel

Touch panel menu and UI helpers for Crestron panels: display, motor, AVoIP, sync, level, PDU and Q-SYS source menus, PIN entry, confirmation and status pages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2026.11.1 0 11/12/2026
2026.10.5 129 10/21/2026
2026.10.4 108 10/21/2026
2026.10.3 151 10/14/2026
2026.10.2 110 10/13/2026
2026.10.1 129 10/6/2026
2026.9.8 135 9/29/2026
2026.9.7 142 9/24/2026
2026.9.6 130 9/18/2026
2026.9.5 130 9/17/2026
2026.9.4 170 9/14/2026
2026.9.2 136 9/2/2026
2026.9.1 134 9/2/2026
2026.8.5 145 8/27/2026
2026.8.4 137 8/26/2026
2026.8.3 140 8/26/2026
2026.8.2 145 8/24/2026
2026.8.1 183 8/11/2026
2026.7.3 153 7/22/2026
2026.7.2 175 7/21/2026
Loading failed