EZVIZ Flutter SDK

A Flutter plugin for EZVIZ camera integration with live streaming, device management, PTZ control, and more.

pub package License Tests codecov

⚡ Quick Start

1. Install

flutter pub add ezviz_flutter

2. Configure Region (Important!)

import 'package:ezviz_flutter/ezviz_flutter.dart';

void main() {
  // Set your region BEFORE any API calls
  EzvizConstants.setRegion(EzvizRegion.europe);  // Match your account region
  runApp(MyApp());
}

3. Simple Player

EzvizSimplePlayer(
  deviceSerial: 'YOUR_DEVICE_SERIAL',
  channelNo: 1,
  config: EzvizPlayerConfig(
    appKey: 'YOUR_APP_KEY',
    appSecret: 'YOUR_APP_SECRET',
    region: EzvizRegion.usa,  // Optional: per-instance region
  ),
)

🌍 Region Configuration

⚠️ Most authentication issues are caused by incorrect region settings!

Your EZVIZ account is tied to a specific region. Set the correct one:

// Choose your region
EzvizConstants.setRegion(EzvizRegion.europe);      // Europe
EzvizConstants.setRegion(EzvizRegion.usa);         // USA/Canada
EzvizConstants.setRegion(EzvizRegion.india);       // India/South Asia
EzvizConstants.setRegion(EzvizRegion.singapore);   // Singapore/SEA
EzvizConstants.setRegion(EzvizRegion.china);       // China

📱 Platform Setup

Android Setup

  1. Add the following to your android/app/build.gradle:
android {
    compileSdkVersion 34
    
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 34
        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a"
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}
  1. Add permissions to android/app/src/main/AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

iOS Setup

  1. Add the following to your ios/Runner/Info.plist:
<key>NSCameraUsageDescription</key>
<string>This app needs camera access to view EZVIZ cameras</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app needs microphone access for audio streaming and intercom</string>
<key>NSLocalNetworkUsageDescription</key>
<string>This app needs local network access to connect to EZVIZ cameras</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to save screenshots and recordings</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs access to the photo library</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs location access for Wi-Fi configuration</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs location access for Wi-Fi configuration</string>
  1. Set minimum iOS version to 12.0 in ios/Runner.xcodeproj/project.pbxproj:
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
  1. In Xcode, add capabilities:
    • Access WiFi Information
    • Hotspot Configuration

✨ Key Features

  • Live Video Streaming - Real-time camera viewing
  • PTZ Control - Pan, tilt, zoom camera control
  • Device Management - Add, remove, manage devices
  • Audio/Intercom - Two-way audio communication
  • Recording - Video recording and screenshots
  • Wi-Fi Config - Device network setup
  • Multi-Region - Global deployment support

📚 Examples & Documentation

🆘 Need Help?

Can't authenticate? → Check your region configuration

Other issues? → See our FAQ & Troubleshooting Guide

More examples? → Check the example folder

🙏 Credits and Acknowledgments

This library integrates and builds upon code from several sources:

Native SDK Integration

flutter_ezviz by pam3ec555: Native Android and iOS SDK implementation for EZVIZ cameras

  • Original native SDK wrapper and player components
  • Device management and PTZ control functionality
  • Core platform channel communication

Enhanced Features

ezviz_flutter_cam by thanhdang198

  • Audio and intercom functionality
  • Recording and screenshot capabilities
  • Wi-Fi configuration features
  • Enhanced UI components and controls
  • Advanced playback controls (pause/resume)

We extend our gratitude to the original authors and contributors of these repositories for their excellent work in EZVIZ SDK integration. This library combines the best features from both implementations to provide a comprehensive Flutter plugin for EZVIZ camera integration.

Original Repositories

📄 License

MIT License - see LICENSE file for details.