#
Video Fingerprinting SDK for C++
#
Overview
The Video Fingerprinting SDK for C++ provides a native implementation with direct access to high-performance video analysis and fingerprinting capabilities. This SDK is ideal for applications requiring:
- Maximum performance and minimal overhead
- Direct integration with native applications
- Custom memory management
- Real-time processing pipelines
- Embedded systems deployment
#
Key Features
#
Performance Advantages
- Native Performance - Direct memory access and optimized algorithms
- Zero Overhead - No managed runtime or garbage collection
- SIMD Optimization - Leverages CPU vectorization capabilities
- Parallel Processing - Multi-threaded fingerprint generation
- Custom Memory Management - Fine-grained control over memory allocation
#
Platform Support
- Windows - Visual Studio 2019+ (x64)
- Linux - GCC 9+ or Clang 10+
- macOS - Xcode 12+ (Intel and Apple Silicon)
#
Documentation
#
Getting Started
- Installation and Setup - Complete setup guide for all platforms
- API Reference - Comprehensive C++ API documentation
#
Core Concepts
- Understanding Video Fingerprinting - How the technology works
- Fingerprint Types - Compare vs Search fingerprints
#
Code Examples
#
Basic Fingerprint Generation
#include <VFPAnalyzer.h>
// Create analyzer instance
auto analyzer = std::make_unique<VFPAnalyzer>();
// Configure analysis parameters
VFPAnalyzerSettings settings;
settings.Mode = VFPAnalyzerMode::Search;
settings.FrameStep = 10;
// Set license key
analyzer->SetLicenseKey("your-license-key");
// Process video file
analyzer->StartAsync("input_video.mp4", "output.vfp", settings);
#
Comparing Two Videos
#include <VFPCompare.h>
// Create comparison instance
auto compare = std::make_unique<VFPCompare>();
// Set license
compare->SetLicenseKey("your-license-key");
// Load fingerprints
compare->LoadFingerprint("video1.vfp");
compare->LoadFingerprint("video2.vfp");
// Perform comparison
auto result = compare->Compare();
// Check similarity
std::cout << "Similarity: " << result.Similarity << "%" << std::endl;
if (result.IsMatch) {
std::cout << "Videos match!" << std::endl;
}
#
Integration Patterns
#
Memory-Efficient Processing
// Process large video collections with minimal memory
class VideoProcessor {
public:
void ProcessBatch(const std::vector<std::string>& videos) {
VFPAnalyzer analyzer;
analyzer.SetLicenseKey(m_licenseKey);
for (const auto& video : videos) {
// Process and immediately store/transmit fingerprint
analyzer.StartAsync(video,
[this](const std::string& fingerprint) {
// Store in database or send to server
StoreFingerprint(fingerprint);
});
}
}
};
#
Real-Time Stream Analysis
// Analyze live video streams
class StreamAnalyzer {
public:
void AnalyzeStream(const std::string& streamUrl) {
VFPAnalyzer analyzer;
VFPAnalyzerSettings settings;
settings.Mode = VFPAnalyzerMode::RealTime;
settings.BufferSize = 30; // 30 second buffer
analyzer.SetLicenseKey(m_licenseKey);
analyzer.StartStreamAnalysis(streamUrl, settings,
[](const VFPSegment& segment) {
// Process detected segments in real-time
ProcessSegment(segment);
});
}
};
#
Support and Resources
#
Documentation
#
Sample Code
- Complete Examples - Working code samples
- Command-line tools in SDK package
/samples/cpp/
#
Community and Support
#
License Registration
Register the SDK in your C++ application:
// In your initialization code
VFPAnalyzer analyzer;
analyzer.SetLicenseKey("your-license-key");
// Or globally for all instances
VFPLicense::SetGlobalKey("your-license-key");
#
Next Steps
- Install and Setup - Get started with the C++ SDK
- Review the API - Understand available classes and methods
- Explore Examples - See working code