Build Webcam and IP camera solutions efficiently in C#.Net
- Quick start
- Online manual
- Start Onvif programming
- C# Onvif.IP.Camera.Viewer
- C# Onvif IP Camera Viewer Git repository
- IP video camera viewer
- PTZ IP camera motion control
- Onvif network video recorder
- Motion detection and alarms
- IP camera to SIP video call
- Configure Onvif IP cam remotely
- Onvif IP camera video server
- Forward PTZ instructions
- USB camera as ONFIV cam
- RTSP IP cam as ONFIV cam
- Send video to cellphones
- Stream to multiple locations
- Setup discoverability
- Playing VLC stream
- How to find not Onvif cameras on the network
- Codec converting
- Video stream on website
- Onvif Network Video Analytics
- Onvif IP Camera Manager
- Computer Vision Technology
- Motion recognition and analysis
- Object detection
- Object categorization
- Image Manipulation
- Ozeki SDK for Linux
- Commercial information
- Download the SDK
- Copy the C# code example into Visual Studio
- Build your IP Camera project
Did you know?
Did you know, that this SDK was used to build Ozeki Camera Recorder?
If you don't want to write code, it could be just what you need. Download it now from the follolwing page: Download Ozeki Camera Recorder.
How to make your software discoverable by other applications in C#
This guide demonstrates how to make your software discoverable by other applications in C#. It is really useful if you are going to build a more complex application which requires the a live streamed video as a resource.
What does discoverability means?
When using software for the first time, discoverability is important. It let's the other software to recognize your software's capabilities and communicate with it. Therefore you will be able to create applications that work together with your other programmes instead of working separately.
How does it work?
This specification defines a multicast discovery protocol to locate services. The primary mode of discovery is a client searching for one or more target services. To find a target service by the type of the target service, a scope in which the target service resides, the client sends a probe message to a multicast group. In response target services that match with the probe send a response directly to the client. To locate a target service by name, a client sends a resolution request message to the same multicast group, and again, the target service that matches sends a response directly to the client.
Figure 1 - Diagram of the process of discovery
To minimize the need for polling, when a target service joins the network, it sends an announcement message to the same multicast group. By listening to this multicast group, clients can detect newly-available target services without repeated probing.
To scale to a large number of endpoints, this specification defines multicast suppression behavior if a discovery proxy is available on the network. Specifically, when a discovery proxy detects a probe or resolution request sent by multicast, the discovery proxy sends an announcement for itself. By listening to these announcements, clients detect discovery proxies and switch to use a discovery proxy-specific protocol. However, if a discovery proxy is unresponsive, clients revert to use the protocol described herein.
What networks are supported?
To support networks with explicit network management services like DHCP, DNS, domain controllers, directories, etc., this specification acknowledges that clients and/or target services may be configured to behave differently than defined herein. For example, another specification may define a well-known DHCP record containing the address of a discovery proxy, and compliance with that specification and may require endpoints to send messages to this discovery proxy rather than to a multicast group.
While the specific means of such configuration is beyond the scope of this specification, it is expected that any such configuration should allow clients and/or target services to migrate smoothly between carefully-managed and ad hoc networks.
Below you can find the answers for the most frequently asked questions related to this topic:
How can I get the URL of the camera?
You can get the URL from the producer of the camera. (In the 10th tutorial you can find information on how to create an own IP camera discoverer program.)
I have not managed to build the solution. How to solve it?
- Please set the Target framework property of the project to .NET 4.0.
- You should add the OzekiSDK.dll to the references of the solution.
- Please import the missing classes.