SlideShare a Scribd company logo
REC 
How to implement 
CAMERA RECORDING 
for USB WEBCAM or IP CAMERA in C#.NET 
! 
SOURCE CODE: 
Welcome to this presentation that explains step-by-step how to develop video 
recording feature for your USB webcam and your IP camera / ONVIF IP camera in 
C#.NET to be able to capture and save the camera image. Good luck, have fun! 
www.camera-sdk.com
Contents 
Prerequisites 
Creating a WPF project in Visual Studio 
Building a camera viewer 
Implementing the video recorder feature 
Testing the application 
! 
SOURCE C2 O/ 1D7 E: 
www.camera-sdk.com
Prerequisites 
Windows PC 
Broadband Internet connection 
USB webcam or IP camera connected to your network 
Microsoft Visual Studio + .NET Framework 4.0 
OZEKI Camera SDK 
Note: Make sure that you have stable Internet connection, and your PC and the camera is connected 
to the same network. If it is needed, download and install the IDE and the .NET Framework from 
www.microsoft.comand the camera SDK from www.camera-sdk.com, too. 
3 / 17
Creating a WPF app in VS 
Creating a new project 
• Click on the „File” and choose the „New Project…” option 
• Choose the Visual C# WPF Application 
• Provide a name for your project and click on the „OK” 
Add the Camera SDK into the References 
• Right-click on the „References” 
• Click on the „Add Reference…” 
• Select the „Browse” tab and look for the „VoIPSDK.dll” 
• Select the .dll file and click on the „OK” 
4 / 17
Building a camera viewer 
Creating the GUI in the xaml file 
Create 2 buttons for USB camera connection and disconnection: 
<GroupBox Header="Connect to USB camera" Height="100" Width="150„ HorizontalAlignment="Left" 
VerticalAlignment="Top"> 
<Grid> 
<Button Content="Connect" Width="75" Margin="32,19,0,0" 
HorizontalAlignment="Left" VerticalAlignment="Top" 
Click="ConnectUSBCamera_Click"/> 
<Button Content="Disconnect" Width="75" Margin="32,46,0,0" 
HorizontalAlignment="Left" VerticalAlignment="Top" 
Click="DisconnectUSBCamera_Click"/> 
</Grid> 
</GroupBox> 
5 / 17
Building a camera viewer 
Creating the GUI in the xaml file 
Create 2 buttons and 3 textboxes (IP address, username, password) for IP cam connection/disconnection: 
<GroupBox Header="Connect to IP camera" Height="100" Width="387" HorizontalAlignment="Left" 
VerticalAlignment="Top" Margin="155,0,0,0"> 
<Grid> 
<Label Height="25" Width="70" Content="Host" HorizontalAlignment="Left" VerticalAlignment="Top"/> 
<TextBox Name="HostTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Height="23" 
Width="169" Margin="68,2,0,0" TextWrapping="Wrap" /> 
<Label Height="25" Width="70" Content="Username" HorizontalAlignment="Left" Margin="0,26,0,0" 
VerticalAlignment="Top"/> 
<TextBox Name="UserTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Height="23" 
Width="169" Margin="68,29,0,0" TextWrapping="Wrap"/> 
<Label Height="25" Width="70" Content="Password" HorizontalAlignment="Left" VerticalAlignment="Top" 
Margin="0,52,0,0" /> 
<PasswordBox Name="Password" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" 
Width="169" Margin="68,56,0,0"/> 
<Button Content="Connect" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="267,16,0,0" 
Width="75" Click="ConnectIPCamera_Click"/> 
<Button Content="Disconnect" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="267,43,0,0" 
Width="75" Click="DisconnectIPCamera_Click" /> 
</Grid> 
</GroupBox> 
6 / 17
Building a camera viewer 
Creating the GUI in the xaml file 
After you have created the GUI elements that allow the user to be able to connect to a USB or an 
IP camera, you need to build a „camera box” to be able to display the camera image in the GUI: 
<Grid Name="CameraBox" Margin="10,105,10,166"/> 
Set the window property as follows: 
ResizeMode="NoResize" WindowStartupLocation="CenterScreen"> 
7 / 17
Building a camera viewer 
Building the image displaying feature in the xaml.cs file 
In the xaml.cs file, first of all, you need to add some extra using lines. All the essential namespaces 
are determined by the camera software: 
using Ozeki.Media.IPCamera; 
using Ozeki.Media.MediaHandlers; 
using Ozeki.Media.MediaHandlers.Video; 
using Ozeki.Media.Video.Controls; 
After this, you need to add some objects that are needed for displaying the camera image: 
private VideoViewerWPF _videoViewerWpf; 
private BitmapSourceProvider _provider; 
private IIPCamera _ipCamera; 
private WebCamera _webCamera; 
private MediaConnector _connector; 
8 / 17
Building a camera viewer 
Building the image displaying feature in the xaml.cs file 
Instantiate the objects in the constructor and call the SetVideoViewer() helpfunction: 
public MainWindow() 
{ 
InitializeComponent(); 
_connector = new MediaConnector(); 
_provider = new BitmapSourceProvider(); 
SetVideoViewer(); 
} 
Create the SetVideoViewer() helpfunction that creates and sets the videoviewer object and add it to the GUI: 
private void SetVideoViewer() 
{ 
_videoViewerWpf = new VideoViewerWPF 
{ 
HorizontalAlignment = HorizontalAlignment.Stretch, 
VerticalAlignment = VerticalAlignment.Stretch, 
Background = Brushes.Black 
}; 
CameraBox.Children.Add(_videoViewerWpf); 
_videoViewerWpf.SetImageProvider(_provider); 
} 
9 / 17
Building a camera viewer 
Building the image displaying feature in the xaml.cs file 
Implement the USB camera connector and disconnector: 
private void ConnectUSBCamera_Click(object sender, RoutedEventArgs e) 
{ 
_webCamera = WebCamera.GetDefaultDevice(); 
if (_webCamera == null) return; 
_connector.Connect(_webCamera, _provider); 
_webCamera.Start(); 
_videoViewerWpf.Start(); 
} 
private void DisconnectUSBCamera_Click(object sender, RoutedEventArgs e) 
{ 
_videoViewerWpf.Stop(); 
_webCamera.Stop(); 
_webCamera.Dispose(); 
_connector.Disconnect(_webCamera, _provider); 
} 
10 / 17
Building a camera viewer 
Building the image displaying feature in the xaml.cs file 
Implement the IP camera connector/disconnector (including the required network parameters as well): 
private void ConnectIPCamera_Click(object sender, RoutedEventArgs e) 
{ 
var host = HostTextBox.Text; 
var user = UserTextBox.Text; 
var pass = Password.Password; 
_ipCamera = IPCameraFactory.GetCamera(host, user, pass); 
if (_ipCamera == null) return; 
_connector.Connect(_ipCamera.VideoChannel, _provider); 
_ipCamera.Start(); 
_videoViewerWpf.Start(); 
} 
private void DisconnectIPCamera_Click(object sender, RoutedEventArgs e) 
{ 
_videoViewerWpf.Stop(); 
_ipCamera.Disconnect(); 
_ipCamera.Dispose(); 
_connector.Disconnect(_ipCamera.VideoChannel, _provider); 
} 
11 / 17
Implementing the recording 
Extending the GUI in the xaml file 
Create 2 buttons that will start and stop the video capturing (after you have added the additional 
elements, you need to generate 2 eventhandler methods for them): 
<GroupBox Header="Function" Height="160" Width="542" Margin="0,360,0,0" 
HorizontalAlignment="Left" VerticalAlignment="Top" > 
<Grid> 
<Grid.ColumnDefinitions> 
<ColumnDefinition Width="*"/> 
<ColumnDefinition Width="*"/> 
</Grid.ColumnDefinitions> 
<Button Grid.Column="0" Content="Start video capture" 
HorizontalAlignment="Center" VerticalAlignment="Center" 
Click="StartCapture_Click" Width="120" Height="50"/> 
<Button Grid.Column="1" Content="Stop video capture" 
HorizontalAlignment="Center" VerticalAlignment="Center" 
Click="StopCapture_Click" Width="120" Height="50"/> 
</Grid> 
</GroupBox> 
12 / 17
Implementing the recording 
Building the video recorder in the xaml.cs file 
Declare 2 new fields for video recording. 
These two objects are the followings: IVideoSender and MPEG4Recorder: 
private MPEG4Recorder _recorder; 
private IVideoSender _videoSender; 
You need to instantiate them at USB webcam connection and IP camera connection as well by 
inserting both of the following lines: 
_videoSender = _webCamera; 
_videoSender = _ipCamera.VideoChannel; 
Into the USB camera connection section: 
Into the IP camera connection section: 
13 / 17
Implementing the recording 
Building the video recorder in the xaml.cs file 
To differentiate the captured streams, their file name will contain the current date and time. The 
destination folder will be the place of the program. Instantiate the recorder and subscribe the 
eventhandler method for the MultiplexFinished event. Connect the videosender and the recorder: 
private void StartCapture_Click(object sender, RoutedEventArgs e) 
{ 
if (_videoSender == null) return; 
var date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + 
DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + 
DateTime.Now.Second; 
var currentpath = AppDomain.CurrentDomain.BaseDirectory + date + ".mpeg4"; 
_recorder = new MPEG4Recorder(currentpath); 
_recorder.MultiplexFinished += _recorder_MultiplexFinished; 
_connector.Connect(_videoSender, _recorder.VideoRecorder); 
} 
14 / 17
Implementing the recording 
Building the video recorder in the xaml.cs file 
Create the eventhandler method. Unsubscribe from the event and dispose the recorder. To be able 
to stop capturing, you need to disconnect and call the Multiplex method that creates the video. 
void _recorder_MultiplexFinished(object sender, Ozeki.VoIP.VoIPEventArgs<bool> e) 
{ 
_recorder.MultiplexFinished -= _recorder_MultiplexFinished; 
_recorder.Dispose(); 
} 
private void StopCapture_Click(object sender, RoutedEventArgs e) 
{ 
if (_videoSender == null) return; 
_connector.Disconnect(_videoSender, _recorder.VideoRecorder); 
_recorder.Multiplex(); 
} 
15 / 17
Testing the application 
Run the application and test the video recorder 
Step 1: Connect to a camera 
• USB webcam: Click on „Connect” 
• IP camera: Enter the IP address of the camera, its 
username and password, then click on „Connect” 
Step 2: Start capturing 
Click on „Start video capture” 
Step 3: Finish capturing and save the video file 
Click on „Stop video capture” 
Step 4: Watch the video file 
16 / 17
Thank you for your attention! 
To sum it up, the ONVIF-compliant OZEKI Camera SDK provides great background 
support for your IP camera, ONVIF IP camera and USB webcam developments by 
offering prewritten components to your development environment. Building a 
video recorder to capture the camera stream is easy as that. 
For more information please visit our website: 
www.camera-sdk.com 
or send us an e-mail to: 
info@camera-sdk.com 
! 
SOURCE CODE: 
www.camera-sdk.com

More Related Content

Viewers also liked

Digital Portfolio - David Hronek, LEED AP
Digital Portfolio - David Hronek, LEED APDigital Portfolio - David Hronek, LEED AP
Digital Portfolio - David Hronek, LEED AP
davidhronek
 
2012 conferences
2012 conferences2012 conferences
Mark scheme for the geographical enquiry
Mark scheme for the geographical enquiryMark scheme for the geographical enquiry
Mark scheme for the geographical enquiry
David Rogers
 
Bloomberg Market Concepts (BMC)
Bloomberg Market Concepts (BMC)Bloomberg Market Concepts (BMC)
Bloomberg Market Concepts (BMC)
Chuan Wang
 
Neurological Conditions_Mediaplanet_Final_2014
Neurological Conditions_Mediaplanet_Final_2014Neurological Conditions_Mediaplanet_Final_2014
Neurological Conditions_Mediaplanet_Final_2014
Sonja Draskovic
 
Santiago Martin
Santiago MartinSantiago Martin
Santiago Martin
moorthynsn
 
G.o. 41.073
G.o. 41.073G.o. 41.073
G.o. 41.073
Diana Padrón
 
Sintesis informativa 25 06 2013
Sintesis informativa 25 06 2013Sintesis informativa 25 06 2013
Sintesis informativa 25 06 2013
megaradioexpress
 
Mnu Annual Report Draft V8
Mnu Annual Report Draft V8Mnu Annual Report Draft V8
Mnu Annual Report Draft V8
MichaelJohnsono
 
Paychex Fiscal 2010 Annual Report
Paychex Fiscal 2010 Annual ReportPaychex Fiscal 2010 Annual Report
Paychex Fiscal 2010 Annual Report
kmdefilipps
 
A day in the life of a pharmaceutical physician
A day in the life of a pharmaceutical physicianA day in the life of a pharmaceutical physician
A day in the life of a pharmaceutical physician
Only Medics
 
Khawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema Chanchin
Khawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema ChanchinKhawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema Chanchin
Khawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema Chanchin
Lehkhabu Khawvel
 
1 St Qtr. 2008 Pri Retail Analytics
1 St Qtr. 2008 Pri Retail Analytics1 St Qtr. 2008 Pri Retail Analytics
1 St Qtr. 2008 Pri Retail Analytics
digital.signage
 
Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)
Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)
Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)
Mahruaia Colney
 
Finance in Cornwall 2014 Segment 2 'Developed Business'
Finance in Cornwall 2014 Segment 2 'Developed Business'Finance in Cornwall 2014 Segment 2 'Developed Business'
Finance in Cornwall 2014 Segment 2 'Developed Business'
PKF Francis Clark
 
Uno presentation 2
Uno presentation 2Uno presentation 2
Uno presentation 2
schooltechconnect
 

Viewers also liked (16)

Digital Portfolio - David Hronek, LEED AP
Digital Portfolio - David Hronek, LEED APDigital Portfolio - David Hronek, LEED AP
Digital Portfolio - David Hronek, LEED AP
 
2012 conferences
2012 conferences2012 conferences
2012 conferences
 
Mark scheme for the geographical enquiry
Mark scheme for the geographical enquiryMark scheme for the geographical enquiry
Mark scheme for the geographical enquiry
 
Bloomberg Market Concepts (BMC)
Bloomberg Market Concepts (BMC)Bloomberg Market Concepts (BMC)
Bloomberg Market Concepts (BMC)
 
Neurological Conditions_Mediaplanet_Final_2014
Neurological Conditions_Mediaplanet_Final_2014Neurological Conditions_Mediaplanet_Final_2014
Neurological Conditions_Mediaplanet_Final_2014
 
Santiago Martin
Santiago MartinSantiago Martin
Santiago Martin
 
G.o. 41.073
G.o. 41.073G.o. 41.073
G.o. 41.073
 
Sintesis informativa 25 06 2013
Sintesis informativa 25 06 2013Sintesis informativa 25 06 2013
Sintesis informativa 25 06 2013
 
Mnu Annual Report Draft V8
Mnu Annual Report Draft V8Mnu Annual Report Draft V8
Mnu Annual Report Draft V8
 
Paychex Fiscal 2010 Annual Report
Paychex Fiscal 2010 Annual ReportPaychex Fiscal 2010 Annual Report
Paychex Fiscal 2010 Annual Report
 
A day in the life of a pharmaceutical physician
A day in the life of a pharmaceutical physicianA day in the life of a pharmaceutical physician
A day in the life of a pharmaceutical physician
 
Khawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema Chanchin
Khawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema ChanchinKhawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema Chanchin
Khawvel Sunday School Ni 2014-Puitling Sunday School, Rev. Dr. Zairema Chanchin
 
1 St Qtr. 2008 Pri Retail Analytics
1 St Qtr. 2008 Pri Retail Analytics1 St Qtr. 2008 Pri Retail Analytics
1 St Qtr. 2008 Pri Retail Analytics
 
Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)
Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)
Rev Dr.Zairema chanchin (Khawvel Sunday School Ni)
 
Finance in Cornwall 2014 Segment 2 'Developed Business'
Finance in Cornwall 2014 Segment 2 'Developed Business'Finance in Cornwall 2014 Segment 2 'Developed Business'
Finance in Cornwall 2014 Segment 2 'Developed Business'
 
Uno presentation 2
Uno presentation 2Uno presentation 2
Uno presentation 2
 

Similar to How to implement camera recording for USB webcam or IP camera in C#.NET

06.Programming Media on Windows Phone
06.Programming Media on Windows Phone06.Programming Media on Windows Phone
06.Programming Media on Windows Phone
Nguyen Tuan
 
Web Standards for AR workshop at ISMAR13
Web Standards for AR workshop at ISMAR13Web Standards for AR workshop at ISMAR13
Web Standards for AR workshop at ISMAR13
Rob Manson
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!
Chris Mills
 
Power ai image-pipeline
Power ai image-pipelinePower ai image-pipeline
Power ai image-pipeline
Paulo Sergio Lemes Queiroz
 
Moustamera
MoustameraMoustamera
Moustamera
Bram Vandewalle
 
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
Wim Selles
 
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
DataLeader.io
 
When Smalltalk Meets the Web
When Smalltalk Meets the WebWhen Smalltalk Meets the Web
When Smalltalk Meets the Web
ESUG
 
JavaScript on the Desktop
JavaScript on the DesktopJavaScript on the Desktop
JavaScript on the Desktop
Domenic Denicola
 
VIMANTRA PHP SDK Introduction
VIMANTRA PHP  SDK IntroductionVIMANTRA PHP  SDK Introduction
VIMANTRA PHP SDK Introduction
Thomson Reuters
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at Google
Robert Nyman
 
FLAR Workflow
FLAR WorkflowFLAR Workflow
FLAR Workflow
Jesse Freeman
 
Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)
yann_s
 
Firefox OS workshop, Colombia
Firefox OS workshop, ColombiaFirefox OS workshop, Colombia
Firefox OS workshop, Colombia
Robert Nyman
 
MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)
Loiane Groner
 
Lessons Learned from building Session Replay - Francesco Novy
Lessons Learned from building Session Replay - Francesco NovyLessons Learned from building Session Replay - Francesco Novy
Lessons Learned from building Session Replay - Francesco Novy
Wey Wey Web
 
Web APIs & Apps - Mozilla
Web APIs & Apps - MozillaWeb APIs & Apps - Mozilla
Web APIs & Apps - Mozilla
Robert Nyman
 
JavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the PlatformJavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the Platform
Robert Nyman
 
Desmistificando o Phonegap (Cordova)
Desmistificando o Phonegap (Cordova)Desmistificando o Phonegap (Cordova)
Desmistificando o Phonegap (Cordova)
Loiane Groner
 
38199728 multi-player-tutorial
38199728 multi-player-tutorial38199728 multi-player-tutorial
38199728 multi-player-tutorial
alfrecaay
 

Similar to How to implement camera recording for USB webcam or IP camera in C#.NET (20)

06.Programming Media on Windows Phone
06.Programming Media on Windows Phone06.Programming Media on Windows Phone
06.Programming Media on Windows Phone
 
Web Standards for AR workshop at ISMAR13
Web Standards for AR workshop at ISMAR13Web Standards for AR workshop at ISMAR13
Web Standards for AR workshop at ISMAR13
 
Web versus Native: round 1!
Web versus Native: round 1!Web versus Native: round 1!
Web versus Native: round 1!
 
Power ai image-pipeline
Power ai image-pipelinePower ai image-pipeline
Power ai image-pipeline
 
Moustamera
MoustameraMoustamera
Moustamera
 
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
 
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
A Microsoft Silverlight User Group Starter Kit Made Available for Everyone to...
 
When Smalltalk Meets the Web
When Smalltalk Meets the WebWhen Smalltalk Meets the Web
When Smalltalk Meets the Web
 
JavaScript on the Desktop
JavaScript on the DesktopJavaScript on the Desktop
JavaScript on the Desktop
 
VIMANTRA PHP SDK Introduction
VIMANTRA PHP  SDK IntroductionVIMANTRA PHP  SDK Introduction
VIMANTRA PHP SDK Introduction
 
WebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at GoogleWebRTC & Firefox OS - presentation at Google
WebRTC & Firefox OS - presentation at Google
 
FLAR Workflow
FLAR WorkflowFLAR Workflow
FLAR Workflow
 
Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)
 
Firefox OS workshop, Colombia
Firefox OS workshop, ColombiaFirefox OS workshop, Colombia
Firefox OS workshop, Colombia
 
MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)MobileConf 2015: Desmistificando o Phonegap (Cordova)
MobileConf 2015: Desmistificando o Phonegap (Cordova)
 
Lessons Learned from building Session Replay - Francesco Novy
Lessons Learned from building Session Replay - Francesco NovyLessons Learned from building Session Replay - Francesco Novy
Lessons Learned from building Session Replay - Francesco Novy
 
Web APIs & Apps - Mozilla
Web APIs & Apps - MozillaWeb APIs & Apps - Mozilla
Web APIs & Apps - Mozilla
 
JavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the PlatformJavaScript APIs - The Web is the Platform
JavaScript APIs - The Web is the Platform
 
Desmistificando o Phonegap (Cordova)
Desmistificando o Phonegap (Cordova)Desmistificando o Phonegap (Cordova)
Desmistificando o Phonegap (Cordova)
 
38199728 multi-player-tutorial
38199728 multi-player-tutorial38199728 multi-player-tutorial
38199728 multi-player-tutorial
 

More from Ozeki Informatics Ltd.

What is OZEKI Camera SDK?
What is OZEKI Camera SDK?What is OZEKI Camera SDK?
What is OZEKI Camera SDK?
Ozeki Informatics Ltd.
 
7+1 key considerations before buying a VoIP PBX
7+1 key considerations before buying a VoIP PBX7+1 key considerations before buying a VoIP PBX
7+1 key considerations before buying a VoIP PBX
Ozeki Informatics Ltd.
 
Get the most out of your call center and make it more effective with Ozeki Ph...
Get the most out of your call center and make it more effective with Ozeki Ph...Get the most out of your call center and make it more effective with Ozeki Ph...
Get the most out of your call center and make it more effective with Ozeki Ph...
Ozeki Informatics Ltd.
 
#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1
#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1
#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1
Ozeki Informatics Ltd.
 
How can you use OzML API for developing VoIP applications (like IVR, Autodial...
How can you use OzML API for developing VoIP applications (like IVR, Autodial...How can you use OzML API for developing VoIP applications (like IVR, Autodial...
How can you use OzML API for developing VoIP applications (like IVR, Autodial...
Ozeki Informatics Ltd.
 
Ozeki Phone System XE - The best VoIP PBX for developers
Ozeki Phone System XE - The best VoIP PBX for developersOzeki Phone System XE - The best VoIP PBX for developers
Ozeki Phone System XE - The best VoIP PBX for developers
Ozeki Informatics Ltd.
 

More from Ozeki Informatics Ltd. (6)

What is OZEKI Camera SDK?
What is OZEKI Camera SDK?What is OZEKI Camera SDK?
What is OZEKI Camera SDK?
 
7+1 key considerations before buying a VoIP PBX
7+1 key considerations before buying a VoIP PBX7+1 key considerations before buying a VoIP PBX
7+1 key considerations before buying a VoIP PBX
 
Get the most out of your call center and make it more effective with Ozeki Ph...
Get the most out of your call center and make it more effective with Ozeki Ph...Get the most out of your call center and make it more effective with Ozeki Ph...
Get the most out of your call center and make it more effective with Ozeki Ph...
 
#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1
#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1
#1 How to develop a VoIP softphone in C# by using Ozeki VoIP SIP SDK - Part 1
 
How can you use OzML API for developing VoIP applications (like IVR, Autodial...
How can you use OzML API for developing VoIP applications (like IVR, Autodial...How can you use OzML API for developing VoIP applications (like IVR, Autodial...
How can you use OzML API for developing VoIP applications (like IVR, Autodial...
 
Ozeki Phone System XE - The best VoIP PBX for developers
Ozeki Phone System XE - The best VoIP PBX for developersOzeki Phone System XE - The best VoIP PBX for developers
Ozeki Phone System XE - The best VoIP PBX for developers
 

Recently uploaded

GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 

Recently uploaded (20)

GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 

How to implement camera recording for USB webcam or IP camera in C#.NET

  • 1. REC How to implement CAMERA RECORDING for USB WEBCAM or IP CAMERA in C#.NET ! SOURCE CODE: Welcome to this presentation that explains step-by-step how to develop video recording feature for your USB webcam and your IP camera / ONVIF IP camera in C#.NET to be able to capture and save the camera image. Good luck, have fun! www.camera-sdk.com
  • 2. Contents Prerequisites Creating a WPF project in Visual Studio Building a camera viewer Implementing the video recorder feature Testing the application ! SOURCE C2 O/ 1D7 E: www.camera-sdk.com
  • 3. Prerequisites Windows PC Broadband Internet connection USB webcam or IP camera connected to your network Microsoft Visual Studio + .NET Framework 4.0 OZEKI Camera SDK Note: Make sure that you have stable Internet connection, and your PC and the camera is connected to the same network. If it is needed, download and install the IDE and the .NET Framework from www.microsoft.comand the camera SDK from www.camera-sdk.com, too. 3 / 17
  • 4. Creating a WPF app in VS Creating a new project • Click on the „File” and choose the „New Project…” option • Choose the Visual C# WPF Application • Provide a name for your project and click on the „OK” Add the Camera SDK into the References • Right-click on the „References” • Click on the „Add Reference…” • Select the „Browse” tab and look for the „VoIPSDK.dll” • Select the .dll file and click on the „OK” 4 / 17
  • 5. Building a camera viewer Creating the GUI in the xaml file Create 2 buttons for USB camera connection and disconnection: <GroupBox Header="Connect to USB camera" Height="100" Width="150„ HorizontalAlignment="Left" VerticalAlignment="Top"> <Grid> <Button Content="Connect" Width="75" Margin="32,19,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="ConnectUSBCamera_Click"/> <Button Content="Disconnect" Width="75" Margin="32,46,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Click="DisconnectUSBCamera_Click"/> </Grid> </GroupBox> 5 / 17
  • 6. Building a camera viewer Creating the GUI in the xaml file Create 2 buttons and 3 textboxes (IP address, username, password) for IP cam connection/disconnection: <GroupBox Header="Connect to IP camera" Height="100" Width="387" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="155,0,0,0"> <Grid> <Label Height="25" Width="70" Content="Host" HorizontalAlignment="Left" VerticalAlignment="Top"/> <TextBox Name="HostTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Height="23" Width="169" Margin="68,2,0,0" TextWrapping="Wrap" /> <Label Height="25" Width="70" Content="Username" HorizontalAlignment="Left" Margin="0,26,0,0" VerticalAlignment="Top"/> <TextBox Name="UserTextBox" HorizontalAlignment="Left" VerticalAlignment="Top" Height="23" Width="169" Margin="68,29,0,0" TextWrapping="Wrap"/> <Label Height="25" Width="70" Content="Password" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,52,0,0" /> <PasswordBox Name="Password" HorizontalAlignment="Left" VerticalAlignment="Top" Height="25" Width="169" Margin="68,56,0,0"/> <Button Content="Connect" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="267,16,0,0" Width="75" Click="ConnectIPCamera_Click"/> <Button Content="Disconnect" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="267,43,0,0" Width="75" Click="DisconnectIPCamera_Click" /> </Grid> </GroupBox> 6 / 17
  • 7. Building a camera viewer Creating the GUI in the xaml file After you have created the GUI elements that allow the user to be able to connect to a USB or an IP camera, you need to build a „camera box” to be able to display the camera image in the GUI: <Grid Name="CameraBox" Margin="10,105,10,166"/> Set the window property as follows: ResizeMode="NoResize" WindowStartupLocation="CenterScreen"> 7 / 17
  • 8. Building a camera viewer Building the image displaying feature in the xaml.cs file In the xaml.cs file, first of all, you need to add some extra using lines. All the essential namespaces are determined by the camera software: using Ozeki.Media.IPCamera; using Ozeki.Media.MediaHandlers; using Ozeki.Media.MediaHandlers.Video; using Ozeki.Media.Video.Controls; After this, you need to add some objects that are needed for displaying the camera image: private VideoViewerWPF _videoViewerWpf; private BitmapSourceProvider _provider; private IIPCamera _ipCamera; private WebCamera _webCamera; private MediaConnector _connector; 8 / 17
  • 9. Building a camera viewer Building the image displaying feature in the xaml.cs file Instantiate the objects in the constructor and call the SetVideoViewer() helpfunction: public MainWindow() { InitializeComponent(); _connector = new MediaConnector(); _provider = new BitmapSourceProvider(); SetVideoViewer(); } Create the SetVideoViewer() helpfunction that creates and sets the videoviewer object and add it to the GUI: private void SetVideoViewer() { _videoViewerWpf = new VideoViewerWPF { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Background = Brushes.Black }; CameraBox.Children.Add(_videoViewerWpf); _videoViewerWpf.SetImageProvider(_provider); } 9 / 17
  • 10. Building a camera viewer Building the image displaying feature in the xaml.cs file Implement the USB camera connector and disconnector: private void ConnectUSBCamera_Click(object sender, RoutedEventArgs e) { _webCamera = WebCamera.GetDefaultDevice(); if (_webCamera == null) return; _connector.Connect(_webCamera, _provider); _webCamera.Start(); _videoViewerWpf.Start(); } private void DisconnectUSBCamera_Click(object sender, RoutedEventArgs e) { _videoViewerWpf.Stop(); _webCamera.Stop(); _webCamera.Dispose(); _connector.Disconnect(_webCamera, _provider); } 10 / 17
  • 11. Building a camera viewer Building the image displaying feature in the xaml.cs file Implement the IP camera connector/disconnector (including the required network parameters as well): private void ConnectIPCamera_Click(object sender, RoutedEventArgs e) { var host = HostTextBox.Text; var user = UserTextBox.Text; var pass = Password.Password; _ipCamera = IPCameraFactory.GetCamera(host, user, pass); if (_ipCamera == null) return; _connector.Connect(_ipCamera.VideoChannel, _provider); _ipCamera.Start(); _videoViewerWpf.Start(); } private void DisconnectIPCamera_Click(object sender, RoutedEventArgs e) { _videoViewerWpf.Stop(); _ipCamera.Disconnect(); _ipCamera.Dispose(); _connector.Disconnect(_ipCamera.VideoChannel, _provider); } 11 / 17
  • 12. Implementing the recording Extending the GUI in the xaml file Create 2 buttons that will start and stop the video capturing (after you have added the additional elements, you need to generate 2 eventhandler methods for them): <GroupBox Header="Function" Height="160" Width="542" Margin="0,360,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" > <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Button Grid.Column="0" Content="Start video capture" HorizontalAlignment="Center" VerticalAlignment="Center" Click="StartCapture_Click" Width="120" Height="50"/> <Button Grid.Column="1" Content="Stop video capture" HorizontalAlignment="Center" VerticalAlignment="Center" Click="StopCapture_Click" Width="120" Height="50"/> </Grid> </GroupBox> 12 / 17
  • 13. Implementing the recording Building the video recorder in the xaml.cs file Declare 2 new fields for video recording. These two objects are the followings: IVideoSender and MPEG4Recorder: private MPEG4Recorder _recorder; private IVideoSender _videoSender; You need to instantiate them at USB webcam connection and IP camera connection as well by inserting both of the following lines: _videoSender = _webCamera; _videoSender = _ipCamera.VideoChannel; Into the USB camera connection section: Into the IP camera connection section: 13 / 17
  • 14. Implementing the recording Building the video recorder in the xaml.cs file To differentiate the captured streams, their file name will contain the current date and time. The destination folder will be the place of the program. Instantiate the recorder and subscribe the eventhandler method for the MultiplexFinished event. Connect the videosender and the recorder: private void StartCapture_Click(object sender, RoutedEventArgs e) { if (_videoSender == null) return; var date = DateTime.Now.Year + "-" + DateTime.Now.Month + "-" + DateTime.Now.Day + "-" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second; var currentpath = AppDomain.CurrentDomain.BaseDirectory + date + ".mpeg4"; _recorder = new MPEG4Recorder(currentpath); _recorder.MultiplexFinished += _recorder_MultiplexFinished; _connector.Connect(_videoSender, _recorder.VideoRecorder); } 14 / 17
  • 15. Implementing the recording Building the video recorder in the xaml.cs file Create the eventhandler method. Unsubscribe from the event and dispose the recorder. To be able to stop capturing, you need to disconnect and call the Multiplex method that creates the video. void _recorder_MultiplexFinished(object sender, Ozeki.VoIP.VoIPEventArgs<bool> e) { _recorder.MultiplexFinished -= _recorder_MultiplexFinished; _recorder.Dispose(); } private void StopCapture_Click(object sender, RoutedEventArgs e) { if (_videoSender == null) return; _connector.Disconnect(_videoSender, _recorder.VideoRecorder); _recorder.Multiplex(); } 15 / 17
  • 16. Testing the application Run the application and test the video recorder Step 1: Connect to a camera • USB webcam: Click on „Connect” • IP camera: Enter the IP address of the camera, its username and password, then click on „Connect” Step 2: Start capturing Click on „Start video capture” Step 3: Finish capturing and save the video file Click on „Stop video capture” Step 4: Watch the video file 16 / 17
  • 17. Thank you for your attention! To sum it up, the ONVIF-compliant OZEKI Camera SDK provides great background support for your IP camera, ONVIF IP camera and USB webcam developments by offering prewritten components to your development environment. Building a video recorder to capture the camera stream is easy as that. For more information please visit our website: www.camera-sdk.com or send us an e-mail to: info@camera-sdk.com ! SOURCE CODE: www.camera-sdk.com