1. Go to this page and download the library: Download mimicak/camera-capture library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mimicak / camera-capture example snippets
ameraCapture\CameraCapture;
use CameraCapture\CameraTypes;
use CameraCapture\Exception\CameraCaptureException;
// Define camera configurations
$cameraConfigs = [
[
'id' => 'front_door_cam',
'type' => CameraTypes::TYPE_HIKVISION,
'brand' => 'Hikvision',
'model' => 'DS-2CD2345FWD-I',
'host' => '192.168.1.3', // Replace with your camera's IP
'username' => 'admin',
'password' => 'your_password',
'protocol' => 'https', // Use 'http' if HTTPS is not otocol' => 'https',
'options' => [
'snapshotUrlPath' => '/cgi-bin/currentpic.cgi',
'connectTimeout' => 10,
'timeout' => 15,
'verifySsl' => false,
],
],
];
// Initialize the library
$cameraLibrary = new CameraCapture();
try {
// Add cameras
$cameraLibrary->addCameras($cameraConfigs);
echo "Successfully added " . count($cameraLibrary->getAllCameras()) . " cameras.\n";
// List camera information
echo "\nCamera Information:\n";
foreach ($cameraLibrary->getAllCameras() as $id => $camera) {
echo "ID: {$id}, Brand: {$camera->getBrand()}, Model: " .
($camera->getModel() ?? 'N/A') . ", Host: {$camera->getHost()}\n";
}
// List available brands
echo "\nAvailable Brands:\n";
$brands = $cameraLibrary->getAvailableBrands();
echo "Brands: " . implode(', ', $brands) . "\n";
// Capture images
echo "\nCapturing Images:\n";
foreach (['front_door_cam', 'backyard_cam'] as $cameraId) {
try {
$imageData = $cameraLibrary->captureImage($cameraId);
$filename = "snapshots/{$cameraId}_snapshot.jpg";
if (!is_dir('snapshots')) {
mkdir('snapshots', 0755, true);
}
file_put_contents($filename, $imageData);
echo "Captured image from $cameraId. Saved as $filename (" . strlen($imageData) . " bytes).\n";
} catch (CameraCaptureException $e) {
echo "Error capturing image from $cameraId: " . $e->getMessage() . "\n";
}
}
// Test error handling with a non-existent camera
echo "\nError Handling Example (non-existent camera):\n";
try {
$cameraLibrary->captureImage('non_existent_cam');
} catch (CameraCaptureException $e) {
echo "Caught expected error: " . $e->getMessage() . "\n";
}
// Remove a camera
echo "\nRemoving Camera:\n";
if ($cameraLibrary->removeCamera('front_door_cam')) {
echo "Successfully removed front door camera.\n";
} else {
echo "Front door camera not found for removal.\n";
}
// List remaining cameras
echo "\nCameras Remaining:\n";
$remainingCameras = array_keys($cameraLibrary->getAllCameras());
echo "Remaining cameras: " . (empty($remainingCameras) ? "None" : implode(', ', $remainingCameras)) . "\n";
} catch (CameraCaptureException $e) {
echo "Error: " . $e->getMessage() . "\n";
}
$factory = new CameraFactory();
$factory->registerCameraType(CameraTypes::TYPE_AXIS, function (array $config) {
return new AxisCamera($config['id'], $config['brand'], $config['host'], ...);
});
use PHPUnit\Framework\TestCase;
use CameraCapture\CameraCapture;
class CameraCaptureTest extends TestCase
{
public function testAddCameraDuplicateId()
{
$factory = $this->createMock(\CameraCapture\CameraFactory::class);
$library = new CameraCapture($factory);
$config = ['id' => 'test', 'type' => 'test', 'brand' => 'Test', 'host' => 'localhost'];
$camera = $this->createMock(\CameraCapture\CameraInterface::class);
$factory->method('createCamera')->willReturn($camera);
$library->addCamera($config);
$this->expectException(\CameraCapture\Exception\CameraCaptureException::class);
$library->addCamera($config);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.