Getting Started with WINKOnvif.Core
This guide will help you get started with using the WINKOnvif.Core library in your .NET applications.
Installation
Install the WINKOnvif.Core package via NuGet:
dotnet add package WINKOnvif.Core
Basic Usage
Connect to an ONVIF Camera
using WINKOnvif.Core;
using WINKOnvif.Core.Authentication;
using WINKOnvif.Core.Models.Authentication;
// Create credentials for the camera
var credentials = new OnvifCredentials
{
    Username = "admin",
    Password = "password",
    CameraAddress = "http://192.168.1.100"
};
// Create an authenticator (Basic, Digest, or WSSE)
var authenticator = new BasicAuthenticator();
// Create a media service
var mediaService = new OnvifMediaService(credentials, authenticator);
// Get all profiles
var profiles = await mediaService.GetProfilesAsync();
// Get stream URI for the first profile
var streamUri = await mediaService.GetStreamUriAsync(profiles[0].Token);
Console.WriteLine($"Stream URI: {streamUri}");
PTZ Control
using WINKOnvif.Core.PTZ;
using WINKOnvif.Core.Models.PTZ;
// Create a PTZ service
var ptzService = new PtzService(credentials, authenticator);
// Check if camera supports PTZ
var capabilities = await ptzService.GetCapabilitiesAsync();
if (capabilities.PtzSupported)
{
    // Move the camera
    await ptzService.ContinuousMoveAsync(profiles[0].Token, new PtzVector
    {
        PanTilt = new Vector2D { X = 0.5, Y = 0.0 },
        Zoom = new Vector1D { X = 0.0 }
    });
    
    // Stop movement after 2 seconds
    await Task.Delay(2000);
    await ptzService.StopAsync(profiles[0].Token);
}
Advanced Configuration
For more advanced configuration and details on all available services, please refer to the API documentation.
Troubleshooting
If you encounter issues connecting to your camera, try the following:
- Verify camera credentials
 - Check network connectivity
 - Try different authentication methods
 - Enable logging for detailed diagnostic information
 
// Enable detailed logging
services.AddLogging(configure => 
{
    configure.AddConsole();
    configure.SetMinimumLevel(LogLevel.Debug);
});