Capture Manager SDK - new solution for capturing live video and audio from web cameras on Windows OS
Capture Manager SDK allows you include into your software solutions easy supporting of working with web cameras. This SDK is based on Microsoft Media Foundation which is included into the regular Windows OS editions.
Microsoft Media Foundation is new technology of Microsoft which was introduced since Windows Vista, but only since Windows 7 it has got supporting of interfaces for capturing video and audio from web cameras.
Reason to use this SDK
For long time the main technology of capturing video and audio on Windows OS was DirectShow. I wrote many applications which included working with web cameras via DirectShow, but since programming on Windows 8 I found unpleasant fact - old code which worked well on Windows XP, Windows Vista and Windows 7 had started work with some problems on Windows 8. After some researching I found that Microsoft had introduced Media Foundation and had limited working of DirectShow with the new generation of web cameras. I spent much time on researching of that new thechnology and wrote two simple libraries for capturing live video from web cameras by Microsoft Media Foundation: Capturing Video from Web-camera on Windows 7 and 8 by using Media Foundation and Capturing Live-video from Web-camera on Windows 7 and Windows 8. However, Microsoft Media Foundation is more powerful and allows to build complex solutions for viewing, recording, broadcasting live video and audio from web cameras, but it is difficult technology for understanding of it. I have decided to write simple SDK which can hide the main difficult parts of Microsoft Media Foundation and can present only the most interesting aspects of that technology. Freeware version of this SDK is presented by link Capture Manager SDK.
This commercial version of Capture Manager SDK has some unique features:
- Using encoders which are already embedded into Windows OS;
- Using Microsoft’s format of video and audio files;
- Capturing screen image into video file;
- Capturing speaker audio signals into audio file;
- Support recording synchronised video and audio from web camera;
- Support recording synchronised video from many web cameras into the one video file;
- Support recording synchronised video and audio from many web cameras and screen capture into the one media file;
- Support steaming live video and audio from many web cameras and screen captute into the local network and the Internet;
- Easy way for changing of web camera options: brightness, contrast, focus and others;
- Easy way for changing of encoder settings;
CaptureManager SDK has many encoders and media containers. They include video encoders:
- Microsoft H264;
- Intel® Quick Sync Video hardware H264;
- Microsoft HEVC(H265);
- Microsoft WMVideo7/8;
- Microsoft WMVideo9;
- Microsoft WMVideo9 Screen Encoder;
- Microsoft WMAudio;
- Microsoft MP3;
- Microsoft MPEG2 Audio;
- Microsoft AAC;
- Microsoft DolbyDigital;
- ASF format;
- AVI format;
- MP4 format;
webcamera properties are extended:
- Power line frequency;
- Amount of digital zoom;
- Upper limit for the amount of digital zoom.
This release includes the next changings:
- Deleted old functionality of working with CaptureManager via library linking.
- Lazy binding of Microsoft Media Foundation functions.
- Replace web camera properties functionality from DirectShow on
- Add resizing in EVR.
SampleGrabberCallSinkFactory- the new mode which allows to take a single sample.
- Add sample accumulator nodes for storing of 5 or 10 last samples in media stream.
- Add supporting of video capturing via DirectShow Crossbar technique for the next inputs: Composite, SVideo, USB, 1394 (FireWire).
- COM ThreadingModel has been changed from Apartment on Both.
- Add supporting for changing of cursor presenting in Screen Capture source: make cursor invisible and add drawing additional image for current cursor's image.
- Add supporting for using of custom Microsoft Media Foundation Transform for implementation of custom effects.
- Add supporting of multidisplay outputs.
- Add supporting of DirectShow software filters.
- Resolved losing of frames while storing video in AVI file.
IEVRStreamControlinterfaces with supporting of 8 rendering sinks.
IInitilaizeCaptureSource, ICurrentMediaType, ISourceRequestResult, ICaptureProcessorinterfaces.
Lazy binding of functions is implemented by loading of Microsoft Media Foundation libraries at runtime. Functions which cannot be found in Microsoft Media Foundation libraries are replaced by stub functions. It allows prevent crushing of applications by using of unsupported functions of Microsoft Media Foundation libraries.
DeviceIoControl for changing of web camera properties allows resolve problem with delay of web camera driver initialization.
Resizing in EVR resolves problem with unchanging image size of rendered video. The new implementation controls current image size of renderer GUI and changes image size and position for keeping proportion of video.
All these features are base on the libraries which are already exist in core of Windows 7, Windows 8 and Windows 10. It allows develop simple solutions with supporting of the most popular formats.
Of course, using of encoders and file container which are campatibile with other OSs is useful (especially AVI container, because it is possible to write raw video data of YVY2 or RGB24 into the file and easy extracts seperated frames without decoding with using of very simple code), but it needs to pay attention on some limitations.
Good working of SDK code and playible video and audio files are guaranty only on Windows 8 and Windows 10 Desktop editions.
Capture Manager SDK content:
- CaptureManagerSDKDemo - collection of demo programs (EVRWebCapViewerViaCOMServer - C++, OpenGLWebCamViewer - C++, OpenGLWebCamViewerViaCOMServer - C++, CaptureManagerToCSharpProxy - C#, WPFSourceInfoViewer - C#, WPFWebViewerCall - C#, WPFWebViewerCallback - C#, WPFWebViewerEVR - C#, WPFRecording - C#, ScreenStreamer - C#, WPFWebCamSerialShots - C#, WPFWebCamShot - C#, PythonDemo - Python 2.7, WindowsStore: CaptureManagerToWinRTProxy - C++/CX, CameraSession - C#, PhotoDisplayComponent - C++/CX, WindowsStoreCam - C++/CX);
- CaptureManagerTypeInfo - collection files of COM interfaces;
- Doc - documentation about Capture Manager SDK;
- x64 - collection files of Capture Manager SDK for development on x64 Windows OS;
- x86 - collection files of Capture Manager SDK for development on x86 Windows OS;