Network cameras, which are Internet Protocol-based cameras that transmit video data over a local area network (LAN), are becoming increasingly prevalent – especially in surveillance and security scenarios. Windows now allows users to associate network cameras to their PC, enabling photo capture and streaming of video in camera applications. Currently Windows only supports ONVIF Profile S compliant cameras*, which are standards-compliant network cameras optimized for real-time streaming video capture.
Note: The features discussed in this article are available with Windows 10, Insider Build 18995.
Windows provides support for discovery, pairing, configuration and streaming via WinRT APIs.
To discover network cameras connected to the local subnet, create a DeviceWatcher class and follow the instructions specified in this document, connect to remote cameras.
To pair the discovered network camera, use the DeviceInformation instance returned by the DeviceWatcher. Windows supports the following pairing ceremonies: Basic and Custom, as documented in the pair-devices documentation. To briefly summarize, Basic Pairing provides a simple method for pairing to cameras that do not require authentication to access the stream. The Custom Pairing mode should be used when more advanced control over the pairing is needed or if a camera will require authentication.
To connect to a camera that requires authentication without developing a custom application, the Device Enumeration and Pairing app on the Microsoft Store can be used. Use option 9, “Custom Device Pairing”, and then choose the “Web Services on Devices (NetworkCamera)” device selector. After clicking on “Start Watcher”, the cameras discovered on the network will appear. Choose the desired camera and then click “Pair Selected Device” to begin the process.
Alternatively, for network cameras that can be accessed without authentication, users can pair using the Add a device wizard via the Windows 10 Settings page.
After pairing the network camera, you can capture photos, stream and record videos using your preferred camera app or the built-in Windows Camera App.
If the ability to pair to authenticated cameras with the Settings page is important for your use case, please let us know via the Windows Developer Feedback.
Network camera support in Windows is continuing to improve, with additional functionality currently available for developers enrolled in the Windows Insider Program. In the latest insider builds, developers will find improved support for more ONVIF cameras, as Windows is now fully certified by ONVIF. Additionally, there are some new APIs available in the insider builds that enable streams from a specified RTSP Uniform Resource Identifier (URI), and to perform time synchronization with cameras. The two APIs are described below.
For streaming from a URI through the MediaCapture class, assign the desired URI to MediaCaptureInitializationSettings::DeviceUri. If credentials are required, they can be set through MediaCaptureInitializationSettings::DeviceUriPasswordCredential. The API supports ONVIF and generic RTSP server URIs. This allows applications to use the standard Windows Media APIs to capture video from generic cameras that do not conform to the ONVIF standards, or from an arbitrary URI without pairing.
New APIs also exist to support time synchronization of cameras using the Network Time Protocol (NTP) as specified by the Onvif specification. Use KSPROPERTY_NETWORKCAMERACONTROL_NTP to configure the NTP server for the ONVIF camera to use. Once configured through this mechanism, the camera starts streaming, and sends NTP time through the Sender’s report ( as described in the RTP/RTCP spec) in a separate channel helping Windows adjust RTP payload timestamps it receives from the camera. This can be used to ensure synchronization of the captured video clips across multiple cameras.
*ONVIF Profile S conformant cameras that don’t adhere strictly to the WS-Discovery protocol might have issues during discovery and enumeration.
Editors note: This post has been updated to provide clarity on the pairing process