onvif-go

API reference

294 entries across the client, the discovery package and the server package, generated from the source on every deploy. Client methods take a context.Context first.


Client

Create a client and discover the service endpoints.

DownloadFile

func (c *Client) DownloadFile(ctx context.Context, downloadURL string) ([]byte, error)

DownloadFile downloads a file from the given URL with authentication. Supports both Basic and Digest authentication (tries basic first, falls back to digest).

Endpoint

func (c *Client) Endpoint() string

Endpoint returns the device endpoint.

GetCredentials

func (c *Client) GetCredentials() (username, password string)

GetCredentials returns the current credentials.

Initialize

func (c *Client) Initialize(ctx context.Context) error

Initialize discovers and initializes service endpoints by fetching the device's capabilities. Services differ in how they behave before Initialize has succeeded: - PTZ and Imaging operations require it. Until it succeeds they return ErrNotInitialized, because the client has no way to know whether the device supports those services. Once it succeeds, a service the device did not report yields ErrServiceNotSupported instead. - Media and Events operations fall back to the device endpoint, which many cameras also serve those operations on, so they often work without Initialize.

NewClient

func NewClient(endpoint string, opts ...ClientOption) (*Client, error)

NewClient creates a new ONVIF client The endpoint can be provided in multiple formats: - Full URL: "http://192.168.1.100/onvif/device_service" - IP with port: "192.168.1.100:80" (http assumed, /onvif/device_service added) - IP only: "192.168.1.100" (http://IP:80/onvif/device_service used)

SetCredentials

func (c *Client) SetCredentials(username, password string)

SetCredentials updates the authentication credentials.

Device

Information, capabilities, hostname, DNS, NTP, network and users.

CreateUsers

func (c *Client) CreateUsers(ctx context.Context, users []*User) error

CreateUsers creates new user accounts.

DeleteUsers

func (c *Client) DeleteUsers(ctx context.Context, usernames []string) error

DeleteUsers deletes user accounts.

GetCapabilities

func (c *Client) GetCapabilities(ctx context.Context) (*Capabilities, error)

GetCapabilities retrieves device capabilities.

GetDNS

func (c *Client) GetDNS(ctx context.Context) (*DNSInformation, error)

GetDNS retrieves DNS configuration.

GetDeviceInformation

func (c *Client) GetDeviceInformation(ctx context.Context) (*DeviceInformation, error)

GetDeviceInformation retrieves device information.

GetDiscoveryMode

func (c *Client) GetDiscoveryMode(ctx context.Context) (DiscoveryMode, error)

GetDiscoveryMode gets the discovery mode of a device.

GetEndpointReference

func (c *Client) GetEndpointReference(ctx context.Context) (string, error)

GetEndpointReference gets the endpoint reference GUID.

GetHostname

func (c *Client) GetHostname(ctx context.Context) (*HostnameInformation, error)

GetHostname retrieves the device's hostname.

GetNTP

func (c *Client) GetNTP(ctx context.Context) (*NTPInformation, error)

GetNTP retrieves NTP configuration.

GetNetworkDefaultGateway

func (c *Client) GetNetworkDefaultGateway(ctx context.Context) (*NetworkGateway, error)

GetNetworkDefaultGateway gets the default gateway settings from a device.

GetNetworkInterfaces

func (c *Client) GetNetworkInterfaces(ctx context.Context) ([]*NetworkInterface, error)

GetNetworkInterfaces retrieves network interface configuration.

GetNetworkProtocols

func (c *Client) GetNetworkProtocols(ctx context.Context) ([]*NetworkProtocol, error)

GetNetworkProtocols gets defined network protocols from a device.

GetRemoteDiscoveryMode

func (c *Client) GetRemoteDiscoveryMode(ctx context.Context) (DiscoveryMode, error)

GetRemoteDiscoveryMode gets the remote discovery mode.

GetScopes

func (c *Client) GetScopes(ctx context.Context) ([]*Scope, error)

GetScopes retrieves configured scopes.

GetServiceCapabilities

func (c *Client) GetServiceCapabilities(ctx context.Context) (*DeviceServiceCapabilities, error)

GetServiceCapabilities returns the capabilities of the device service.

GetServices

func (c *Client) GetServices(ctx context.Context, includeCapability bool) ([]*Service, error)

GetServices returns information about services on the device.

GetSystemDateAndTime

func (c *Client) GetSystemDateAndTime(ctx context.Context) (interface{}, error)

GetSystemDateAndTime retrieves the device's system date and time. Deprecated: Use GetSystemDateAndTimeTyped, which exposes the response as a SystemDateTime instead of interface{}.

GetSystemDateAndTimeTyped

func (c *Client) GetSystemDateAndTimeTyped(ctx context.Context) (*SystemDateTime, error)

GetSystemDateAndTimeTyped retrieves the device's system date and time.

GetUsers

func (c *Client) GetUsers(ctx context.Context) ([]*User, error)

GetUsers retrieves user accounts.

SetDiscoveryMode

func (c *Client) SetDiscoveryMode(ctx context.Context, mode DiscoveryMode) error

SetDiscoveryMode sets the discovery mode of a device.

SetHostname

func (c *Client) SetHostname(ctx context.Context, name string) error

SetHostname sets the device's hostname.

SetNetworkDefaultGateway

func (c *Client) SetNetworkDefaultGateway(ctx context.Context, gateway *NetworkGateway) error

SetNetworkDefaultGateway sets the default gateway settings on a device.

SetNetworkProtocols

func (c *Client) SetNetworkProtocols(ctx context.Context, protocols []*NetworkProtocol) error

SetNetworkProtocols configures defined network protocols on a device.

SetRemoteDiscoveryMode

func (c *Client) SetRemoteDiscoveryMode(ctx context.Context, mode DiscoveryMode) error

SetRemoteDiscoveryMode sets the remote discovery mode.

SetUser

func (c *Client) SetUser(ctx context.Context, user *User) error

SetUser modifies an existing user account.

SystemReboot

func (c *Client) SystemReboot(ctx context.Context) (string, error)

SystemReboot reboots the device.

Device: additional

Geolocation, access policy and discovery addresses.

DeleteGeoLocation

func (c *Client) DeleteGeoLocation(ctx context.Context, location []LocationEntity) error

DeleteGeoLocation deletes geographic location information. ONVIF Specification: DeleteGeoLocation operation.

GetAccessPolicy

func (c *Client) GetAccessPolicy(ctx context.Context) (*AccessPolicy, error)

GetAccessPolicy retrieves access policy information. ONVIF Specification: GetAccessPolicy operation.

GetDPAddresses

func (c *Client) GetDPAddresses(ctx context.Context) ([]NetworkHost, error)

GetDPAddresses retrieves DP (Device Provisioning) addresses. ONVIF Specification: GetDPAddresses operation.

GetGeoLocation

func (c *Client) GetGeoLocation(ctx context.Context) ([]LocationEntity, error)

GetGeoLocation retrieves geographic location information. ONVIF Specification: GetGeoLocation operation.

GetWsdlURL

func (c *Client) GetWsdlURL(ctx context.Context) (string, error)

GetWsdlURL retrieves the WSDL URL (deprecated). ONVIF Specification: GetWsdlUrl operation.

SetAccessPolicy

func (c *Client) SetAccessPolicy(ctx context.Context, policy *AccessPolicy) error

SetAccessPolicy sets access policy information. ONVIF Specification: SetAccessPolicy operation.

SetDPAddresses

func (c *Client) SetDPAddresses(ctx context.Context, dpAddress []NetworkHost) error

SetDPAddresses sets DP (Device Provisioning) addresses. ONVIF Specification: SetDPAddresses operation.

SetGeoLocation

func (c *Client) SetGeoLocation(ctx context.Context, location []LocationEntity) error

SetGeoLocation sets geographic location information. ONVIF Specification: SetGeoLocation operation.

Device: extended

Further device configuration.

AddScopes

func (c *Client) AddScopes(ctx context.Context, scopeItems []string) error

AddScopes adds new configurable scope parameters to a device.

FixedGetSystemDateAndTime

func (c *Client) FixedGetSystemDateAndTime(ctx context.Context) (*SystemDateTime, error)

FixedGetSystemDateAndTime retrieves the device's system date and time with proper typing. Deprecated: Use GetSystemDateAndTimeTyped.

GetRelayOutputs

func (c *Client) GetRelayOutputs(ctx context.Context) ([]*RelayOutput, error)

GetRelayOutputs gets a list of all available relay outputs and their settings.

GetSystemBackup

func (c *Client) GetSystemBackup(ctx context.Context) ([]*BackupFile, error)

GetSystemBackup retrieves system backup configuration files from a device.

GetSystemLog

func (c *Client) GetSystemLog(ctx context.Context, logType SystemLogType) (*SystemLog, error)

GetSystemLog gets a system log from the device.

GetSystemSupportInformation

func (c *Client) GetSystemSupportInformation(ctx context.Context) (*SupportInformation, error)

GetSystemSupportInformation gets arbitrary device diagnostics information.

GetSystemUris

func (c *Client) GetSystemUris(
	ctx context.Context,
) (uriList *SystemLogURIList, systemBackupURI, systemLogURI string, err error)

GetSystemUris retrieves URIs from which system information may be downloaded.

RemoveScopes

func (c *Client) RemoveScopes(ctx context.Context, scopeItems []string) ([]string, error)

RemoveScopes deletes scope-configurable scope parameters from a device.

RestoreSystem

func (c *Client) RestoreSystem(ctx context.Context, backupFiles []*BackupFile) error

RestoreSystem restores the system backup configuration files.

SendAuxiliaryCommand

func (c *Client) SendAuxiliaryCommand(ctx context.Context, command AuxiliaryData) (AuxiliaryData, error)

SendAuxiliaryCommand sends an auxiliary command to the device.

SetDNS

func (c *Client) SetDNS(ctx context.Context, fromDHCP bool, searchDomain []string, dnsManual []IPAddress) error

SetDNS sets the DNS settings on a device.

SetHostnameFromDHCP

func (c *Client) SetHostnameFromDHCP(ctx context.Context, fromDHCP bool) (bool, error)

SetHostnameFromDHCP controls whether the hostname is set manually or retrieved via DHCP.

SetNTP

func (c *Client) SetNTP(ctx context.Context, fromDHCP bool, ntpManual []NetworkHost) error

SetNTP sets the NTP settings on a device.

SetRelayOutputSettings

func (c *Client) SetRelayOutputSettings(ctx context.Context, token string, settings *RelayOutputSettings) error

SetRelayOutputSettings sets the settings of a relay output.

SetRelayOutputState

func (c *Client) SetRelayOutputState(ctx context.Context, token string, state RelayLogicalState) error

SetRelayOutputState sets the state of a relay output.

SetScopes

func (c *Client) SetScopes(ctx context.Context, scopes []string) error

SetScopes sets the scope parameters of a device.

SetSystemDateAndTime

func (c *Client) SetSystemDateAndTime(ctx context.Context, dateTime *SystemDateTime) error

SetSystemDateAndTime sets the device system date and time.

SetSystemFactoryDefault

func (c *Client) SetSystemFactoryDefault(ctx context.Context, factoryDefault FactoryDefaultType) error

SetSystemFactoryDefault reloads the parameters on the device to their factory default values.

StartFirmwareUpgrade

func (c *Client) StartFirmwareUpgrade(
	ctx context.Context,
) (uploadURI, uploadDelay, expectedDownTime string, err error)

StartFirmwareUpgrade initiates a firmware upgrade using the HTTP POST mechanism.

StartSystemRestore

func (c *Client) StartSystemRestore(ctx context.Context) (uploadURI, expectedDownTime string, err error)

StartSystemRestore initiates a system restore from backed up configuration data.

Device: security

IP filters, password policy and authentication settings.

AddIPAddressFilter

func (c *Client) AddIPAddressFilter(ctx context.Context, filter *IPAddressFilter) error

AddIPAddressFilter adds an IP filter address to a device.

GetAuthFailureWarningConfiguration

func (c *Client) GetAuthFailureWarningConfiguration(ctx context.Context) (*AuthFailureWarningConfiguration, error)

GetAuthFailureWarningConfiguration retrieves the current authentication failure warning configuration.

GetDynamicDNS

func (c *Client) GetDynamicDNS(ctx context.Context) (*DynamicDNSInformation, error)

GetDynamicDNS gets the dynamic DNS settings from a device.

GetIPAddressFilter

func (c *Client) GetIPAddressFilter(ctx context.Context) (*IPAddressFilter, error)

GetIPAddressFilter gets the IP address filter settings from a device.

GetPasswordComplexityConfiguration

func (c *Client) GetPasswordComplexityConfiguration(ctx context.Context) (*PasswordComplexityConfiguration, error)

GetPasswordComplexityConfiguration retrieves the current password complexity configuration settings.

GetPasswordHistoryConfiguration

func (c *Client) GetPasswordHistoryConfiguration(ctx context.Context) (*PasswordHistoryConfiguration, error)

GetPasswordHistoryConfiguration retrieves the current password history configuration settings.

GetRemoteUser

func (c *Client) GetRemoteUser(ctx context.Context) (*RemoteUser, error)

GetRemoteUser returns the configured remote user.

GetZeroConfiguration

func (c *Client) GetZeroConfiguration(ctx context.Context) (*NetworkZeroConfiguration, error)

GetZeroConfiguration gets the zero-configuration from a device.

RemoveIPAddressFilter

func (c *Client) RemoveIPAddressFilter(ctx context.Context, filter *IPAddressFilter) error

RemoveIPAddressFilter deletes an IP filter address from a device.

SetAuthFailureWarningConfiguration

func (c *Client) SetAuthFailureWarningConfiguration(
	ctx context.Context,
	config *AuthFailureWarningConfiguration,
) error

SetAuthFailureWarningConfiguration allows setting of the authentication failure warning configuration.

SetDynamicDNS

func (c *Client) SetDynamicDNS(ctx context.Context, dnsType DynamicDNSType, name string) error

SetDynamicDNS sets the dynamic DNS settings on a device.

SetIPAddressFilter

func (c *Client) SetIPAddressFilter(ctx context.Context, filter *IPAddressFilter) error

SetIPAddressFilter sets the IP address filter settings on a device.

SetPasswordComplexityConfiguration

func (c *Client) SetPasswordComplexityConfiguration(
	ctx context.Context,
	config *PasswordComplexityConfiguration,
) error

SetPasswordComplexityConfiguration allows setting of the password complexity configuration.

SetPasswordHistoryConfiguration

func (c *Client) SetPasswordHistoryConfiguration(ctx context.Context, config *PasswordHistoryConfiguration) error

SetPasswordHistoryConfiguration allows setting of the password history configuration.

SetRemoteUser

func (c *Client) SetRemoteUser(ctx context.Context, remoteUser *RemoteUser) error

SetRemoteUser sets the remote user.

SetZeroConfiguration

func (c *Client) SetZeroConfiguration(ctx context.Context, interfaceToken string, enabled bool) error

SetZeroConfiguration sets the zero-configuration.

Certificates

Install, create and manage device certificates.

CreateCertificate

func (c *Client) CreateCertificate(
	ctx context.Context,
	certificateID, subject, validNotBefore, validNotAfter string,
) (*Certificate, error)

CreateCertificate creates a certificate. ONVIF Specification: CreateCertificate operation.

DeleteCertificates

func (c *Client) DeleteCertificates(ctx context.Context, certificateIDs []string) error

DeleteCertificates deletes certificates. ONVIF Specification: DeleteCertificates operation.

GetCACertificates

func (c *Client) GetCACertificates(ctx context.Context) ([]*Certificate, error)

GetCACertificates retrieves CA certificates. ONVIF Specification: GetCACertificates operation.

GetCertificateInformation

func (c *Client) GetCertificateInformation(ctx context.Context, certificateID string) (*CertificateInformation, error)

GetCertificateInformation retrieves certificate information. ONVIF Specification: GetCertificateInformation operation.

GetCertificates

func (c *Client) GetCertificates(ctx context.Context) ([]*Certificate, error)

GetCertificates retrieves certificates. ONVIF Specification: GetCertificates operation.

GetCertificatesStatus

func (c *Client) GetCertificatesStatus(ctx context.Context) ([]*CertificateStatus, error)

GetCertificatesStatus retrieves certificate status. ONVIF Specification: GetCertificatesStatus operation.

GetClientCertificateMode

func (c *Client) GetClientCertificateMode(ctx context.Context) (bool, error)

GetClientCertificateMode retrieves the client certificate mode. ONVIF Specification: GetClientCertificateMode operation.

GetPkcs10Request

func (c *Client) GetPkcs10Request(
	ctx context.Context,
	certificateID, subject string,
	attributes *BinaryData,
) (*BinaryData, error)

GetPkcs10Request retrieves a PKCS10 certificate request. ONVIF Specification: GetPkcs10Request operation.

LoadCACertificates

func (c *Client) LoadCACertificates(ctx context.Context, certificates []*Certificate) error

LoadCACertificates loads CA certificates. ONVIF Specification: LoadCACertificates operation.

LoadCertificateWithPrivateKey

func (c *Client) LoadCertificateWithPrivateKey(
	ctx context.Context,
	certificates []*Certificate,
	privateKey []*BinaryData,
	certificateIDs []string,
) error

LoadCertificateWithPrivateKey loads a certificate with its private key. ONVIF Specification: LoadCertificateWithPrivateKey operation.

LoadCertificates

func (c *Client) LoadCertificates(ctx context.Context, certificates []*Certificate) error

LoadCertificates loads certificates. ONVIF Specification: LoadCertificates operation.

SetCertificatesStatus

func (c *Client) SetCertificatesStatus(ctx context.Context, statuses []*CertificateStatus) error

SetCertificatesStatus sets certificate status. ONVIF Specification: SetCertificatesStatus operation.

SetClientCertificateMode

func (c *Client) SetClientCertificateMode(ctx context.Context, enabled bool) error

SetClientCertificateMode sets the client certificate mode. ONVIF Specification: SetClientCertificateMode operation.

Wi-Fi and 802.1X

Wireless status, scans and 802.1X configuration.

CreateDot1XConfiguration

func (c *Client) CreateDot1XConfiguration(ctx context.Context, config *Dot1XConfiguration) error

CreateDot1XConfiguration creates an 802.1X configuration. ONVIF Specification: CreateDot1XConfiguration operation.

DeleteDot1XConfiguration

func (c *Client) DeleteDot1XConfiguration(ctx context.Context, configToken string) error

DeleteDot1XConfiguration deletes an 802.1X configuration. ONVIF Specification: DeleteDot1XConfiguration operation.

GetDot11Capabilities

func (c *Client) GetDot11Capabilities(ctx context.Context) (*Dot11Capabilities, error)

GetDot11Capabilities retrieves 802.11 capabilities. ONVIF Specification: GetDot11Capabilities operation.

GetDot11Status

func (c *Client) GetDot11Status(ctx context.Context, interfaceToken string) (*Dot11Status, error)

GetDot11Status retrieves 802.11 status. ONVIF Specification: GetDot11Status operation.

GetDot1XConfiguration

func (c *Client) GetDot1XConfiguration(ctx context.Context, configToken string) (*Dot1XConfiguration, error)

GetDot1XConfiguration retrieves an 802.1X configuration. ONVIF Specification: GetDot1XConfiguration operation.

GetDot1XConfigurations

func (c *Client) GetDot1XConfigurations(ctx context.Context) ([]*Dot1XConfiguration, error)

GetDot1XConfigurations retrieves all 802.1X configurations. ONVIF Specification: GetDot1XConfigurations operation.

ScanAvailableDot11Networks

func (c *Client) ScanAvailableDot11Networks(
	ctx context.Context,
	interfaceToken string,
) ([]*Dot11AvailableNetworks, error)

ScanAvailableDot11Networks scans for available 802.11 networks. ONVIF Specification: ScanAvailableDot11Networks operation.

SetDot1XConfiguration

func (c *Client) SetDot1XConfiguration(ctx context.Context, config *Dot1XConfiguration) error

SetDot1XConfiguration sets an 802.1X configuration. ONVIF Specification: SetDot1XConfiguration operation.

Storage

Storage configurations.

CreateStorageConfiguration

func (c *Client) CreateStorageConfiguration(ctx context.Context, data *StorageConfigurationData) (string, error)

CreateStorageConfiguration creates a storage configuration. The device assigns the token and returns it; the request must not carry one. ONVIF Specification: CreateStorageConfiguration operation.

DeleteStorageConfiguration

func (c *Client) DeleteStorageConfiguration(ctx context.Context, token string) error

DeleteStorageConfiguration deletes a storage configuration. ONVIF Specification: DeleteStorageConfiguration operation.

GetStorageConfiguration

func (c *Client) GetStorageConfiguration(ctx context.Context, token string) (*StorageConfiguration, error)

GetStorageConfiguration retrieves a storage configuration. ONVIF Specification: GetStorageConfiguration operation.

GetStorageConfigurations

func (c *Client) GetStorageConfigurations(ctx context.Context) ([]*StorageConfiguration, error)

GetStorageConfigurations retrieves storage configurations. ONVIF Specification: GetStorageConfigurations operation.

SetHashingAlgorithm

func (c *Client) SetHashingAlgorithm(ctx context.Context, algorithm string) error

SetHashingAlgorithm sets the hashing algorithm. ONVIF Specification: SetHashingAlgorithm operation.

SetStorageConfiguration

func (c *Client) SetStorageConfiguration(ctx context.Context, config *StorageConfiguration) error

SetStorageConfiguration sets a storage configuration. ONVIF Specification: SetStorageConfiguration operation.

Media

Profiles, stream and snapshot URIs, and encoder, source and metadata configuration.

AddAudioDecoderConfiguration

func (c *Client) AddAudioDecoderConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddAudioDecoderConfiguration adds an audio decoder configuration to a profile.

AddAudioEncoderConfiguration

func (c *Client) AddAudioEncoderConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddAudioEncoderConfiguration adds audio encoder configuration to a profile.

AddAudioOutputConfiguration

func (c *Client) AddAudioOutputConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddAudioOutputConfiguration adds an audio output configuration to a profile.

AddAudioSourceConfiguration

func (c *Client) AddAudioSourceConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddAudioSourceConfiguration adds audio source configuration to a profile.

AddMetadataConfiguration

func (c *Client) AddMetadataConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddMetadataConfiguration adds metadata configuration to a profile.

AddPTZConfiguration

func (c *Client) AddPTZConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddPTZConfiguration adds PTZ configuration to a profile.

AddVideoAnalyticsConfiguration

func (c *Client) AddVideoAnalyticsConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddVideoAnalyticsConfiguration adds a video analytics configuration to a profile.

AddVideoEncoderConfiguration

func (c *Client) AddVideoEncoderConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddVideoEncoderConfiguration adds video encoder configuration to a profile.

AddVideoSourceConfiguration

func (c *Client) AddVideoSourceConfiguration(ctx context.Context, profileToken, configurationToken string) error

AddVideoSourceConfiguration adds video source configuration to a profile.

CreateOSD

func (c *Client) CreateOSD(
	ctx context.Context,
	videoSourceConfigurationToken string,
	osd *OSDConfiguration,
) (*OSDConfiguration, error)

CreateOSD creates a new OSD configuration.

CreateProfile

func (c *Client) CreateProfile(ctx context.Context, name, token string) (*Profile, error)

CreateProfile creates a new media profile.

DeleteOSD

func (c *Client) DeleteOSD(ctx context.Context, osdToken string) error

DeleteOSD deletes an OSD configuration.

DeleteProfile

func (c *Client) DeleteProfile(ctx context.Context, profileToken string) error

DeleteProfile deletes a media profile.

GetAudioDecoderConfiguration

func (c *Client) GetAudioDecoderConfiguration(
	ctx context.Context,
	configurationToken string,
) (*AudioDecoderConfiguration, error)

GetAudioDecoderConfiguration retrieves a specific audio decoder configuration.

GetAudioDecoderConfigurationOptions

func (c *Client) GetAudioDecoderConfigurationOptions(
	ctx context.Context,
	configurationToken string,
) (*AudioDecoderConfigurationOptions, error)

GetAudioDecoderConfigurationOptions retrieves available options for audio decoder configuration.

GetAudioDecoderConfigurations

func (c *Client) GetAudioDecoderConfigurations(ctx context.Context) ([]*AudioDecoderConfiguration, error)

GetAudioDecoderConfigurations retrieves all audio decoder configurations.

GetAudioEncoderConfiguration

func (c *Client) GetAudioEncoderConfiguration(
	ctx context.Context,
	configurationToken string,
) (*AudioEncoderConfiguration, error)

GetAudioEncoderConfiguration retrieves audio encoder configuration.

GetAudioEncoderConfigurationOptions

func (c *Client) GetAudioEncoderConfigurationOptions(
	ctx context.Context,
	configurationToken, profileToken string,
) (*AudioEncoderConfigurationOptions, error)

GetAudioEncoderConfigurationOptions retrieves available options for audio encoder configuration.

GetAudioEncoderConfigurations

func (c *Client) GetAudioEncoderConfigurations(ctx context.Context) ([]*AudioEncoderConfiguration, error)

GetAudioEncoderConfigurations retrieves all audio encoder configurations.

GetAudioOutputConfiguration

func (c *Client) GetAudioOutputConfiguration(ctx context.Context, configurationToken string) (*AudioOutputConfiguration, error)

GetAudioOutputConfiguration retrieves audio output configuration.

GetAudioOutputConfigurationOptions

func (c *Client) GetAudioOutputConfigurationOptions(
	ctx context.Context,
	configurationToken string,
) (*AudioOutputConfigurationOptions, error)

GetAudioOutputConfigurationOptions retrieves available options for audio output configuration.

GetAudioOutputConfigurations

func (c *Client) GetAudioOutputConfigurations(ctx context.Context) ([]*AudioOutputConfiguration, error)

GetAudioOutputConfigurations retrieves all audio output configurations.

GetAudioOutputs

func (c *Client) GetAudioOutputs(ctx context.Context) ([]*AudioOutput, error)

GetAudioOutputs retrieves all audio outputs.

GetAudioSourceConfiguration

func (c *Client) GetAudioSourceConfiguration(ctx context.Context, configurationToken string) (*AudioSourceConfiguration, error)

GetAudioSourceConfiguration retrieves a specific audio source configuration.

GetAudioSourceConfigurationOptions

func (c *Client) GetAudioSourceConfigurationOptions(
	ctx context.Context,
	configurationToken, profileToken string,
) (*AudioSourceConfigurationOptions, error)

GetAudioSourceConfigurationOptions retrieves available options for audio source configuration.

GetAudioSourceConfigurations

func (c *Client) GetAudioSourceConfigurations(ctx context.Context) ([]*AudioSourceConfiguration, error)

GetAudioSourceConfigurations retrieves all audio source configurations.

GetAudioSources

func (c *Client) GetAudioSources(ctx context.Context) ([]*AudioSource, error)

GetAudioSources retrieves all audio sources.

GetCompatibleAudioDecoderConfigurations

func (c *Client) GetCompatibleAudioDecoderConfigurations(ctx context.Context, profileToken string) ([]*AudioDecoderConfiguration, error)

GetCompatibleAudioDecoderConfigurations retrieves compatible audio decoder configurations for a profile.

GetCompatibleAudioEncoderConfigurations

func (c *Client) GetCompatibleAudioEncoderConfigurations(
	ctx context.Context,
	profileToken string,
) ([]*AudioEncoderConfiguration, error)

GetCompatibleAudioEncoderConfigurations retrieves compatible audio encoder configurations for a profile.

GetCompatibleAudioOutputConfigurations

func (c *Client) GetCompatibleAudioOutputConfigurations(ctx context.Context, profileToken string) ([]*AudioOutputConfiguration, error)

GetCompatibleAudioOutputConfigurations retrieves compatible audio output configurations for a profile.

GetCompatibleAudioSourceConfigurations

func (c *Client) GetCompatibleAudioSourceConfigurations(ctx context.Context, profileToken string) ([]*AudioSourceConfiguration, error)

GetCompatibleAudioSourceConfigurations retrieves compatible audio source configurations for a profile.

GetCompatibleMetadataConfigurations

func (c *Client) GetCompatibleMetadataConfigurations(ctx context.Context, profileToken string) ([]*MetadataConfiguration, error)

GetCompatibleMetadataConfigurations retrieves compatible metadata configurations for a profile.

GetCompatiblePTZConfigurations

func (c *Client) GetCompatiblePTZConfigurations(ctx context.Context, profileToken string) ([]*PTZConfiguration, error)

GetCompatiblePTZConfigurations retrieves compatible PTZ configurations for a profile.

GetCompatibleVideoAnalyticsConfigurations

func (c *Client) GetCompatibleVideoAnalyticsConfigurations(ctx context.Context, profileToken string) ([]*VideoAnalyticsConfiguration, error)

GetCompatibleVideoAnalyticsConfigurations retrieves compatible video analytics configurations for a profile.

GetCompatibleVideoEncoderConfigurations

func (c *Client) GetCompatibleVideoEncoderConfigurations(
	ctx context.Context,
	profileToken string,
) ([]*VideoEncoderConfiguration, error)

GetCompatibleVideoEncoderConfigurations retrieves compatible video encoder configurations for a profile.

GetCompatibleVideoSourceConfigurations

func (c *Client) GetCompatibleVideoSourceConfigurations(
	ctx context.Context,
	profileToken string,
) ([]*VideoSourceConfiguration, error)

GetCompatibleVideoSourceConfigurations retrieves compatible video source configurations for a profile.

GetGuaranteedNumberOfVideoEncoderInstances

func (c *Client) GetGuaranteedNumberOfVideoEncoderInstances(
	ctx context.Context,
	configurationToken string,
) (*GuaranteedNumberOfVideoEncoderInstances, error)

GetGuaranteedNumberOfVideoEncoderInstances retrieves the guaranteed number of video encoder instances.

GetMediaServiceCapabilities

func (c *Client) GetMediaServiceCapabilities(ctx context.Context) (*MediaServiceCapabilities, error)

GetMediaServiceCapabilities retrieves media service capabilities.

GetMetadataConfiguration

func (c *Client) GetMetadataConfiguration(
	ctx context.Context,
	configurationToken string,
) (*MetadataConfiguration, error)

GetMetadataConfiguration retrieves metadata configuration.

GetMetadataConfigurationOptions

func (c *Client) GetMetadataConfigurationOptions(
	ctx context.Context,
	configurationToken, profileToken string,
) (*MetadataConfigurationOptions, error)

GetMetadataConfigurationOptions retrieves available options for metadata configuration.

GetMetadataConfigurations

func (c *Client) GetMetadataConfigurations(ctx context.Context) ([]*MetadataConfiguration, error)

GetMetadataConfigurations retrieves all metadata configurations.

GetOSD

func (c *Client) GetOSD(ctx context.Context, osdToken string) (*OSDConfiguration, error)

GetOSD retrieves a specific OSD configuration.

GetOSDOptions

func (c *Client) GetOSDOptions(ctx context.Context, configurationToken string) (*OSDConfigurationOptions, error)

GetOSDOptions retrieves available options for OSD configuration.

GetOSDs

func (c *Client) GetOSDs(ctx context.Context, configurationToken string) ([]*OSDConfiguration, error)

GetOSDs retrieves all OSD configurations.

GetProfile

func (c *Client) GetProfile(ctx context.Context, profileToken string) (*Profile, error)

GetProfile retrieves a specific media profile.

GetProfiles

func (c *Client) GetProfiles(ctx context.Context) ([]*Profile, error)

GetProfiles retrieves all media profiles.

GetSnapshotURI

func (c *Client) GetSnapshotURI(ctx context.Context, profileToken string) (*MediaURI, error)

GetSnapshotURI retrieves the snapshot URI for a profile.

GetStreamURI

func (c *Client) GetStreamURI(ctx context.Context, profileToken string) (*MediaURI, error)

GetStreamURI retrieves the stream URI for a profile.

GetVideoAnalyticsConfiguration

func (c *Client) GetVideoAnalyticsConfiguration(
	ctx context.Context,
	configurationToken string,
) (*VideoAnalyticsConfiguration, error)

GetVideoAnalyticsConfiguration retrieves a specific video analytics configuration.

GetVideoAnalyticsConfigurationOptions

func (c *Client) GetVideoAnalyticsConfigurationOptions(
	ctx context.Context,
	configurationToken, profileToken string,
) (*VideoAnalyticsConfigurationOptions, error)

GetVideoAnalyticsConfigurationOptions retrieves available options for video analytics configuration.

GetVideoAnalyticsConfigurations

func (c *Client) GetVideoAnalyticsConfigurations(ctx context.Context) ([]*VideoAnalyticsConfiguration, error)

GetVideoAnalyticsConfigurations retrieves all video analytics configurations.

GetVideoEncoderConfiguration

func (c *Client) GetVideoEncoderConfiguration(
	ctx context.Context,
	configurationToken string,
) (*VideoEncoderConfiguration, error)

GetVideoEncoderConfiguration retrieves video encoder configuration.

GetVideoEncoderConfigurationOptions

func (c *Client) GetVideoEncoderConfigurationOptions(
	ctx context.Context, configurationToken string,
) (*VideoEncoderConfigurationOptions, error)

GetVideoEncoderConfigurationOptions retrieves available options for video encoder configuration.

GetVideoEncoderConfigurations

func (c *Client) GetVideoEncoderConfigurations(ctx context.Context) ([]*VideoEncoderConfiguration, error)

GetVideoEncoderConfigurations retrieves all video encoder configurations.

GetVideoSourceConfiguration

func (c *Client) GetVideoSourceConfiguration(
	ctx context.Context,
	configurationToken string,
) (*VideoSourceConfiguration, error)

GetVideoSourceConfiguration retrieves a specific video source configuration.

GetVideoSourceConfigurationOptions

func (c *Client) GetVideoSourceConfigurationOptions(
	ctx context.Context,
	configurationToken, profileToken string,
) (*VideoSourceConfigurationOptions, error)

GetVideoSourceConfigurationOptions retrieves available options for video source configuration.

GetVideoSourceConfigurations

func (c *Client) GetVideoSourceConfigurations(ctx context.Context) ([]*VideoSourceConfiguration, error)

GetVideoSourceConfigurations retrieves all video source configurations.

GetVideoSourceModes

func (c *Client) GetVideoSourceModes(ctx context.Context, videoSourceToken string) ([]*VideoSourceMode, error)

GetVideoSourceModes retrieves available video source modes.

GetVideoSources

func (c *Client) GetVideoSources(ctx context.Context) ([]*VideoSource, error)

GetVideoSources retrieves all video sources.

RemoveAudioDecoderConfiguration

func (c *Client) RemoveAudioDecoderConfiguration(ctx context.Context, profileToken string) error

RemoveAudioDecoderConfiguration removes an audio decoder configuration from a profile.

RemoveAudioEncoderConfiguration

func (c *Client) RemoveAudioEncoderConfiguration(ctx context.Context, profileToken string) error

RemoveAudioEncoderConfiguration removes audio encoder configuration from a profile.

RemoveAudioOutputConfiguration

func (c *Client) RemoveAudioOutputConfiguration(ctx context.Context, profileToken string) error

RemoveAudioOutputConfiguration removes an audio output configuration from a profile.

RemoveAudioSourceConfiguration

func (c *Client) RemoveAudioSourceConfiguration(ctx context.Context, profileToken string) error

RemoveAudioSourceConfiguration removes audio source configuration from a profile.

RemoveMetadataConfiguration

func (c *Client) RemoveMetadataConfiguration(ctx context.Context, profileToken string) error

RemoveMetadataConfiguration removes metadata configuration from a profile.

RemovePTZConfiguration

func (c *Client) RemovePTZConfiguration(ctx context.Context, profileToken string) error

RemovePTZConfiguration removes PTZ configuration from a profile.

RemoveVideoAnalyticsConfiguration

func (c *Client) RemoveVideoAnalyticsConfiguration(ctx context.Context, profileToken string) error

RemoveVideoAnalyticsConfiguration removes a video analytics configuration from a profile.

RemoveVideoEncoderConfiguration

func (c *Client) RemoveVideoEncoderConfiguration(ctx context.Context, profileToken string) error

RemoveVideoEncoderConfiguration removes video encoder configuration from a profile.

RemoveVideoSourceConfiguration

func (c *Client) RemoveVideoSourceConfiguration(ctx context.Context, profileToken string) error

RemoveVideoSourceConfiguration removes video source configuration from a profile.

SetAudioDecoderConfiguration

func (c *Client) SetAudioDecoderConfiguration(ctx context.Context, config *AudioDecoderConfiguration, forcePersistence bool) error

SetAudioDecoderConfiguration sets audio decoder configuration.

SetAudioEncoderConfiguration

func (c *Client) SetAudioEncoderConfiguration(
	ctx context.Context,
	config *AudioEncoderConfiguration,
	forcePersistence bool,
) error

SetAudioEncoderConfiguration sets audio encoder configuration.

SetAudioOutputConfiguration

func (c *Client) SetAudioOutputConfiguration(ctx context.Context, config *AudioOutputConfiguration, forcePersistence bool) error

SetAudioOutputConfiguration sets audio output configuration.

SetAudioSourceConfiguration

func (c *Client) SetAudioSourceConfiguration(ctx context.Context, config *AudioSourceConfiguration, forcePersistence bool) error

SetAudioSourceConfiguration sets audio source configuration.

SetMetadataConfiguration

func (c *Client) SetMetadataConfiguration(
	ctx context.Context,
	config *MetadataConfiguration,
	forcePersistence bool,
) error

SetMetadataConfiguration sets metadata configuration.

SetOSD

func (c *Client) SetOSD(ctx context.Context, osd *OSDConfiguration) error

SetOSD sets OSD configuration.

SetProfile

func (c *Client) SetProfile(ctx context.Context, profile *Profile) error

SetProfile sets profile configuration.

SetSynchronizationPoint

func (c *Client) SetSynchronizationPoint(ctx context.Context, profileToken string) error

SetSynchronizationPoint sets a synchronization point for the stream.

SetVideoAnalyticsConfiguration

func (c *Client) SetVideoAnalyticsConfiguration(ctx context.Context, config *VideoAnalyticsConfiguration, forcePersistence bool) error

SetVideoAnalyticsConfiguration sets video analytics configuration.

SetVideoEncoderConfiguration

func (c *Client) SetVideoEncoderConfiguration(
	ctx context.Context,
	config *VideoEncoderConfiguration,
	forcePersistence bool,
) error

SetVideoEncoderConfiguration sets video encoder configuration.

SetVideoSourceConfiguration

func (c *Client) SetVideoSourceConfiguration(
	ctx context.Context,
	config *VideoSourceConfiguration,
	forcePersistence bool,
) error

SetVideoSourceConfiguration sets video source configuration.

SetVideoSourceMode

func (c *Client) SetVideoSourceMode(ctx context.Context, videoSourceToken, modeToken string) error

SetVideoSourceMode sets the video source mode.

StartMulticastStreaming

func (c *Client) StartMulticastStreaming(ctx context.Context, profileToken string) error

StartMulticastStreaming starts multicast streaming.

StopMulticastStreaming

func (c *Client) StopMulticastStreaming(ctx context.Context, profileToken string) error

StopMulticastStreaming stops multicast streaming.

PTZ

Pan, tilt and zoom movement, presets and status.

AbsoluteMove

func (c *Client) AbsoluteMove(ctx context.Context, profileToken string, position *PTZVector, speed *PTZSpeed) error

AbsoluteMove moves PTZ to an absolute position.

ContinuousMove

func (c *Client) ContinuousMove(ctx context.Context, profileToken string, velocity *PTZSpeed, timeout *string) error

ContinuousMove starts continuous PTZ movement.

GetConfiguration

func (c *Client) GetConfiguration(ctx context.Context, configurationToken string) (*PTZConfiguration, error)

GetConfiguration retrieves PTZ configuration.

GetConfigurations

func (c *Client) GetConfigurations(ctx context.Context) ([]*PTZConfiguration, error)

GetConfigurations retrieves all PTZ configurations.

GetPresets

func (c *Client) GetPresets(ctx context.Context, profileToken string) ([]*PTZPreset, error)

GetPresets retrieves PTZ presets.

GetStatus

func (c *Client) GetStatus(ctx context.Context, profileToken string) (*PTZStatus, error)

GetStatus retrieves PTZ status.

GotoHomePosition

func (c *Client) GotoHomePosition(ctx context.Context, profileToken string, speed *PTZSpeed) error

GotoHomePosition moves PTZ to home position.

GotoPreset

func (c *Client) GotoPreset(ctx context.Context, profileToken, presetToken string, speed *PTZSpeed) error

GotoPreset moves PTZ to a preset position.

RelativeMove

func (c *Client) RelativeMove(ctx context.Context, profileToken string, translation *PTZVector, speed *PTZSpeed) error

RelativeMove moves PTZ relative to current position.

RemovePreset

func (c *Client) RemovePreset(ctx context.Context, profileToken, presetToken string) error

RemovePreset removes a preset.

SetHomePosition

func (c *Client) SetHomePosition(ctx context.Context, profileToken string) error

SetHomePosition sets the current position as home position.

SetPreset

func (c *Client) SetPreset(ctx context.Context, profileToken, presetName, presetToken string) (string, error)

SetPreset sets a preset position.

Stop

func (c *Client) Stop(ctx context.Context, profileToken string, panTilt, zoom bool) error

Stop stops PTZ movement.

Imaging

Image settings and focus control.

GetImagingSettings

func (c *Client) GetImagingSettings(ctx context.Context, videoSourceToken string) (*ImagingSettings, error)

GetImagingSettings retrieves imaging settings for a video source.

GetImagingStatus

func (c *Client) GetImagingStatus(ctx context.Context, videoSourceToken string) (*ImagingStatus, error)

GetImagingStatus retrieves imaging status.

GetMoveOptions

func (c *Client) GetMoveOptions(ctx context.Context, videoSourceToken string) (*MoveOptions, error)

GetMoveOptions retrieves imaging move options for focus.

GetOptions

func (c *Client) GetOptions(ctx context.Context, videoSourceToken string) (*ImagingOptions, error)

GetOptions retrieves imaging options for a video source.

Move

func (c *Client) Move(ctx context.Context, videoSourceToken string, focus *FocusMove) error

Move performs a focus move operation.

SetImagingSettings

func (c *Client) SetImagingSettings(
	ctx context.Context, videoSourceToken string, settings *ImagingSettings, forcePersistence bool,
) error

SetImagingSettings sets imaging settings for a video source.

StopFocus

func (c *Client) StopFocus(ctx context.Context, videoSourceToken string) error

StopFocus stops focus movement.

Events

Subscriptions and pull points.

AddEventBroker

func (c *Client) AddEventBroker(ctx context.Context, config *EventBrokerConfig) error

AddEventBroker adds an event broker configuration.

CreatePullPointSubscription

func (c *Client) CreatePullPointSubscription(
	ctx context.Context,
	filter string,
	initialTerminationTime *time.Duration,
	subscriptionPolicy string,
) (*PullPointSubscription, error)

CreatePullPointSubscription creates a new pull point subscription.

DeleteEventBroker

func (c *Client) DeleteEventBroker(ctx context.Context, address string) error

DeleteEventBroker deletes an event broker configuration.

GetEventBrokers

func (c *Client) GetEventBrokers(ctx context.Context) ([]*EventBrokerConfig, error)

GetEventBrokers retrieves all event broker configurations.

GetEventProperties

func (c *Client) GetEventProperties(ctx context.Context) (*EventProperties, error)

GetEventProperties retrieves the event properties of the device.

GetEventServiceCapabilities

func (c *Client) GetEventServiceCapabilities(ctx context.Context) (*EventServiceCapabilities, error)

GetEventServiceCapabilities retrieves the capabilities of the event service.

PullMessages

func (c *Client) PullMessages(
	ctx context.Context,
	subscriptionReference string,
	timeout time.Duration,
	messageLimit int,
) ([]NotificationMessage, error)

PullMessages pulls notification messages from a pull point subscription.

RenewSubscription

func (c *Client) RenewSubscription(
	ctx context.Context,
	subscriptionReference string,
	terminationTime time.Duration,
) (time.Time, time.Time, error)

RenewSubscription renews a subscription with a new termination time.

Seek

func (c *Client) Seek(ctx context.Context, subscriptionReference string, utcTime time.Time, reverse bool) error

Seek seeks to a specific position in the event stream.

SetEventEndpoint

func (c *Client) SetEventEndpoint(endpoint string)

SetEventEndpoint sets the event service endpoint.

SetEventSynchronizationPoint

func (c *Client) SetEventSynchronizationPoint(ctx context.Context, subscriptionReference string) error

SetEventSynchronizationPoint instructs the device to send a synchronization point for events.

Unsubscribe

func (c *Client) Unsubscribe(ctx context.Context, subscriptionReference string) error

Unsubscribe terminates a subscription.

Device I/O

Relays, digital inputs and video outputs.

GetDeviceIOServiceCapabilities

func (c *Client) GetDeviceIOServiceCapabilities(ctx context.Context) (*DeviceIOServiceCapabilities, error)

GetDeviceIOServiceCapabilities retrieves the capabilities of the device IO service.

GetDigitalInputConfigurationOptions

func (c *Client) GetDigitalInputConfigurationOptions(ctx context.Context, token string) (*DigitalInputConfigurationOptions, error)

GetDigitalInputConfigurationOptions retrieves digital input configuration options.

GetDigitalInputs

func (c *Client) GetDigitalInputs(ctx context.Context) ([]*DigitalInput, error)

GetDigitalInputs retrieves all digital inputs.

GetRelayOutputOptions

func (c *Client) GetRelayOutputOptions(ctx context.Context, relayOutputToken string) (*RelayOutputOptions, error)

GetRelayOutputOptions retrieves relay output options.

GetSerialPortConfiguration

func (c *Client) GetSerialPortConfiguration(ctx context.Context, serialPortToken string) (*SerialPortConfiguration, error)

GetSerialPortConfiguration retrieves a serial port configuration.

GetSerialPortConfigurationOptions

func (c *Client) GetSerialPortConfigurationOptions(ctx context.Context, serialPortToken string) (*SerialPortConfigurationOptions, error)

GetSerialPortConfigurationOptions retrieves serial port configuration options.

GetSerialPorts

func (c *Client) GetSerialPorts(ctx context.Context) ([]*SerialPort, error)

GetSerialPorts retrieves all serial ports.

GetVideoOutputConfiguration

func (c *Client) GetVideoOutputConfiguration(ctx context.Context, videoOutputToken string) (*VideoOutputConfiguration, error)

GetVideoOutputConfiguration retrieves a video output configuration.

GetVideoOutputConfigurationOptions

func (c *Client) GetVideoOutputConfigurationOptions(ctx context.Context, videoOutputToken string) (*VideoOutputConfigurationOptions, error)

GetVideoOutputConfigurationOptions retrieves video output configuration options.

GetVideoOutputs

func (c *Client) GetVideoOutputs(ctx context.Context) ([]*VideoOutput, error)

GetVideoOutputs retrieves all video outputs.

SendReceiveSerialCommand

func (c *Client) SendReceiveSerialCommand(ctx context.Context, serialPortToken string, data []byte, timeoutSeconds, dataLength int) ([]byte, error)

SendReceiveSerialCommand sends a serial command and receives a response.

SetDigitalInputConfigurations

func (c *Client) SetDigitalInputConfigurations(ctx context.Context, inputs []*DigitalInput) error

SetDigitalInputConfigurations sets digital input configurations.

SetSerialPortConfiguration

func (c *Client) SetSerialPortConfiguration(ctx context.Context, config *SerialPortConfiguration) error

SetSerialPortConfiguration sets a serial port configuration.

SetVideoOutputConfiguration

func (c *Client) SetVideoOutputConfiguration(ctx context.Context, config *VideoOutputConfiguration) error

SetVideoOutputConfiguration sets a video output configuration.

Discovery package

Find cameras with WS-Discovery, or answer probes for your own devices.

DefaultType

const DefaultType = "{" + nsONVIFNet + "}NetworkVideoTransmitter"

DefaultType is the type a registered device advertises when it lists none: dn:NetworkVideoTransmitter, which is what ONVIF clients probe for.

ErrNoProbeMatches

var (
	// ErrNoProbeMatches is returned when no probe matches are found during discovery.
	ErrNoProbeMatches	= errors.New("no probe matches found")

	// ErrNetworkInterfaceNotFound is returned when a network interface is not found.
	ErrNetworkInterfaceNotFound	= errors.New("network interface not found")
)

ErrInvalidDevice

var ErrInvalidDevice = errors.New("invalid device")

ErrInvalidDevice is returned by Responder.Register for a device that cannot be advertised.

ErrMalformedProbe

var ErrMalformedProbe = errors.New("malformed probe")

ErrMalformedProbe marks a Probe the responder cannot interpret.

StableEndpointRef

func StableEndpointRef(seed string) string

StableEndpointRef derives a "urn:uuid:" endpoint reference from seed. The same seed always yields the same reference, on any host and across restarts, so a device keeps its identity without anything being persisted. Use a name that is stable for the device (for example "farm1/cam-07"); an empty seed is valid but gives every caller the same reference.

Device

type Device struct {
	// Device endpoint address
	EndpointRef	string

	// XAddrs contains the device service addresses
	XAddrs	[]string

	// Types contains the device types
	Types	[]string

	// Scopes contains the device scopes (name, location, etc.)
	Scopes	[]string

	// Metadata version
	MetadataVersion	int
}

Device represents a discovered ONVIF device.

Discover

func Discover(ctx context.Context, timeout time.Duration) ([]*Device, error)

Discover performs ONVIF device discovery using WS-Discovery protocol. For advanced options like specifying a network interface, use DiscoverWithOptions.

DiscoverWithOptions

func DiscoverWithOptions(ctx context.Context, timeout time.Duration, opts *DiscoverOptions) ([]*Device, error)

DiscoverWithOptions discovers ONVIF devices with custom options.

Device.GetDeviceEndpoint

func (d *Device) GetDeviceEndpoint() string

GetDeviceEndpoint extracts the primary device endpoint from XAddrs.

Device.GetLocation

func (d *Device) GetLocation() string

GetLocation extracts the device location from scopes.

Device.GetName

func (d *Device) GetName() string

GetName extracts the device name from scopes.

DiscoverOptions

type DiscoverOptions struct {
	// NetworkInterface specifies the network interface to use for multicast.
	// If empty, the system will choose the default interface.
	// Examples: "eth0", "wlan0", "192.168.1.100"
	NetworkInterface	string

	// ProbeAddress, when set, sends the probe by unicast to this UDP address
	// ("host:port") from an ephemeral local port instead of using the
	// WS-Discovery multicast group. It needs no multicast routing, so it works
	// in containers and CI, and it pairs with ResponderConfig.ListenAddr.
	// NetworkInterface is ignored when it is set.
	ProbeAddress	string
}

DiscoverOptions contains options for device discovery.

NetworkInterface

type NetworkInterface struct {
	// Name of the interface (e.g., "eth0", "wlan0")
	Name	string

	// IP addresses assigned to this interface
	Addresses	[]string

	// Up indicates if the interface is up
	Up	bool

	// Multicast indicates if the interface supports multicast
	Multicast	bool
}

NetworkInterface represents a network interface.

ListNetworkInterfaces

func ListNetworkInterfaces() ([]NetworkInterface, error)

ListNetworkInterfaces returns all available network interfaces with their addresses.

ProbeMatch

type ProbeMatch struct {
	XMLName		xml.Name	`xml:"ProbeMatch"`
	EndpointRef	string		`xml:"EndpointReference>Address"`
	Types		string		`xml:"Types"`
	Scopes		string		`xml:"Scopes"`
	XAddrs		string		`xml:"XAddrs"`
	MetadataVersion	int		`xml:"MetadataVersion"`
}

ProbeMatch represents a WS-Discovery probe match.

ProbeMatches

type ProbeMatches struct {
	XMLName		xml.Name	`xml:"ProbeMatches"`
	ProbeMatch	[]ProbeMatch	`xml:"ProbeMatch"`
}

ProbeMatches represents WS-Discovery probe matches.

Responder

type Responder struct {
	// contains filtered or unexported fields
}

Responder is a WS-Discovery target service. One Responder owns one socket and answers Probe messages on behalf of every registered Device, so a fleet of virtual cameras on one host shares a single multicast membership. Supported: Probe/ProbeMatches with Types and Scopes filtering (MatchBy rfc3986, strcmp0 and none), Hello on start, Bye on stop. Not supported: Resolve/ResolveMatches, the ldap and uuid scope rules (such a probe matches nothing), the 2009/01 (WS-Discovery 1.1) namespace, and managed mode with a discovery proxy. Duplicate probes are answered each time.

NewResponder

func NewResponder(cfg *ResponderConfig) *Responder

NewResponder returns a Responder. A nil cfg uses multicast defaults.

Responder.Addr

func (r *Responder) Addr() net.Addr

Addr returns the bound socket address, or nil before Start has bound it.

Responder.Register

func (r *Responder) Register(d *Device) error

Register advertises d. EndpointRef is required and identifies the device; a second Register with the same EndpointRef replaces the first. Types entries are "{namespace}Local" or the prefixed forms "dn:Local" (ONVIF network namespace) and "tds:Local" (ONVIF device namespace); no Types means DefaultType. If the responder is running, Register sends a Hello.

Responder.Start

func (r *Responder) Start(ctx context.Context) error

Start binds the socket, sends Hello for every registered device, and answers probes until ctx is canceled, then sends Bye for every device still registered and returns nil. A bind failure is returned immediately.

Responder.Unregister

func (r *Responder) Unregister(endpointRef string)

Unregister stops advertising the device with the given EndpointRef. If the responder is running, it sends a Bye.

ResponderConfig

type ResponderConfig struct {
	// NetworkInterface selects the interface that joins the multicast group,
	// by name or IP address, as in DiscoverOptions. Ignored when ListenAddr
	// is set.
	NetworkInterface	string

	// ListenAddr switches the responder to unicast mode. It binds this UDP
	// address (for example "127.0.0.1:0") instead of joining
	// 239.255.255.250:3702, so it needs no multicast routing and several
	// responders can coexist on one host. Pair it with
	// DiscoverOptions.ProbeAddress. Intended for tests and CI.
	ListenAddr	string

	// AnnounceAddr is where Hello and Bye messages are sent. It defaults to
	// the WS-Discovery multicast group in multicast mode. In unicast mode it
	// defaults to empty, which disables announcements.
	AnnounceAddr	string

	// MaxResponseDelay bounds a random pause before each ProbeMatches reply,
	// which WS-Discovery recommends (APP_MAX_DELAY, 500ms) to keep a large
	// fleet from answering one probe in the same instant. The default, zero,
	// replies immediately.
	MaxResponseDelay	time.Duration

	// Ready, when non-nil, is closed by Start once the socket is bound and
	// Addr is valid. It is closed at most once.
	Ready	chan<- struct{}
}

ResponderConfig configures a Responder.

Server package

A virtual ONVIF camera: Device, Media, PTZ and Imaging services, with stable identities.

ErrVideoSourceNotFound

var (
	// ErrVideoSourceNotFound is returned when a video source is not found.
	// Aliased to the client package's sentinel so errors.Is matches
	// regardless of whether the caller is comparing against the server or
	// client package's error variable.
	ErrVideoSourceNotFound	= onvif.ErrVideoSourceNotFound

	// ErrProfileNotFound is returned when a profile is not found.
	ErrProfileNotFound	= onvif.ErrProfileNotFound

	// ErrSnapshotNotSupported is returned when snapshot is not supported for a profile.
	ErrSnapshotNotSupported	= onvif.ErrSnapshotNotSupported

	// ErrPTZNotSupported is returned when PTZ is not supported for a profile.
	ErrPTZNotSupported	= onvif.ErrPTZNotSupported

	// ErrPresetNotFound is returned when a preset is not found.
	ErrPresetNotFound	= onvif.ErrPresetNotFound

	// ErrSubscriptionNotFound is returned when there is no active pull-point
	// event subscription.
	ErrSubscriptionNotFound	= errors.New("no active pull-point subscription")

	// ErrInvalidDuration is returned when an ISO-8601 duration string cannot
	// be parsed.
	ErrInvalidDuration	= errors.New("invalid duration")
)

AudioEncoderConfig

type AudioEncoderConfig struct {
	Encoding	string	// G711, G726, AAC
	Bitrate		int	// Bitrate in kbps
	SampleRate	int	// Sample rate in Hz
}

AudioEncoderConfig represents audio encoder configuration.

AudioSourceConfig

type AudioSourceConfig struct {
	Token		string	// Audio source token
	Name		string	// Audio source name
	SampleRate	int	// Sample rate in Hz (e.g., 8000, 16000, 48000)
	Bitrate		int	// Bitrate in kbps
}

AudioSourceConfig represents audio source configuration.

BacklightCompensation

type BacklightCompensation struct {
	Mode	string	// OFF, ON
	Level	float64	// 0-100
}

BacklightCompensation represents backlight compensation settings.

Bounds

type Bounds struct {
	X	int
	Y	int
	Width	int
	Height	int
}

Bounds represents video bounds.

Config

type Config struct {
	// Server settings
	Host		string		// Bind address (e.g., "0.0.0.0")
	Port		int		// Server port (default: 8080)
	BasePath	string		// Base path for services (default: "/onvif")
	Timeout		time.Duration	// Request timeout

	// Device information
	DeviceInfo	DeviceInfo

	// EndpointUUID is the device's stable endpoint identity, returned by
	// GetEndpointReference (and the address WS-Discovery advertises). It may
	// be given bare ("12345678-...") or as a "urn:uuid:" URI; the server
	// always reports the URI form, which is what real cameras return. When
	// empty, New generates one that stays fixed for the server's lifetime.
	EndpointUUID	string

	// EndpointSeed derives the endpoint UUID from a stable name (see
	// discovery.StableEndpointRef) when EndpointUUID is empty, so a restarted
	// service gets the same identity back without persisting anything.
	// EndpointUUID wins if both are set.
	EndpointSeed	string

	// Authentication
	Username	string
	Password	string

	// Camera profiles (supports multi-lens cameras)
	Profiles	[]ProfileConfig

	// Capabilities
	SupportPTZ	bool
	SupportImaging	bool
	SupportEvents	bool

	// Output receives the human-readable startup banner and shutdown notice.
	// It defaults to os.Stdout when nil, preserving the behavior of callers
	// written before this field existed.
	//
	// Set it to io.Discard to silence the server. Do that in tests, where one
	// banner per server instance is noise, and in any program whose stdout
	// carries framed protocol data rather than console text - banner output
	// would corrupt it. ServerInfo returns the same information as a string for
	// callers that would rather place it themselves.
	Output	io.Writer

	// Ready, when non-nil, is closed by Start once the listener is bound and
	// accepting connections, so a caller need not sleep or poll-dial before
	// its first request. It is closed at most once even if Start is called
	// again.
	Ready	chan<- struct{}
}

Config represents the ONVIF server configuration.

DefaultConfig

func DefaultConfig() *Config

DefaultConfig returns a default server configuration with a multi-lens camera setup.

Config.ServiceEndpoints

func (c *Config) ServiceEndpoints(host string) map[string]string

ServiceEndpoints returns the service endpoint URLs.

DeviceInfo

type DeviceInfo struct {
	Manufacturer	string
	Model		string
	FirmwareVersion	string
	SerialNumber	string
	HardwareID	string
}

DeviceInfo contains device identification information.

ExposureSettings

type ExposureSettings struct {
	Mode		string	// AUTO, MANUAL
	Priority	string	// LowNoise, FrameRate
	MinExposure	float64
	MaxExposure	float64
	MinGain		float64
	MaxGain		float64
	ExposureTime	float64
	Gain		float64
}

ExposureSettings represents exposure settings.

FocusSettings

type FocusSettings struct {
	AutoFocusMode	string	// AUTO, MANUAL
	DefaultSpeed	float64
	NearLimit	float64
	FarLimit	float64
	CurrentPos	float64
}

FocusSettings represents focus settings.

ImagingState

type ImagingState struct {
	Brightness		float64
	Contrast		float64
	Saturation		float64
	Sharpness		float64
	BacklightComp		BacklightCompensation
	Exposure		ExposureSettings
	Focus			FocusSettings
	WhiteBalance		WhiteBalanceSettings
	WideDynamicRange	WDRSettings
	IrCutFilter		string	// ON, OFF, AUTO
}

ImagingState represents the current imaging settings state.

PTZConfig

type PTZConfig struct {
	NodeToken		string		// PTZ node token
	PanRange		Range		// Pan range in degrees
	TiltRange		Range		// Tilt range in degrees
	ZoomRange		Range		// Zoom range
	DefaultSpeed		PTZSpeed	// Default speed
	SupportsContinuous	bool		// Supports continuous move
	SupportsAbsolute	bool		// Supports absolute move
	SupportsRelative	bool		// Supports relative move
	Presets			[]Preset	// Predefined presets
}

PTZConfig represents PTZ configuration.

PTZPosition

type PTZPosition struct {
	Pan	float64	// Pan position
	Tilt	float64	// Tilt position
	Zoom	float64	// Zoom position
}

PTZPosition represents PTZ position.

PTZSpeed

type PTZSpeed struct {
	Pan	float64	// Pan speed (-1.0 to 1.0)
	Tilt	float64	// Tilt speed (-1.0 to 1.0)
	Zoom	float64	// Zoom speed (-1.0 to 1.0)
}

PTZSpeed represents PTZ movement speed.

PTZState

type PTZState struct {
	Position	PTZPosition
	Moving		bool
	PanMoving	bool
	TiltMoving	bool
	ZoomMoving	bool
	LastUpdate	time.Time
	// contains filtered or unexported fields
}

PTZState represents the current PTZ state.

Preset

type Preset struct {
	Token		string		// Preset token
	Name		string		// Preset name
	Position	PTZPosition	// Position
}

Preset represents a PTZ preset position.

ProfileConfig

type ProfileConfig struct {
	Token		string			// Profile token (unique identifier)
	Name		string			// Profile name
	VideoSource	VideoSourceConfig	// Video source configuration
	AudioSource	*AudioSourceConfig	// Audio source configuration (optional)
	VideoEncoder	VideoEncoderConfig	// Video encoder configuration
	AudioEncoder	*AudioEncoderConfig	// Audio encoder configuration (optional)
	PTZ		*PTZConfig		// PTZ configuration (optional)
	Snapshot	SnapshotConfig		// Snapshot configuration
}

ProfileConfig represents a camera profile configuration.

ProfileConfig.ToONVIFProfile

func (p *ProfileConfig) ToONVIFProfile() *onvif.Profile

ToONVIFProfile converts a ProfileConfig to an ONVIF Profile.

Range

type Range struct {
	Min	float64
	Max	float64
}

Range represents a numeric range.

Resolution

type Resolution struct {
	Width	int
	Height	int
}

Resolution represents video resolution.

Server

type Server struct {
	// contains filtered or unexported fields
}

Server represents the ONVIF server.

New

func New(config *Config) (*Server, error)

New creates a new ONVIF server with the given configuration.

Server.Addr

func (s *Server) Addr() string

Addr returns the address the server is listening on, or "" before Start has bound one. With Config.Port set to 0 this is how a caller learns the port the OS assigned.

Server.DiscoveryDevice

func (s *Server) DiscoveryDevice() *discovery.Device

DiscoveryDevice describes this server as a WS-Discovery target, ready to pass to discovery.Responder.Register. It carries the stable endpoint reference (see Config.EndpointUUID), the device service XAddr, and the standard ONVIF name, hardware, type and Streaming-profile scopes derived from Config.DeviceInfo. The XAddr uses the bound port, so call it after Start has bound the listener (Config.Ready signals this); before that it reports Config.Port, which is wrong for an OS-assigned port 0.

Server.EndpointReference

func (s *Server) EndpointReference() string

EndpointReference returns the device's endpoint identity in "urn:uuid:" form, as reported by GetEndpointReference.

Server.GetConfig

func (s *Server) GetConfig() *Config

GetConfig returns the server configuration.

Server.GetImagingState

func (s *Server) GetImagingState(videoSourceToken string) (*ImagingState, bool)

GetImagingState returns the current imaging state for a video source.

Server.GetPTZState

func (s *Server) GetPTZState(profileToken string) (*PTZState, bool)

GetPTZState returns the current PTZ state for a profile.

Server.GetStreamConfig

func (s *Server) GetStreamConfig(profileToken string) (*StreamConfig, bool)

GetStreamConfig returns the stream configuration for a profile.

Server.ListProfiles

func (s *Server) ListProfiles() []ProfileConfig

ListProfiles returns all configured profiles.

Server.ServerInfo

func (s *Server) ServerInfo() string

ServerInfo returns human-readable server information.

Server.Start

func (s *Server) Start(ctx context.Context) error

Start starts the ONVIF server.

Server.UpdateStreamURI

func (s *Server) UpdateStreamURI(profileToken, uri string) error

UpdateStreamURI updates the RTSP URI for a profile.

SnapshotConfig

type SnapshotConfig struct {
	Enabled		bool		// Whether snapshots are supported
	Resolution	Resolution	// Snapshot resolution
	Quality		float64		// JPEG quality (0-100)
}

SnapshotConfig represents snapshot configuration.

StreamConfig

type StreamConfig struct {
	ProfileToken	string	// Associated profile token
	RTSPPath	string	// RTSP path (e.g., "/stream1")
	StreamURI	string	// Full RTSP URI
}

StreamConfig represents an RTSP stream configuration.

VideoEncoderConfig

type VideoEncoderConfig struct {
	Encoding	string		// JPEG, H264, H265, MPEG4
	Resolution	Resolution	// Video resolution
	Quality		float64		// Quality (0-100)
	Framerate	int		// Frames per second
	Bitrate		int		// Bitrate in kbps
	GovLength	int		// GOP length
}

VideoEncoderConfig represents video encoder configuration.

VideoSourceConfig

type VideoSourceConfig struct {
	Token		string	// Video source token
	Name		string	// Video source name
	Resolution	Resolution
	Framerate	int
	Bounds		Bounds
}

VideoSourceConfig represents video source configuration.

WDRSettings

type WDRSettings struct {
	Mode	string	// OFF, ON
	Level	float64	// 0-100
}

WDRSettings represents wide dynamic range settings.

WhiteBalanceSettings

type WhiteBalanceSettings struct {
	Mode	string	// AUTO, MANUAL
	CrGain	float64
	CbGain	float64
}

WhiteBalanceSettings represents white balance settings.