Rewrite Strix from scratch as single binary

Complete architecture rewrite following go2rtc patterns:
- pkg/ for pure logic (camdb, tester, probe, generate)
- internal/ for application glue with Init() modules
- Single HTTP server on :4567 with all endpoints
- zerolog with password masking and memory ring buffer
- Environment-based config only (no YAML files)

API endpoints: /api/search, /api/streams, /api/test,
/api/probe, /api/generate, /api/health, /api/log

Dependencies: go2rtc v1.9.14, go-sqlite3, miekg/dns, zerolog
This commit is contained in:
eduard256 2026-03-25 10:38:46 +00:00
parent 3b29188924
commit 27117900eb
3742 changed files with 2801 additions and 283718 deletions

View file

@ -1,52 +0,0 @@
# Git
.git
.gitignore
.github
# IDE
.vscode
.idea
*.swp
*.swo
*~
# Build artifacts
bin/
dist/
*.exe
*.dll
*.so
*.dylib
# Test files
*.test
*_test.go
coverage.*
*.out
# Logs
*.log
strix.log
# Config files (user-specific)
strix.yaml
test_*.yaml
config.yaml
# Temporary files
tmp/
temp/
*.dump
*_output.txt
# Documentation (included in image metadata instead)
*.md
!README.md
# OS files
.DS_Store
Thumbs.db
# Development
.env
.env.local

53
.gitignore vendored
View file

@ -1,50 +1,7 @@
# Binaries
bin/
# Binary
strix
main
*.exe
*.exe~
*.dll
*.so
*.dylib
# Test binaries
*.test
# Output of the go coverage tool
*.out
coverage.html
# Go workspace file
go.work
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
# OS
.DS_Store
Thumbs.db
# Logs
*.log
# Environment
.env
.env.local
# Temporary files
tmp/
temp/
*.dump
*_output.txt
# Configuration (user-specific)
strix.yaml
# Node.js / NPM
node_modules/
package-lock.json
# SQLite database files
*.db
*.db-shm
*.db-wal

View file

@ -1,111 +0,0 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.0.11] - 2026-03-19
### Added
- Project icon assets (SVG, 192x192 PNG, 512x512 PNG) for use in app stores and integrations
### Fixed
- Health endpoint now accepts HEAD requests for Docker and CasaOS healthcheck compatibility
- Registered HEAD route in chi router for /api/v1/health endpoint
## [1.0.10] - 2026-03-17
### Added
- Device probe endpoint (GET /api/v1/probe) for network device inspection
- HTTP prober for detecting camera web interfaces
- mDNS discovery for local network devices
- ARP/OUI vendor identification with camera OUI database (2,400+ entries)
- Probe integration into frontend with modal UI
- Added Trassir and ZOSI to OUI database
### Changed
- Removed CI/CD pipelines (GitHub Actions), replaced with local Docker builds
- Removed GoReleaser, unified Docker image for Docker Hub and HA add-on
- Application version now injected at build time via ldflags
- HA add-on reads /data/options.json natively (no more entrypoint script)
- Optimized mDNS discovery timeout
### Fixed
- Removed experimental SSE warning from Home Assistant Add-on documentation
- Clear probe-filled fields when navigating back in frontend
## [1.0.9] - 2025-12-11
### Fixed
- Fixed real-time SSE streaming in Home Assistant Ingress mode
- SSE events now arrive immediately instead of being buffered until completion
### Technical
- Added automatic detection of Home Assistant Ingress via X-Ingress-Path header
- Implemented 64KB padding for SSE events to overcome aiohttp buffer in HA Supervisor
- Adjusted progress update interval to 3 seconds in Ingress mode to reduce traffic
- Normal mode (Docker/direct access) remains unchanged
## [1.0.8] - 2025-11-26
### Changed
- Updated Docker deployment to use host network mode for better compatibility
- Modified docker-compose.yml to use `network_mode: host`
- Updated installation commands to use `--network host` flag
- Removed port mappings as they are not needed with host network mode
### Improved
- Better compatibility with unprivileged LXC containers
- Simplified Docker networking configuration
- Direct network access for improved camera discovery performance
## [1.0.7] - 2025-11-23
### Fixed
- Fixed channel numbering for Hikvision-style cameras (reported by @sergbond_com)
- Removed invalid test data from Hikvision database
- Fixed brand+model search matching in stream discovery
### Added
- Universal `[CHANNEL+1]` placeholder support for flexible channel numbering
- Support for both 0-based (channel=0 → 101) and 1-based (channel=1 → 101) channel selection
- Added 6 high-priority Hikvision patterns to popular stream patterns database
### Changed
- Updated 14 camera brands with universal channel patterns (Hikvision, Hiwatch, Annke, Swann, Abus, 7links, LevelOne, AlienDVR, Oswoo, AV102IP-40, Acvil, TBKVision, Deltaco, Night Owl)
- Hikvision: replaced 10 hardcoded patterns with 6 universal patterns
- Hiwatch: replaced 4 hardcoded patterns with 8 universal patterns (including ISAPI variants)
- Universal patterns now tested first for faster discovery, hardcoded patterns kept as fallback
- Improved stream discovery performance with intelligent pattern ordering
### Technical
- Added support for `[CHANNEL+1]`, `[channel+1]`, `{CHANNEL+1}`, `{channel+1}` placeholders in URL builder
- Modified 16 files: +2448 additions, -1954 deletions
## [0.1.0] - 2025-11-06
### Added
- 🦉 Initial release of Strix
- 🌐 Web-based user interface for camera stream discovery
- 🔍 Automatic RTSP stream discovery for IP cameras
- 📹 Support for multiple camera manufacturers
- 🎯 ONVIF device discovery and PTZ endpoint detection
- 🔐 Credential embedding in stream URLs
- 📊 Camera model database with autocomplete search
- 🎨 Modern, responsive UI with purple owl logo
- ⚙️ Configuration export for Go2RTC and Frigate
- 🔄 Dual-stream support with optional sub-stream selection
- 📡 Server-Sent Events (SSE) for real-time discovery progress
- 🚀 RESTful API for camera search and stream discovery
- 📦 Cross-platform support (Linux, Windows, macOS)
- 🏗️ Built with Go for high performance
### Features
- **Web Interface**: Clean, intuitive UI for camera configuration
- **Stream Discovery**: Automatically finds working RTSP streams
- **ONVIF Support**: Discovers ONVIF devices and PTZ capabilities
- **Multi-Platform**: Binaries for Linux (amd64, arm64, arm/v7), Windows, and macOS
- **Easy Integration**: Export configs for popular NVR systems
[0.1.0]: https://github.com/eduard256/Strix/releases/tag/v0.1.0

View file

@ -1,185 +0,0 @@
# Результаты тестирования дедупликации потоков
## Запуск тестов
```bash
go test -v ./internal/camera/stream -run "Dedup|Worst|Multiple"
```
## ✅ Тесты выполнены успешно
Все тесты **PASS**, что означает, что они успешно **ДЕМОНСТРИРУЮТ ПРОБЛЕМУ** текущей системы дедупликации.
---
## 📊 Результаты
### Тест 1: HTTP Authentication Variants
**Проблема:** Один HTTP endpoint генерирует 4 разных URL
```
http://192.168.1.100/snapshot.jpg
http://admin:12345@192.168.1.100/snapshot.jpg
http://192.168.1.100/snapshot.jpg?pwd=12345&user=admin
http://admin:12345@192.168.1.100/snapshot.jpg?pwd=12345&user=admin
```
- **Реально уникальных:** 1 поток
- **Генерируется:** 4 URL
- **Потери:** 3 лишних теста (75%)
---
### Тест 2: HTTP with Placeholders
**Проблема:** URL с плейсхолдерами генерирует дубликаты
```
Entry: snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]
Generated:
http://192.168.1.100/snapshot.cgi?pwd=&user=
http://admin:12345@192.168.1.100/snapshot.cgi?pwd=&user=
http://192.168.1.100/snapshot.cgi?pwd=12345&user=admin
http://admin:12345@192.168.1.100/snapshot.cgi?pwd=12345&user=admin
```
- **Реально уникальных:** 1 поток
- **Генерируется:** 4 URL
- **Потери:** 3 лишних теста (75%)
---
### Тест 3: RTSP with/without Credentials
**Проблема:** RTSP генерирует 2 варианта одного потока
```
rtsp://admin:12345@192.168.1.100/live/main
rtsp://192.168.1.100/live/main
```
- **Реально уникальных:** 1 поток
- **Генерируется:** 2 URL
- **Потери:** 1 лишний тест (50%)
---
### Тест 4: Multiple Sources (Popular + Model)
**Проблема:** Разные источники генерируют одинаковые паттерны
```
Source 1 (Popular Patterns):
rtsp://admin:12345@192.168.1.100/Streaming/Channels/101
rtsp://192.168.1.100/Streaming/Channels/101
Source 2 (Model Patterns):
rtsp://admin:12345@192.168.1.100/Streaming/Channels/101
rtsp://192.168.1.100/Streaming/Channels/101
```
**Текущая дедупликация:**
- Детектирует: 2 точных совпадения (50%)
- НЕ детектирует: 1 семантический дубль
**Итого:**
- Total generated: 4 URL
- After current dedup: 2 URL
- Real unique: 1 поток
- **Эффективность: 50%** (должна быть 75%)
---
### Тест 5: Worst Case Scenario
**Проблема:** Один паттерн из 3 источников (Popular + Model + ONVIF)
```
Popular patterns generates: 4 URLs
Model patterns generates: 4 URLs
ONVIF returns: 1 URL
```
**После текущей дедупликации:** 4 URL остаются
```
http://192.168.1.100/snapshot.jpg
http://admin:12345@192.168.1.100/snapshot.jpg
http://192.168.1.100/snapshot.jpg?pwd=12345&user=admin
http://admin:12345@192.168.1.100/snapshot.jpg?pwd=12345&user=admin
```
**Canonical analysis:**
- Real unique streams: **1**
- URLs being tested: **4**
- **Waste: 3 unnecessary tests (75%)**
- **Time waste: ~6 seconds** (assuming 2s per test)
---
## 🔴 Критические выводы
### 1. Текущая система НЕ работает для семантических дубликатов
Простое сравнение строк `urlMap[url] = true` детектирует только **точные совпадения**.
### 2. Масштаб проблемы
| Сценарий | Генерируется | Реально | Потери |
|----------|--------------|---------|--------|
| HTTP auth variants | 4 | 1 | 75% |
| RTSP with/without creds | 2 | 1 | 50% |
| Multiple sources | 4 | 1 | 75% |
| Worst case | 4 | 1 | 75% |
**Среднее:** ~69% лишних тестов!
### 3. Реальные последствия
При типичном сканировании:
- **Генерируется:** ~190 URL
- **Реально уникальных:** ~80-95
- **Лишних тестов:** 95-110 (50%)
- **Потери времени:** 3-4 минуты
- **Лишняя нагрузка на камеру:** 100+ запросов
- **Плохой UX:** пользователь видит один поток 4 раза
---
## ✅ Решение
Тесты доказывают необходимость **канонической нормализации URL**.
См. файл `/tmp/dedup_solutions.md` для подробного описания решений.
### Рекомендуемый подход: Гибридный
1. **В Builder:** Уменьшить генерацию вариантов (с 4 до 2-3)
2. **В Scanner:** Добавить `CanonicalURL()` функцию
3. **Ожидаемый результат:** Дедупликация 99% вместо текущих 50%
---
## 📝 Следующие шаги
1. ✅ Написать тесты (done)
2. ⏳ Реализовать `normalizer.go` с `CanonicalURL()`
3. ⏳ Модифицировать `Builder.BuildURLsFromEntry()` - убрать лишние варианты
4. ⏳ Модифицировать `Scanner.collectStreams()` - использовать canonical map
5. ⏳ Добавить метрики дедупликации в логи
6. ⏳ Прогнать тесты заново и убедиться в улучшении
---
## 🎯 Ожидаемый результат
После внедрения решения:
```
Real unique streams: 1
URLs being tested: 1 ← вместо 4
Waste: 0 unnecessary tests (0%) ← вместо 75%
Deduplication effectiveness: 99% ← вместо 50%
```

246
DOCKER.md
View file

@ -1,246 +0,0 @@
# 🐳 Docker Setup for Strix
## Quick Start
### Using Docker Compose (Recommended)
```bash
# Start Strix
docker-compose up -d
# View logs
docker-compose logs -f strix
# Stop Strix
docker-compose down
```
Access: http://localhost:4567
### Using Docker Run
```bash
docker run -d \
--name strix \
-p 4567:4567 \
eduard256/strix:latest
```
## Configuration
### Using Environment Variables
```bash
docker run -d \
--name strix \
-p 8080:8080 \
-e STRIX_API_LISTEN=:8080 \
-e STRIX_LOG_LEVEL=debug \
eduard256/strix:latest
```
### Using Config File
```bash
# Create strix.yaml
cat > strix.yaml <<EOF
api:
listen: ":8080"
EOF
# Run with mounted config
docker run -d \
--name strix \
-p 8080:8080 \
-v $(pwd)/strix.yaml:/app/strix.yaml:ro \
eduard256/strix:latest
```
## Full Stack (Strix + go2rtc + Frigate)
```bash
docker-compose -f docker-compose.full.yml up -d
```
Services:
- Strix: http://localhost:4567
- go2rtc: http://localhost:1984
- Frigate: http://localhost:5000
## Podman
Strix uses raw sockets for network scanning. Podman drops these capabilities by default,
so you need to add them explicitly. Rootless mode does not support host network scanning —
run with `sudo`.
### Using Podman Run
```bash
sudo podman run -d \
--name strix \
--network host \
--cap-add=NET_RAW \
--cap-add=NET_ADMIN \
--restart unless-stopped \
eduard256/strix:latest
```
- `NET_RAW` — required for network scanning (ARP, ICMP) to discover cameras
- `NET_ADMIN` — required for network interface and routing operations
### Using Podman Compose
```yaml
version: '3'
services:
strix:
image: eduard256/strix:latest
container_name: strix
restart: unless-stopped
network_mode: host
cap_add:
- NET_RAW
- NET_ADMIN
environment:
- STRIX_LOG_LEVEL=info
- STRIX_LOG_FORMAT=json
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:4567/api/v1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
```
```bash
sudo podman-compose up -d
```
### Using Quadlet (systemd)
Recommended for production. Create `/etc/containers/systemd/strix.container`:
```ini
[Unit]
Description=Strix Camera Stream Discovery
After=network-online.target
Wants=network-online.target
[Container]
Image=docker.io/eduard256/strix:latest
ContainerName=strix
Network=host
AddCapability=CAP_NET_RAW CAP_NET_ADMIN
Environment=STRIX_LOG_LEVEL=info
Environment=STRIX_LOG_FORMAT=json
AutoUpdate=registry
[Install]
WantedBy=multi-user.target
```
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now strix
sudo systemctl status strix
```
Quadlet auto-generates a systemd service from the `.container` file.
The container starts on boot and restarts on failure automatically.
## Building Locally
```bash
# Build for your platform
docker build -t strix:local .
# Build for multiple platforms
docker buildx build --platform linux/amd64,linux/arm64 -t strix:multi .
```
## Image Information
- **Image**: `eduard256/strix:latest`
- **Platforms**: linux/amd64, linux/arm64
- **Size**: ~80-90MB
- **Base**: Alpine Linux
- **User**: Non-root (strix:1000)
## Included Dependencies
- ffmpeg/ffprobe (stream validation)
- ca-certificates (HTTPS support)
- tzdata (timezone support)
- wget (healthcheck)
- Camera database (3600+ models)
## Health Check
```bash
# Check container health
docker inspect --format='{{.State.Health.Status}}' strix
# Manual health check
docker exec strix wget -q -O- http://localhost:4567/api/v1/health
```
## Troubleshooting
### View logs
```bash
docker logs strix
docker logs -f strix # Follow logs
```
### Check if ffprobe works
```bash
docker exec strix ffprobe -version
```
### Inspect container
```bash
docker exec -it strix sh
```
### Restart container
```bash
docker restart strix
```
## Security
- Runs as non-root user (UID 1000)
- Minimal attack surface (Alpine base)
- No unnecessary packages
- Health checks enabled
## Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `STRIX_API_LISTEN` | `:4567` | Server listen address |
| `STRIX_LOG_LEVEL` | `info` | Log level (debug, info, warn, error) |
| `STRIX_LOG_FORMAT` | `json` | Log format (json, text) |
| `STRIX_DATA_PATH` | `./data` | Camera database path |
## Volumes
```bash
# Optional: Custom configuration
-v ./strix.yaml:/app/strix.yaml:ro
# Optional: Custom camera database
-v ./data:/app/data:ro
```
## Docker Hub
Pre-built images available at: https://hub.docker.com/r/eduard256/strix
Tags:
- `latest` - Latest stable release
- `v0.1.0` - Specific version
- `0.1` - Minor version
- `0` - Major version
- `main` - Development branch

View file

@ -1,69 +0,0 @@
# Strix - Smart IP Camera Stream Discovery System
# Multi-stage Dockerfile for minimal image size
# Stage 1: Builder
FROM golang:1.24-alpine AS builder
ARG VERSION=dev
WORKDIR /build
# Install build dependencies
RUN apk add --no-cache git
# Copy go mod files
COPY go.mod go.sum ./
RUN go mod download
# Copy source code
COPY . .
# Build static binary
RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build \
-ldflags="-s -w -X main.Version=${VERSION}" \
-o strix \
cmd/strix/main.go
# Stage 2: Runtime
FROM alpine:latest
# Install runtime dependencies
# - ffmpeg/ffprobe: Required for RTSP stream validation
# - ca-certificates: Required for HTTPS requests to cameras
# - tzdata: Required for correct timestamps
# - wget: Required for healthcheck
RUN apk add --no-cache \
ffmpeg \
ca-certificates \
tzdata \
wget \
&& rm -rf /var/cache/apk/*
WORKDIR /app
# Copy binary from builder
COPY --from=builder /build/strix .
# Copy camera database (CRITICAL - app won't work without it)
COPY --from=builder /build/data ./data
# Create directory for optional config
RUN mkdir -p /app/config
# Create non-root user for security
RUN addgroup -g 1000 strix && \
adduser -D -u 1000 -G strix strix && \
chown -R strix:strix /app
# Switch to non-root user
USER strix
# Expose default port
EXPOSE 4567
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:4567/api/v1/health || exit 1
# Start application
CMD ["./strix"]

View file

@ -1,155 +0,0 @@
# Frigate Configuration - Запись по движению с детекцией объектов
Конфигурация для Frigate с записью при обнаружении движения и детекцией объектов (person, car, cat, dog).
## Dual-Stream конфиг (Main + Sub) - РЕКОМЕНДУЕТСЯ
Используется sub stream для детекции (экономия CPU), main stream для записи (качество).
```yaml
mqtt:
enabled: false
# Глобальные настройки записи
record:
enabled: true
retain:
days: 7
mode: motion # Записывать только при движении
# Go2RTC Configuration (Frigate built-in)
go2rtc:
streams:
'10_0_20_112_main':
- rtsp://admin:password@10.0.20.112/live/main
'10_0_20_112_sub':
- rtsp://admin:password@10.0.20.112/live/sub
# Frigate Camera Configuration
cameras:
camera_10_0_20_112:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/10_0_20_112_sub
input_args: preset-rtsp-restream
roles:
- detect
- path: rtsp://127.0.0.1:8554/10_0_20_112_main
input_args: preset-rtsp-restream
roles:
- record
live:
streams:
Main Stream: 10_0_20_112_main # HD для просмотра
Sub Stream: 10_0_20_112_sub # Низкое разрешение (опционально)
objects:
track:
- person
- car
- cat
- dog
record:
enabled: true
version: 0.16-0
```
## Single-Stream конфиг (Main только)
Когда нет sub stream - используется main для детекции и записи.
```yaml
mqtt:
enabled: false
# Глобальные настройки записи
record:
enabled: true
retain:
days: 7
mode: motion # Записывать только при движении
# Go2RTC Configuration (Frigate built-in)
go2rtc:
streams:
'10_0_20_112_main':
- rtsp://admin:password@10.0.20.112/stream1
# Frigate Camera Configuration
cameras:
camera_10_0_20_112:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/10_0_20_112_main
input_args: preset-rtsp-restream
roles:
- detect
- record
objects:
track:
- person
- car
- cat
- dog
record:
enabled: true
version: 0.16-0
```
## Режимы записи
### `mode: motion` (рекомендуется)
Записывает видео при обнаружении движения. Экономит место на диске.
### `mode: active_objects`
Записывает только когда обнаружены объекты (person, car, etc). Еще больше экономия.
### `mode: all`
Записывает постоянно 24/7. Требует много места на диске.
## Преимущества Dual-Stream подхода
**Низкая нагрузка на CPU** - детекция на sub stream (обычно 352x288 или 640x480)
**Качественная запись** - запись на main stream в полном разрешении (HD/4K)
**Быстрая детекция** - меньше пикселей = быстрее обработка
**Авто-определение разрешения** - Frigate сам определяет параметры потока
**Одно подключение к камере** - Go2RTC мультиплексирует потоки
## Что делает этот конфиг
**Детекция** - работает постоянно, ищет объекты
**Запись** - начинается при движении
**Объекты** - распознает person, car, cat, dog
**Хранение** - 7 дней записи
**Snapshots** - сохраняются автоматически при детекции
## Добавление других объектов
Чтобы добавить больше объектов для детекции, измените секцию `objects.track`:
```yaml
objects:
track:
- person
- car
- cat
- dog
- motorcycle # Мотоциклы
- bicycle # Велосипеды
- truck # Грузовики
- bus # Автобусы
```
Полный список доступных объектов: https://docs.frigate.video/configuration/objects/
## Примечания
- Dual-stream экономит CPU, используйте когда камера поддерживает sub stream
- Single-stream проще, но требует больше CPU для детекции (особенно на 4K)
- Frigate автоматически определяет разрешение потоков, блок `detect` не нужен
- Запись по движению экономит место, но может пропустить начало события
- Для непрерывной записи используйте `mode: all`
- Frigate автоматически управляет удалением старых записей
- Main stream поддерживает любое разрешение: HD (1920x1080), 4K (3840x2160) и выше

21
LICENSE
View file

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2025 eduard256
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

147
Makefile
View file

@ -1,147 +0,0 @@
.PHONY: all build clean run test install deps fmt vet lint
# Variables
BINARY_NAME=strix
BINARY_PATH=bin/$(BINARY_NAME)
MAIN_PATH=cmd/strix/main.go
GO=go
GOFLAGS=-v
LDFLAGS=-ldflags "-s -w -X main.Version=$$(git describe --tags --always --dirty 2>/dev/null || echo 'dev')"
# Default target
all: build
# Build the application
build:
@echo "Building $(BINARY_NAME)..."
@mkdir -p bin
$(GO) build $(GOFLAGS) $(LDFLAGS) -o $(BINARY_PATH) $(MAIN_PATH)
@echo "Build complete: $(BINARY_PATH)"
# Run the application
run: build
@echo "Running $(BINARY_NAME)..."
./$(BINARY_PATH)
# Clean build artifacts
clean:
@echo "Cleaning..."
@rm -rf bin/
@$(GO) clean
@echo "Clean complete"
# Install dependencies
deps:
@echo "Installing dependencies..."
$(GO) mod download
$(GO) mod tidy
@echo "Dependencies installed"
# Format code
fmt:
@echo "Formatting code..."
$(GO) fmt ./...
@echo "Code formatted"
# Run vet
vet:
@echo "Running go vet..."
$(GO) vet ./...
@echo "Vet complete"
# Run linter (requires golangci-lint)
lint:
@echo "Running linter..."
@if command -v golangci-lint > /dev/null; then \
golangci-lint run ./...; \
else \
echo "golangci-lint not installed, skipping..."; \
fi
# Run tests
test:
@echo "Running tests..."
$(GO) test -v -race -cover ./...
@echo "Tests complete"
# Run tests with coverage
test-coverage:
@echo "Running tests with coverage..."
$(GO) test -v -race -coverprofile=coverage.out ./...
$(GO) tool cover -html=coverage.out -o coverage.html
@echo "Coverage report generated: coverage.html"
# Build for multiple platforms
build-all:
@echo "Building for multiple platforms..."
@mkdir -p bin
@echo "Building for Linux amd64..."
GOOS=linux GOARCH=amd64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-linux-amd64 $(MAIN_PATH)
@echo "Building for Linux arm64..."
GOOS=linux GOARCH=arm64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-linux-arm64 $(MAIN_PATH)
@echo "Building for Darwin amd64..."
GOOS=darwin GOARCH=amd64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-darwin-amd64 $(MAIN_PATH)
@echo "Building for Darwin arm64..."
GOOS=darwin GOARCH=arm64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-darwin-arm64 $(MAIN_PATH)
@echo "Building for Windows amd64..."
GOOS=windows GOARCH=amd64 $(GO) build $(GOFLAGS) $(LDFLAGS) -o bin/$(BINARY_NAME)-windows-amd64.exe $(MAIN_PATH)
@echo "Multi-platform build complete"
# Install the binary to GOPATH
install: build
@echo "Installing $(BINARY_NAME)..."
$(GO) install $(GOFLAGS) $(LDFLAGS) $(MAIN_PATH)
@echo "Installation complete"
# Development mode with live reload (requires air)
dev:
@if command -v air > /dev/null; then \
air; \
else \
echo "Air not installed. Install with: go install github.com/air-verse/air@latest"; \
echo "Running without live reload..."; \
$(MAKE) run; \
fi
# Docker build
docker-build:
@echo "Building Docker image..."
docker build -t strix:latest .
@echo "Docker image built: strix:latest"
# Docker run
docker-run:
@echo "Running Docker container..."
docker run -p 8080:8080 -v $(PWD)/data:/data strix:latest
# Check code quality
check: fmt vet lint test
@echo "Code quality check complete"
# Help
help:
@echo "Strix - Smart IP Camera Stream Discovery System"
@echo ""
@echo "Available targets:"
@echo " make build - Build the application"
@echo " make run - Build and run the application"
@echo " make clean - Remove build artifacts"
@echo " make deps - Install dependencies"
@echo " make fmt - Format code"
@echo " make vet - Run go vet"
@echo " make lint - Run linter"
@echo " make test - Run tests"
@echo " make test-coverage - Run tests with coverage"
@echo " make build-all - Build for multiple platforms"
@echo " make install - Install to GOPATH"
@echo " make dev - Run in development mode with live reload"
@echo " make docker-build - Build Docker image"
@echo " make docker-run - Run Docker container"
@echo " make check - Run all quality checks"
@echo " make help - Show this help message"

553
README.md
View file

@ -1,553 +0,0 @@
# Strix
[![GitHub Stars](https://img.shields.io/github/stars/eduard256/strix?style=social)](https://github.com/eduard256/strix/stargazers)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Docker Pulls](https://img.shields.io/docker/pulls/eduard256/strix)](https://hub.docker.com/r/eduard256/strix)
## Spent 2 years googling URL for your Chinese camera?
**Strix finds working streams automatically. In 30 seconds.**
- **67,288** camera models
- **3,636** brands (from Hikvision to AliExpress no-name)
- **102,787** URL patterns (RTSP, HTTP, MJPEG, JPEG, BUBBLE)
![Demo](assets/main.gif)
**Check if your camera is supported:** [Browse the database](https://gostrix.github.io/) | **Not listed?** [Add it here](https://gostrix.github.io/#/contribute)
---
## Your Problem?
- ❌ Bought ZOSI NVR, zero documentation
- ❌ Camera has no RTSP, only weird JPEG snapshots
- ❌ Frigate eating 70% CPU
- ❌ Config breaks after adding each camera
- ❌ Don't understand Frigate syntax
## Solution
- ✅ **Auto-discovery** - tests 102,787 URL variations in parallel
- ✅ **Any protocol** - No RTSP? Finds HTTP MJPEG
- ✅ **Config generation** - ready Frigate.yml in 2 minutes
- ✅ **Sub/Main streams** - CPU from 30% → 8%
- ✅ **Smart merging** - adds camera to existing config with 500+ cameras
---
## 🚀 Installation (One Command)
### Ubuntu / Debian
```bash
sudo apt update && command -v docker >/dev/null 2>&1 || curl -fsSL https://get.docker.com | sudo sh && docker run -d --name strix --network host --restart unless-stopped eduard256/strix:latest
```
Open **http://YOUR_SERVER_IP:4567**
### Docker Compose
```bash
sudo apt update && command -v docker >/dev/null 2>&1 || curl -fsSL https://get.docker.com | sudo sh && command -v docker-compose >/dev/null 2>&1 || { sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose; } && curl -fsSL https://raw.githubusercontent.com/eduard256/Strix/main/docker-compose.yml -o docker-compose.yml && docker-compose up -d
```
### Podman
```bash
sudo podman run -d --name strix --network host --cap-add=NET_RAW --cap-add=NET_ADMIN --restart unless-stopped eduard256/strix:latest
```
Strix uses network scanning to discover cameras. Podman blocks this by default, so `NET_RAW` and `NET_ADMIN` capabilities are required. Must run as root (`sudo`). See [DOCKER.md](DOCKER.md) for Podman Compose and Quadlet (systemd) setup.
### Home Assistant Add-on
**Installation:**
1. Go to **Settings****Add-ons** → **Add-on Store**
2. Click **⋮** (top right) → **Repositories**
3. Add: `https://github.com/eduard256/hassio-strix`
4. Find **"Strix"** in store
5. Click **Install**
6. Enable **"Start on boot"** and **"Show in sidebar"**
7. Click **Start**
---
## How to Use
### Step 1: Open Web Interface
```
http://YOUR_SERVER_IP:4567
```
### Step 2: Enter Camera Details
- **IP Address**: `192.168.1.100`
- **Username**: `admin` (if required)
- **Password**: your camera password
- **Model**: optional, improves accuracy
### Step 3: Discover Streams
Click **"Discover Streams"**
Watch real-time progress:
- Which URL is being tested
- How many tested
- Found streams appear instantly
Wait 30-60 seconds.
### Step 4: Choose Stream
Strix shows details for each stream:
| Stream | Details |
|--------|---------|
| **Protocol** | RTSP, HTTP, MJPEG, JPEG |
| **Resolution** | 1920x1080, 640x480 |
| **FPS** | 25, 15, 10 |
| **Codec** | H264, H265, MJPEG |
| **Audio** | Yes / No |
### Step 5: Generate Frigate Config
Click **"Use Stream"** → **"Generate Frigate Config"**
You get ready config:
```yaml
go2rtc:
streams:
'192_168_1_100_main':
- http://admin:pass@192.168.1.100:8000/video.mjpg
'192_168_1_100_sub':
- http://admin:pass@192.168.1.100:8000/video2.mjpg
cameras:
camera_192_168_1_100:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/192_168_1_100_sub
roles: [detect] # CPU 8% instead of 70%
- path: rtsp://127.0.0.1:8554/192_168_1_100_main
roles: [record] # HD recording
objects:
track: [person, car, cat, dog]
record:
enabled: true
```
**Smart Merging:**
- Paste your existing `frigate.yml` with 500 cameras
- Strix adds camera #501 correctly
- Doesn't break structure
- Preserves all settings
### Step 6: Add to Frigate
Copy config → Paste to `frigate.yml` → Restart Frigate
**Done!**
---
## Features
### Exotic Camera Support
90% of Chinese cameras don't have RTSP. Strix supports everything:
- **HTTP MJPEG** - most old cameras
- **JPEG snapshots** - auto-converted to stream via FFmpeg
- **RTSP** - if available
- **HTTP-FLV** - some Chinese brands
- **BUBBLE** - proprietary Chinese NVR/DVR protocol
- **ONVIF** - auto-discovery
### Camera Database
**67,288 models from 3,636 brands:**
- **Known brands**: Hikvision, Dahua, Axis, Foscam, TP-Link
- **Chinese no-names**: ZOSI, Escam, Sricam, Wanscam, Besder
- **AliExpress junk**: cameras without name, OEM models
- **Old systems**: NVR/DVR with proprietary protocols
### Discovery Methods
Strix tries all methods in parallel:
**1. ONVIF** (30% success rate)
- Asks camera directly for stream URLs
- Works for ONVIF-compatible cameras
**2. Database Lookup** (60% success rate)
- 67,288 models with known working URLs
- Brand and model-specific patterns
**3. Popular Patterns** (90% success rate)
- 206 most common URL paths
- Works even for unknown cameras
**Result: Finds stream for 95% of cameras**
### Frigate Config Generation
**What you get:**
✅ **Main/Sub streams**
- Main (HD) for recording
- Sub (low res) for object detection
- CPU usage reduced 5-10x
✅ **Ready go2rtc config**
- Stream multiplexing
- Protocol conversion
- JPEG → RTSP via FFmpeg
✅ **Smart config merging**
- Add to existing config
- Preserve structure
- No manual YAML editing
✅ **Pre-configured detection**
- person, car, cat, dog
- Ready motion recording
- 7 days retention
### Speed
- Tests **20 URLs in parallel**
- Average discovery time: **30-60 seconds**
- Complex cameras: **2-3 minutes**
- Real-time progress updates via SSE
---
## Advanced Configuration
### Docker Environment Variables
```yaml
environment:
- STRIX_API_LISTEN=:8080 # Custom port
- STRIX_LOG_LEVEL=debug # Detailed logs
- STRIX_LOG_FORMAT=json # JSON logging
```
### Config File
Create `strix.yaml`:
```yaml
api:
listen: ":8080"
```
Example: [strix.yaml.example](strix.yaml.example)
### Discovery Parameters
In web UI under **Advanced**:
- **Channel** - for NVR systems (usually 0)
- **Timeout** - max discovery time (default: 240s)
- **Max Streams** - stop after N streams (default: 10)
---
## FAQ
### No streams found?
**Check network:**
```bash
ping 192.168.1.100
```
Camera must be reachable.
**Verify credentials:**
- Username/password correct?
- Try without credentials (some cameras are open)
**Try without model:**
- Strix will run ONVIF + 206 popular patterns
- Works for cameras not in database
### Camera not in database?
**No problem.**
Strix will still find stream via:
1. ONVIF (if supported)
2. 206 popular URL patterns
3. Common ports and paths
4. HTTP MJPEG on various ports
5. JPEG snapshot endpoints
**Help the project:**
- Found working stream? [Create Issue](https://github.com/eduard256/Strix/issues)
- Share model and URL
- We'll add to database
### Found only JPEG snapshots?
**Normal for old cameras.**
Strix auto-converts JPEG to stream via FFmpeg:
```yaml
go2rtc:
streams:
camera_main:
- exec:ffmpeg -loop 1 -framerate 10 -i http://192.168.1.100/snapshot.jpg -c:v libx264 -f rtsp {output}
```
Frigate gets normal 10 FPS stream.
### Stream found but doesn't work in Frigate?
**Try another stream:**
- Strix usually finds 3-10 variants
- Some may need special FFmpeg parameters
**Use sub stream:**
- For object detection
- Less CPU load
- Better performance
### How does config generation work?
**For new config:**
- Strix creates complete `frigate.yml` from scratch
- Includes go2rtc, camera, object detection
**For existing config:**
- Paste your current `frigate.yml`
- Strix adds new camera
- Preserves all existing cameras
- Doesn't break structure
**Main/Sub streams:**
- Main (HD) - for recording
- Sub (low res) - for detection
- CPU savings 5-10x
### Is it safe to enter passwords?
**Yes.**
- Strix runs locally on your network
- Nothing sent to external servers
- Passwords not saved
- Open source - check the code yourself
### Works offline?
**Yes.**
- Database embedded in Docker image
- Internet only needed to download image
- Runs offline after that
---
## API Reference
REST API available for automation:
### Health Check
```bash
GET /api/v1/health
```
### Search Cameras
```bash
POST /api/v1/cameras/search
{
"query": "hikvision",
"limit": 10
}
```
### Discover Streams (SSE)
```bash
POST /api/v1/streams/discover
{
"target": "192.168.1.100",
"username": "admin",
"password": "12345",
"model": "DS-2CD2xxx",
"timeout": 240,
"max_streams": 10
}
```
Returns Server-Sent Events with real-time progress.
**Full API documentation:** [DOCKER.md](DOCKER.md)
---
## Technical Details
### Architecture
- **Language:** Go 1.24
- **Database:** 3,636 JSON files
- **Image size:** 80-90 MB (Alpine Linux)
- **Dependencies:** FFmpeg/FFprobe for validation
- **Concurrency:** Worker pool (20 parallel tests)
- **Real-time:** Server-Sent Events (SSE)
### Build from Source
```bash
git clone https://github.com/eduard256/Strix
cd Strix
make build
./bin/strix
```
**Requirements:**
- Go 1.21+
- FFprobe (optional, for stream validation)
### Docker Platforms
- linux/amd64
- linux/arm64
Auto-built and published to Docker Hub on every push to `main`.
---
## Use Cases
### Home Automation
- Add cheap cameras to Home Assistant
- Integrate with Frigate NVR
- Object detection with low CPU
- Motion recording
### Security Systems
- Discover streams in old NVR systems
- Find backup cameras without docs
- Migrate from proprietary DVR to Frigate
- Reduce hardware requirements
### IP Camera Testing
- Test cameras before deployment
- Verify stream quality
- Find optimal resolution/FPS
- Check codec compatibility
---
## Troubleshooting
### Frigate still eating CPU?
**Use sub stream:**
1. Find both main and sub streams with Strix
2. Generate config with both
3. Sub for detect, main for record
4. CPU drops 5-10x
**Example:**
```yaml
inputs:
- path: rtsp://127.0.0.1:8554/camera_sub # 640x480 for detect
roles: [detect]
- path: rtsp://127.0.0.1:8554/camera_main # 1920x1080 for record
roles: [record]
```
### Can't find specific stream quality?
**In web UI:**
- Strix shows all found streams
- Filter by resolution
- Choose optimal FPS
- Select codec (H264 recommended for Frigate)
### Stream works but no audio in Frigate?
**Check Strix stream details:**
- "Has Audio" field shows if audio present
- Some cameras have video-only streams
- Try different stream URL from Strix results
### Discovery takes too long?
**Reduce search scope:**
- Specify exact camera model (faster database lookup)
- Lower "Max Streams" (stops after N found)
- Reduce timeout (default 240s)
**In Advanced settings:**
```
Max Streams: 5 (instead of 10)
Timeout: 120 (instead of 240)
```
---
## Contributing
### Add Your Camera
Found working stream for camera not in database? [Add it here](https://gostrix.github.io/#/contribute).
### Report Bugs
- [GitHub Issues](https://github.com/eduard256/Strix/issues)
- Include logs (set `STRIX_LOG_LEVEL=debug`)
- Camera model and IP (if possible)
### Feature Requests
- [GitHub Discussions](https://github.com/eduard256/Strix/discussions)
- Describe use case
- Explain expected behavior
---
## Credits
- **Camera database:** [ispyconnect.com](https://www.ispyconnect.com)
- **Inspiration:** [go2rtc](https://github.com/AlexxIT/go2rtc) by AlexxIT
- **Community:** Home Assistant, Frigate NVR users
---
## License
MIT License - use commercially, modify, distribute freely.
See [LICENSE](LICENSE) file for details.
---
## Support
- **Issues:** [GitHub Issues](https://github.com/eduard256/Strix/issues)
- **Discussions:** [GitHub Discussions](https://github.com/eduard256/Strix/discussions)
- **Docker:** [Docker Hub](https://hub.docker.com/r/eduard256/strix)
---
**Made for people tired of cameras without documentation**
*Tested on Chinese AliExpress junk that finally works now.*

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

View file

@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" height="512" width="512" viewBox="0 0 512.001 512.001">
<g>
<path style="fill:#7E57C2;" d="M124.477,378.183L9.347,495.779c21.628,21.628,56.695,21.628,78.324,0L119,464.45 c21.628,21.628,56.696,21.628,78.324,0l28.375-28.375C187.373,426.203,151.825,405.106,124.477,378.183z"/>
<path style="fill:#7E57C2;" d="M447.27,55.383h-55.383V177.22c0.002-40.997,22.277-76.788,55.383-95.939 c16.293-9.425,35.207-14.822,55.383-14.822c0-6.982,0-11.077,0-11.077V0C472.065,0,447.27,24.796,447.27,55.383z"/>
</g>
<path style="fill:#9575CD;" d="M336.504,55.383C336.504,24.796,311.708,0,281.121,0v66.46c20.176,0,39.091,5.397,55.383,14.822 c33.107,19.153,55.383,54.946,55.383,95.945V55.383H336.504z"/>
<path style="fill:#E8E0F5;" d="M391.887,209.772v-27.116c0-3.312,0-5.432,0-5.432c0-40.997-22.276-76.791-55.383-95.942 c-16.293-9.425-35.207-14.822-55.383-14.822v155.073C311.213,191.443,357.554,187.532,391.887,209.772z M314.351,143.996 c0-12.234,9.918-22.153,22.153-22.153s22.153,9.919,22.153,22.153c0,12.235-9.918,22.153-22.153,22.153 S314.351,156.231,314.351,143.996z"/>
<path style="fill:#D1C4E9;" d="M391.887,177.221v32.551c5.151,3.336,10.037,7.246,14.55,11.76h96.216V66.46 c-20.176,0-39.091,5.397-55.383,14.822C414.164,100.434,391.888,136.225,391.887,177.221z M469.423,143.996 c0,12.235-9.918,22.153-22.153,22.153s-22.153-9.918-22.153-22.153c0-12.234,9.918-22.153,22.153-22.153 C459.504,121.843,469.423,131.762,469.423,143.996z"/>
<path style="fill:#9575CD;" d="M281.121,221.532l-10.2,10.2L281.121,221.532z"/>
<path style="fill:#B39DDB;" d="M406.438,221.533c34.606,34.606,34.606,90.712,0,125.319c-69.21,69.21-181.422,69.21-250.633,0.002 l-31.329,31.33c27.348,26.923,62.896,48.02,101.221,57.892c17.714,4.562,36.285,6.989,55.423,6.989 c122.349,0,221.532-99.182,221.532-221.531C502.653,221.533,406.437,221.532,406.438,221.533z"/>
<path style="fill:#9575CD;" d="M281.121,221.532l125.318,125.319c34.606-34.606,34.606-90.713,0-125.319 c-4.515-4.514-9.401-8.425-14.551-11.761C357.554,187.532,311.213,191.443,281.121,221.532z"/>
<path style="fill:#7E57C2;" d="M406.438,346.851L281.12,221.533l-10.199,10.2L155.802,346.851 C225.017,416.062,337.228,416.061,406.438,346.851z"/>
<circle style="fill:#9575CD;" cx="336.507" cy="143.996" r="22.153"/>
<circle style="fill:#7E57C2;" cx="447.274" cy="143.996" r="22.153"/>
</svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

View file

@ -1,202 +0,0 @@
package main
import (
"context"
"fmt"
"log/slog"
"net"
"net/http"
"os"
"os/signal"
"syscall"
"time"
"github.com/eduard256/Strix/internal/api"
"github.com/eduard256/Strix/internal/config"
"github.com/eduard256/Strix/internal/utils/logger"
"github.com/eduard256/Strix/webui"
"github.com/go-chi/chi/v5"
)
// Version is set at build time via ldflags:
//
// go build -ldflags="-X main.Version=1.0.10" ./cmd/strix
var Version = "dev"
const Banner = `
Smart IP Camera Stream Discovery System
Version: %s
`
func main() {
// Print banner to stderr so it doesn't mix with structured log output on stdout
fmt.Fprintf(os.Stderr, Banner, Version)
fmt.Fprintln(os.Stderr)
// Setup logger first, before anything else, so all messages use consistent format
slogger, secrets := config.SetupLogger()
slog.SetDefault(slogger)
// Load configuration (uses the logger for startup messages)
cfg := config.Load(slogger)
cfg.Version = Version
// Create adapter for our interface
log := logger.NewAdapter(slogger, secrets)
log.Info("starting Strix",
slog.String("version", Version),
slog.String("go_version", os.Getenv("GO_VERSION")),
slog.String("listen", cfg.Server.Listen),
)
// Check if ffprobe is available
if err := checkFFProbe(); err != nil {
log.Warn("ffprobe not found, stream validation will be limited", slog.String("error", err.Error()))
}
// Create API server
apiServer, err := api.NewServer(cfg, secrets, log)
if err != nil {
log.Error("failed to create API server", err)
os.Exit(1)
}
// Create Web UI server
webuiServer := webui.NewServer(log)
// Create unified router combining API and WebUI
unifiedRouter := chi.NewRouter()
// Mount API routes at /api/v1/*
unifiedRouter.Mount("/api/v1", apiServer.GetRouter())
// Mount WebUI routes at /* (serves everything else including root)
unifiedRouter.Mount("/", webuiServer.GetRouter())
// Create unified HTTP server
httpServer := &http.Server{
Addr: cfg.Server.Listen,
Handler: unifiedRouter,
ReadTimeout: cfg.Server.ReadTimeout,
WriteTimeout: cfg.Server.WriteTimeout,
IdleTimeout: 120 * time.Second,
}
// Start server in goroutine
go func() {
log.Info("server starting",
slog.String("address", httpServer.Addr),
slog.String("api_version", "v1"),
)
if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Error("server failed", err)
os.Exit(1)
}
}()
// Print endpoints
printEndpoints(cfg.Server.Listen)
// Wait for interrupt signal
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt, syscall.SIGTERM)
<-quit
log.Info("shutting down server...")
// Graceful shutdown with timeout
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
// Shutdown server
if err := httpServer.Shutdown(ctx); err != nil {
log.Error("server shutdown failed", err)
os.Exit(1)
}
log.Info("server stopped gracefully")
}
// checkFFProbe checks if ffprobe is available
func checkFFProbe() error {
// Try to execute ffprobe -version
cmd := os.Getenv("PATH")
if cmd == "" {
return fmt.Errorf("PATH environment variable not set")
}
// For now, just check if ffprobe exists in common locations
locations := []string{
"/usr/bin/ffprobe",
"/usr/local/bin/ffprobe",
"/opt/homebrew/bin/ffprobe",
}
for _, loc := range locations {
if _, err := os.Stat(loc); err == nil {
return nil
}
}
return fmt.Errorf("ffprobe not found in common locations")
}
// getLocalIP returns the local IP address of the machine
func getLocalIP() string {
addrs, err := net.InterfaceAddrs()
if err != nil {
return "localhost"
}
for _, addr := range addrs {
if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
if ipnet.IP.To4() != nil {
return ipnet.IP.String()
}
}
}
return "localhost"
}
// printEndpoints prints available endpoints
func printEndpoints(listen string) {
// Extract port from listen address
port := "4567"
if len(listen) > 0 {
if listen[0] == ':' {
port = listen[1:]
} else {
// Parse host:port format
for i := len(listen) - 1; i >= 0; i-- {
if listen[i] == ':' {
port = listen[i+1:]
break
}
}
}
}
// Get local IP
localIP := getLocalIP()
url := fmt.Sprintf("http://%s:%s", localIP, port)
// ANSI escape codes for clickable link (OSC 8 hyperlink)
clickableURL := fmt.Sprintf("\033]8;;%s\033\\%s\033]8;;\033\\", url, url)
fmt.Fprintln(os.Stderr, "\nWeb Interface:")
fmt.Fprintln(os.Stderr, "────────────────────────────────────────────────")
fmt.Fprintf(os.Stderr, " Open in browser: %s\n", clickableURL)
fmt.Fprintln(os.Stderr, "────────────────────────────────────────────────")
fmt.Fprintln(os.Stderr, "\nDocumentation: https://github.com/eduard256/Strix")
}

View file

@ -1,517 +0,0 @@
# 📹 IoT2mqtt Camera Database Format Specification
**Version:** 1.0.0
**Last Updated:** 2025-10-17
---
## 🎯 Overview
The camera database is a collection of JSON files containing URL patterns and connection details for IP cameras from various manufacturers. This format is designed to be:
- **Universal**: Works with any IP camera brand
- **Extensible**: Easy to add new models and protocols
- **Human-readable**: Simple JSON structure
- **Parseable**: Straightforward for automated tools
---
## 📁 Directory Structure
```
connectors/cameras/data/brands/
├── index.json # Master list of all brands
├── d-link.json # D-Link camera models
├── hikvision.json # Hikvision camera models
├── dahua.json # Dahua camera models
├── axis.json # Axis camera models
└── ... # Additional brands
```
---
## 📋 File Formats
### 1. **index.json** - Brand Directory
Lists all available camera brands with metadata.
```json
[
{
"value": "d-link",
"label": "D-Link",
"models_count": 250,
"entries_count": 85,
"logo": "/assets/brands/d-link.svg"
},
{
"value": "hikvision",
"label": "Hikvision",
"models_count": 320,
"entries_count": 95,
"logo": "/assets/brands/hikvision.svg"
}
]
```
**Fields:**
- `value` (string, required): Brand identifier (lowercase, URL-safe)
- `label` (string, required): Display name
- `models_count` (integer): Total number of camera models
- `entries_count` (integer): Number of URL pattern entries
- `logo` (string, optional): Path to brand logo
---
### 2. **{brand}.json** - Brand Camera Database
Contains all URL patterns and connection details for a specific brand.
```json
{
"brand": "D-Link",
"brand_id": "d-link",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"website": "https://www.dlink.com",
"entries": [
{
"models": ["DCS-930L", "DCS-930LB", "DCS-930LB1"],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "live3.sdp",
"notes": "Main HD stream"
},
{
"models": ["DCS-930L", "DCS-932L"],
"type": "MJPEG",
"protocol": "http",
"port": 80,
"url": "video.cgi?resolution=VGA",
"notes": "Medium quality fallback"
}
]
}
```
**Root Fields:**
- `brand` (string, required): Brand display name
- `brand_id` (string, required): Brand identifier (must match filename)
- `last_updated` (string, ISO 8601 date): When database was last updated
- `source` (string): Where the data came from (e.g., "ispyconnect.com")
- `website` (string, optional): Manufacturer's official website
- `entries` (array, required): List of URL pattern entries
---
### 3. **Entry Object** - URL Pattern Entry
Each entry represents a specific URL pattern that works for one or more camera models.
```json
{
"models": ["DCS-930L", "DCS-930LB", "DCS-930LB1"],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "live3.sdp",
"auth_required": true,
"notes": "Main HD stream with audio"
}
```
**Fields:**
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `models` | array[string] | ✅ Yes | List of camera model names/numbers this URL works for |
| `type` | string | ✅ Yes | Stream type: `FFMPEG`, `MJPEG`, `JPEG`, `VLC`, `H264` |
| `protocol` | string | ✅ Yes | Protocol: `rtsp`, `http`, `https` |
| `port` | integer | ✅ Yes | Port number (554 for RTSP, 80/443 for HTTP) |
| `url` | string | ✅ Yes | URL path (without protocol/host/port) |
| `auth_required` | boolean | No | Whether authentication is needed (default: true) |
| `notes` | string | No | Human-readable description |
---
## 🔧 URL Template Variables
URL paths support the following template variables:
| Variable | Description | Example |
|----------|-------------|---------|
| `{username}` | Camera username | `admin` |
| `{password}` | Camera password | `12345` |
| `{ip}` | Camera IP address | `192.168.1.100` |
| `{port}` | Port number | `554` |
| `{channel}` | Camera channel (for DVRs) | `1` |
| `{width}` | Video width | `1920` |
| `{height}` | Video height | `1080` |
**Example:**
```
Template: rtsp://{username}:{password}@{ip}:{port}/live3.sdp
Result: rtsp://admin:12345@192.168.1.100:554/live3.sdp
```
---
## 📊 Stream Types
### FFMPEG (Recommended)
- **Protocol**: RTSP, HTTP
- **Format**: H.264, H.265
- **Use case**: High-quality video with audio
- **Priority**: 🥇 First choice
### MJPEG
- **Protocol**: HTTP
- **Format**: Motion JPEG
- **Use case**: Medium quality, wide compatibility
- **Priority**: 🥈 Second choice
### JPEG
- **Protocol**: HTTP
- **Format**: Still images
- **Use case**: Snapshot-only cameras or fallback
- **Priority**: 🥉 Last resort
### VLC
- **Protocol**: RTSP, HTTP
- **Format**: Various (VLC-specific)
- **Use case**: Compatibility with VLC player
---
## 🎯 Priority Order for Testing
When testing multiple URLs for a camera model, use this priority:
1. **RTSP (type="FFMPEG")** - Best quality, supports audio
2. **HTTP MJPEG** - Good compatibility
3. **HTTP JPEG** - Snapshot fallback
**Example:**
```python
def get_urls_for_model(brand_data, model_name):
entries = [e for e in brand_data["entries"] if model_name in e["models"]]
# Sort by priority
priority = {"FFMPEG": 1, "MJPEG": 2, "JPEG": 3, "VLC": 4}
entries.sort(key=lambda e: priority.get(e["type"], 99))
return entries
```
---
## 🔍 Search and Lookup
### By Brand
```python
# Load brand file
with open(f"data/brands/{brand_id}.json") as f:
brand_data = json.load(f)
```
### By Model
```python
# Find all entries for a specific model
def find_model_entries(brand_data, model_name):
return [
entry for entry in brand_data["entries"]
if model_name.upper() in [m.upper() for m in entry["models"]]
]
```
### Fuzzy Search
```python
# Search across all models (case-insensitive, partial match)
def search_model(brand_data, query):
query = query.upper()
results = []
for entry in brand_data["entries"]:
if any(query in model.upper() for model in entry["models"]):
results.append(entry)
return results
```
---
## 🌐 URL Construction
### RTSP URL
```python
def build_rtsp_url(entry, ip, username, password):
return f"rtsp://{username}:{password}@{ip}:{entry['port']}/{entry['url']}"
# Example:
# rtsp://admin:12345@192.168.1.100:554/live3.sdp
```
### HTTP URL
```python
def build_http_url(entry, ip, username, password):
protocol = entry["protocol"] # "http" or "https"
return f"{protocol}://{username}:{password}@{ip}:{entry['port']}/{entry['url']}"
# Example:
# http://admin:12345@192.168.1.100:80/video.cgi?resolution=VGA
```
### With Template Variables
```python
def build_url(entry, ip, username, password, **kwargs):
url_path = entry["url"]
# Replace template variables
replacements = {
"username": username,
"password": password,
"ip": ip,
"port": str(entry["port"]),
**kwargs # Additional variables (channel, width, height, etc.)
}
for key, value in replacements.items():
url_path = url_path.replace(f"{{{key}}}", value)
# Build full URL
if entry["protocol"] == "rtsp":
return f"rtsp://{username}:{password}@{ip}:{entry['port']}/{url_path}"
else:
return f"{entry['protocol']}://{username}:{password}@{ip}:{entry['port']}/{url_path}"
```
---
## ✅ Validation Rules
### Entry Validation
```python
def validate_entry(entry):
# Required fields
assert "models" in entry and isinstance(entry["models"], list)
assert len(entry["models"]) > 0
assert "type" in entry and entry["type"] in ["FFMPEG", "MJPEG", "JPEG", "VLC", "H264"]
assert "protocol" in entry and entry["protocol"] in ["rtsp", "http", "https"]
assert "port" in entry and isinstance(entry["port"], int)
assert "url" in entry and isinstance(entry["url"], str)
# Port ranges
assert 1 <= entry["port"] <= 65535
# Common ports check
if entry["protocol"] == "rtsp":
assert entry["port"] in [554, 8554, 7447] # Common RTSP ports
elif entry["protocol"] == "http":
assert entry["port"] in [80, 8080, 8000, 8081] # Common HTTP ports
```
---
## 📝 Naming Conventions
### Brand IDs
- **Format**: lowercase, kebab-case
- **Examples**: `d-link`, `hikvision`, `tp-link`
- **Invalid**: `D-Link`, `D_Link`, `dlink`
### Model Names
- **Format**: UPPERCASE with hyphens (as manufacturer specifies)
- **Examples**: `DCS-930L`, `DS-2CD2142FWD-I`, `IPC-HFW1230S`
- **Keep original**: Don't normalize or change manufacturer names
### Protocol Values
- `rtsp` - RTSP protocol
- `http` - HTTP protocol
- `https` - HTTPS protocol
- **Invalid**: `RTSP`, `Http`, `tcp`
### Type Values
- `FFMPEG` - H.264/H.265 streams (RTSP or HTTP)
- `MJPEG` - Motion JPEG streams
- `JPEG` - Still image snapshots
- `VLC` - VLC-specific streams
---
## 🔄 Versioning and Updates
### Version Format
```json
{
"brand": "D-Link",
"brand_id": "d-link",
"database_version": "1.2.0",
"last_updated": "2025-10-17T14:30:00Z",
"entries": [...]
}
```
### Update Policy
- **Patch** (1.0.x): Add new models to existing entries
- **Minor** (1.x.0): Add new URL patterns/entries
- **Major** (x.0.0): Breaking changes to structure
---
## 📚 Examples
### Complete Brand File Example
**foscam.json:**
```json
{
"brand": "Foscam",
"brand_id": "foscam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"website": "https://www.foscam.com",
"entries": [
{
"models": ["FI9821P", "FI9826P", "FI9821W"],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "videoMain",
"notes": "Main stream HD"
},
{
"models": ["FI9821P", "FI9826P"],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "videoSub",
"notes": "Sub stream SD"
},
{
"models": ["FI9821P", "FI9826P", "FI9821W", "C1"],
"type": "MJPEG",
"protocol": "http",
"port": 88,
"url": "cgi-bin/CGIStream.cgi?cmd=GetMJStream&usr={username}&pwd={password}",
"notes": "MJPEG fallback"
},
{
"models": ["FI9821P", "C1", "C2"],
"type": "JPEG",
"protocol": "http",
"port": 88,
"url": "cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr={username}&pwd={password}",
"notes": "Snapshot"
}
]
}
```
---
## 🛠️ Tools and Scripts
### Parser Script (Python)
```python
# scripts/parse_ispyconnect.py
import requests
from bs4 import BeautifulSoup
import json
def parse_brand_page(brand_id):
url = f"https://www.ispyconnect.com/camera/{brand_id}"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
table = soup.find('table', class_='table-striped')
entries = []
for row in table.find_all('tr')[1:]: # Skip header
cols = row.find_all('td')
if len(cols) < 4:
continue
models_text = cols[0].get_text()
models = [m.strip() for m in models_text.split(',')]
entry = {
"models": models,
"type": cols[1].get_text(strip=True),
"protocol": cols[2].get_text(strip=True).replace('://', ''),
"port": int(row.get('data-port', 0)),
"url": cols[3].get_text(strip=True)
}
entries.append(entry)
return {
"brand": brand_id.title(),
"brand_id": brand_id,
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": entries
}
```
### Validator Script
```python
# scripts/validate_database.py
import json
import os
def validate_brand_file(filepath):
with open(filepath) as f:
data = json.load(f)
# Check required fields
assert "brand" in data
assert "brand_id" in data
assert "entries" in data
# Validate each entry
for i, entry in enumerate(data["entries"]):
assert "models" in entry, f"Entry {i} missing models"
assert "type" in entry, f"Entry {i} missing type"
assert "protocol" in entry, f"Entry {i} missing protocol"
assert "port" in entry, f"Entry {i} missing port"
assert "url" in entry, f"Entry {i} missing url"
print(f"✅ {filepath} is valid")
# Run validation
for file in os.listdir('data/brands/'):
if file.endswith('.json') and file != 'index.json':
validate_brand_file(f'data/brands/{file}')
```
---
## 📄 License and Attribution
- **Source**: ispyconnect.com camera database
- **Usage**: Free for IoT2mqtt project
- **Attribution**: Must credit ispyconnect.com as data source
- **Updates**: Community-contributed updates welcome
---
## 🤝 Contributing
To add or update camera models:
1. Follow the JSON format specification
2. Validate using `scripts/validate_database.py`
3. Test URLs with real cameras when possible
4. Submit pull request with changes
---
## 📞 Support
For questions about the database format:
- GitHub Issues: https://github.com/eduard256/Strix/issues
- Documentation: https://github.com/eduard256/Strix#readme
---
**End of Specification**

View file

@ -1,258 +0,0 @@
{
"brand": "255 Ip Cam",
"brand_id": "255-ip-cam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"255",
"32X 5MP",
"C6F0SgZ3N0PfL2",
"C6F0SoZ3N0P9L2",
"CF0Sgzonopfl2",
"DENVER IPO-1320MK2",
"DRC6F0SgZ3N0P6L2",
"es cam g02",
"HW0029",
"ICAM",
"IIII-551433-ABEBF",
"IUK 5A1",
"Other",
"phr04k",
"pppp-216658-ecdcb",
"ProeliteIP01axBLK",
"q52-5mp-wh",
"SRICAM",
"tttt-489242-vxvmx",
"xly0144"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
},
{
"models": [
"255",
"ICAM",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg"
},
{
"models": [
"255",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/0"
},
{
"models": [
"3030",
"C6F0SoZ3N0P9L2",
"IIII-259624-EAADF",
"IUK 5A1",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/1"
},
{
"models": [
"4455",
"IPC365"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "ch0_0.h264"
},
{
"models": [
"C9F0SgZ3N0PbL0"
],
"type": "JPEG",
"protocol": "http",
"port": 8082,
"url": "/tmpfs/auto.jpg"
},
{
"models": [
"common"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]*[HEIGHT]"
},
{
"models": [
"H.265"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"icam",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/user=[USERNAME]_password=[PASSWORD]_channel=1_stream=0.sdp"
},
{
"models": [
"ICAM",
"Other",
"PoE"
],
"type": "JPEG",
"protocol": "http",
"port": 5544,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"ip66minicam"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/1/h264major"
},
{
"models": [
"Ipc"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Ipc",
"ip-camera",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/snapshot.jpg"
},
{
"models": [
"IPC-V380-Q79"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/onvif1"
},
{
"models": [
"IUK 5A1",
"Other",
"sricam"
],
"type": "MJPEG",
"protocol": "http",
"port": 81,
"url": "videostream.cgi?rate=0&user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"kiina"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image.jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&password=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 10554,
"url": "1/h264major"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "/video.mp4"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=320*240"
},
{
"models": [
"sioplus"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/video1"
},
{
"models": [
"top"
],
"type": "FFMPEG",
"protocol": "http",
"port": 8080,
"url": "/videofeed"
}
]
}

View file

@ -1,54 +0,0 @@
{
"brand": "2n Helios",
"brand_id": "2n-helios",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"IP-CAMERA"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"IP-CAMERA",
"Vario"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/h264_stream"
},
{
"models": [
"IP-CAMERA"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"VARIO"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot/view[CHANNEL].jpg"
},
{
"models": [
"VARIO"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
}
]
}

View file

@ -1,44 +0,0 @@
{
"brand": "307 Hi Silicon",
"brand_id": "307-hi-silicon",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"101"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg"
},
{
"models": [
"318e"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "user=[USERNAME]&password=[PASSWORD]&channel=1&stream=0.sdp?"
},
{
"models": [
"HI3516C"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/0"
},
{
"models": [
"HI3518E"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/11"
}
]
}

View file

@ -1,266 +0,0 @@
{
"brand": "360 Eye",
"brand_id": "360-eye",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"1111",
"EC101-B3Y2",
"EC107-B3Y2",
"EC107Y-B3Y10",
"EC38",
"EC73-V13",
"EC76-U15",
"Other",
"v380",
"V380"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor"
},
{
"models": [
"360",
"V380"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
},
{
"models": [
"360"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/0"
},
{
"models": [
"360",
"360eye",
"360Eye",
"360EYE",
"360EYE PRO",
"EC101-X15",
"EC76",
"EC76-U15",
"EC80_V13",
"EC80-X15",
"i360",
"Other",
"v380",
"V380"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "live/ch00_0"
},
{
"models": [
"360",
"360Eye Pro"
],
"type": "VLC",
"protocol": "rtsp",
"port": 1935,
"url": "LowResolutionVideo"
},
{
"models": [
"360eye",
"EC101-X15",
"EC107-B3Y2",
"EC107Y-B3Y10",
"EC73-N13",
"IPC365",
"v380"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=1&subtype=00&authbasic=[AUTH]"
},
{
"models": [
"360EYE",
"360Eye Pro",
"EC101Y-B3Y10",
"IPC365"
],
"type": "VLC",
"protocol": "rtsp",
"port": 5544,
"url": "live_mpeg4.sdp"
},
{
"models": [
"360EYE",
"360EYE PRO",
"EC101-X15",
"EC107-B3Y2",
"EC73-N13",
"EC76",
"EC76-U15",
"eyes",
"IPC365",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam/realmonitor?channel=[CHANNEL]&subtype=1"
},
{
"models": [
"360EYE EC129-X15",
"EC101-B3Y2",
"EC101-X15",
"EC101Y-B3Y10",
"EC107-X15",
"EC37",
"EC73-N13",
"EC73-V13",
"PW2K2N06E-GTWY"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=0&subtype=1"
},
{
"models": [
"603",
"Other",
"V380"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"E101-B3Y2",
"EC101Y-B3Y10"
],
"type": "VLC",
"protocol": "rtsp",
"port": 1935,
"url": "ch0_0.h264"
},
{
"models": [
"EC101-B3Y2",
"EC107-B3Y2",
"EC76-X15",
"epc101",
"Other",
"v380",
"V380 Wifi IP Cam"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/live/ch00_0"
},
{
"models": [
"EC101-X15",
"EC132-X15",
"EC80-X15"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=8080&subtype=1"
},
{
"models": [
"EC101-X15",
"mv12241966"
],
"type": "FFMPEG",
"protocol": "mms",
"port": 554,
"url": "/img/video.asf"
},
{
"models": [
"EC101-X15",
"PW2L2A06A-GTY"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=1&subtype=1"
},
{
"models": [
"EC107-B3Y2",
"EC73-N13"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/LowResolutionVideo"
},
{
"models": [
"EC107-B3Y2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/live_mpeg4.sdp"
},
{
"models": [
"EC107-X15",
"EC137-X15",
"EC80-X15",
"XM80-8MP"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/realmonitor?channel=0&stream=0.sdp"
},
{
"models": [
"EC137Y-B3Y2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ch0_0.h264"
},
{
"models": [
"SL-CAM",
"V380",
"y335"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/onvif1"
},
{
"models": [
"V380"
],
"type": "VLC",
"protocol": "mms",
"port": 0,
"url": "img/video.asf"
}
]
}

View file

@ -1,151 +0,0 @@
{
"brand": "3com",
"brand_id": "3com",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"EX11402-WIFI",
"Other",
"rc8221",
"XHCI-SE"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
},
{
"models": [
"EX11402-WIFI",
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]*[HEIGHT]"
},
{
"models": [
"EX11402-WIFI",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Ipela"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "goform/video2"
},
{
"models": [
"IPELA",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "mjpeg.cgi?user=[USERNAME]&password=[PASSWORD]&channel=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other",
"RC8221"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpg/image.jpg?size=3"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_jpeg.cgi?ch=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video?submenu=mjpg"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other",
"RC8221"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=3"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "3eyes3",
"brand_id": "3eyes3",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"E-2100M"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
}
]
}

View file

@ -1,474 +0,0 @@
{
"brand": "3g Ipcam",
"brand_id": "3g-ipcam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"002a",
"720 P IP CAMERA",
"L Series",
"Other",
"SRICAM SP004"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"002A",
"IPCAM V380",
"IPC-HFW2231R-ZS-IRE6",
"Other",
"P2P"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"002A",
"720 P IP CAMERA",
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"002A",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"1234",
"C6F0SEZ0N0P0L0",
"C6F0SFZ3NOP5L0",
"C6F0SGZ0N0P3L0",
"C6F0SGZ3N0P6L2",
"C6F0SiZ3N0P0L0",
"C6F0SoZ3N0PcL2",
"C9F0SeZ0N0P4L0",
"C9F0SEZ0N0P4L0",
"C9F0SGZ0N0P2L1",
"C9F0SgZ3NP8L0",
"Chemin",
"F-SERIES",
"Other",
"SRICAM"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
},
{
"models": [
"2016w"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"2018",
"F-series",
"P2P"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]*[HEIGHT]"
},
{
"models": [
"3245",
"328",
"3285",
"3289",
"454",
"4556",
"546577",
"720 P IP CAMERA",
"B987w",
"BM16",
"C6F0SeZ0N0P0L0",
"C6F0SfZ0N0P3L0",
"C6F0SfZ3NOP5L0",
"C6F0SgZ0N0P3L0",
"C6F0SgZ3N0P6L2",
"C6F0SIZ3N0P0L0",
"C9F0SgZ0N0P2L1",
"CT0276WHUK",
"Fd7902",
"GGGG-152116-FCEEA",
"L SERIES",
"Other",
"p2p",
"sr1",
"SRICAM SP004"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"355566",
"546577",
"Other",
"X6130"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
},
{
"models": [
"3g Ipcam: C6F0SoZ3N0PdL2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/stream_0"
},
{
"models": [
"3g Ipcam: C6F0SoZ3N0PdL2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/1/h264major"
},
{
"models": [
"556",
"c6f0SoZ3n0P9L2",
"ipc"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/ch0_0.264"
},
{
"models": [
"590"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "iphone/11?[USERNAME]:[PASSWORD]&"
},
{
"models": [
"720 P IP CAMERA",
"IPC701939"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/onvif1"
},
{
"models": [
"720 P IP CAMERA"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=2"
},
{
"models": [
"720 P IP CAMERA"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=0"
},
{
"models": [
"720 P IP CAMERA"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/snapshot.jpg"
},
{
"models": [
"C6F0SEZ0N0P0L0",
"c9F0SeZ0N0P4L0",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"C6F0SFZ0N0P3L0",
"PPCN060874FEGNW"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
},
{
"models": [
"C6F0SGZ3N0P6L2",
"C9F0SeZ0N0P7L0",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/1"
},
{
"models": [
"C9F0SEZ0N0P7L0"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 10554,
"url": "1/h264major"
},
{
"models": [
"ipc720"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"IP-CAM"
],
"type": "VLC",
"protocol": "mms",
"port": 0,
"url": "img/video.asf"
},
{
"models": [
"IP-CAM"
],
"type": "FFMPEG",
"protocol": "mms",
"port": 554,
"url": "/img/video.asf"
},
{
"models": [
"IPCAM v380",
"IPCAM V380"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "live/ch00_0"
},
{
"models": [
"IPCAM V380",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"IPCAM V380",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 10554,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"IPCAM V380",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam[CHANNEL]/h264"
},
{
"models": [
"L SERIES",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=11"
},
{
"models": [
"L SERIES",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"NEXHT360"
],
"type": "VLC",
"protocol": "rtsp",
"port": 1935,
"url": "/cam/realmonitor?channel=1&subtype=00&authbasic=[AUTH]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "live?camera=[CHANNEL]&fps=5&quality=75&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=0&user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video?submenu=mjpg"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image.jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg?q=30&fps=33&id=0.5"
},
{
"models": [
"Other",
"P2P"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 10554,
"url": "/tcp/av0_0"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "api/mjpegvideo.cgi?InputNumber=1&StreamNumber=[CHANNEL]"
},
{
"models": [
"rc8025"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=3"
},
{
"models": [
"SCRICAM AP004",
"SRICAM AP006"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
}
]
}

View file

@ -1,64 +0,0 @@
{
"brand": "3r",
"brand_id": "3r",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other",
"Prestige DVR",
"PRESTİGE DVR"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "current[CHANNEL].jpg"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam[CHANNEL]/h264"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "ipcam/avc.cgi?audiostream=[CHANNEL]"
},
{
"models": [
"Prestige DVR"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image/[CHANNEL].jpg"
},
{
"models": [
"Prestige DVR"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "/control/faststream.jpg?stream=MxPEG&needlength&fps=6"
}
]
}

View file

@ -1,251 +0,0 @@
{
"brand": "3svision",
"brand_id": "3svision",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"N3011",
"N6078",
"N6079"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/cam1/onvif-h264"
},
{
"models": [
"N3071",
"N6078",
"N9071",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam1/onvif-h264-1"
},
{
"models": [
"N3072",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image.jpg"
},
{
"models": [
"N6013"
],
"type": "MJPEG",
"protocol": "http",
"port": 80,
"url": "/axis-cgi/mjpg/video.cgi"
},
{
"models": [
"N6071",
"N8072",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi"
},
{
"models": [
"N6076"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/11"
},
{
"models": [
"N8072"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image/[CHANNEL].jpg"
},
{
"models": [
"N8072",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam[CHANNEL]/h264"
},
{
"models": [
"N9073"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi?date=1&clock=1&camera=[CHANNEL]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "GetData.cgi"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam1/mpeg4"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam2/mpeg4"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam3/mpeg4"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam4/mpeg4"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "current[CHANNEL].jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
}
]
}

View file

@ -1,245 +0,0 @@
{
"brand": "3xlogic",
"brand_id": "3xlogic",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"3mp",
"vsx"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/video.h264"
},
{
"models": [
"3mp",
"CMC-3MP-OD-I",
"VSX-2MP-MVD40",
"VX-3P28-OD-I"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/1"
},
{
"models": [
"3mp"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/"
},
{
"models": [
"avtech",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/guest/Video.cgi?media=JPEG&channel=[CHANNEL]"
},
{
"models": [
"AVTECH",
"vsx-2mp-d",
"VX-3PV-B-I",
"VX-4S28-MD-I"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "live/mpeg4"
},
{
"models": [
"Other",
"vsx-2m-d",
"VSX-2MP-MVD40"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "video.h264"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpg/1/image.jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "ch0_0.h264"
},
{
"models": [
"Radio"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=0&user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"rc8025"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=3"
},
{
"models": [
"Vigil Server"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "live?camera=[CHANNEL]&quality=75&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Vigil Server"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "live?camera=[USERNAME]&quality=75&resolution=[PASSWORD]"
},
{
"models": [
"Vigil Server"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "live?camera=[USERNAME]&quality=75&fps=5&resolution=[PASSWORD]"
},
{
"models": [
"Vigil Server"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "live?camera=[CHANNEL]&fps=5&quality=75&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"vsx",
"VX-3P28-MD-IA"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ch0_0.h264"
},
{
"models": [
"VSX-2MP-MVD40"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "img/video.mjpeg"
},
{
"models": [
"VX-3M-F-AWD",
"VX-3m-OD2-RIAWD"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 555,
"url": "/11"
},
{
"models": [
"VX-3P28-MD-IA"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/stream0"
},
{
"models": [
"VX-4S28-MD-I"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=1&subtype=00&authbasic=[AUTH]"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "4er",
"brand_id": "4er",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/live/av0"
}
]
}

View file

@ -1,85 +0,0 @@
{
"brand": "4mp Ip Camera",
"brand_id": "4mp-ip-camera",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"47680146",
"KEYE",
"Other",
"Security"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
},
{
"models": [
"g-240",
"G42"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"ID002A",
"IPB8224"
],
"type": "VLC",
"protocol": "http",
"port": 81,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"ipc-2mpvd28w"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/h264_stream"
},
{
"models": [
"ipc-2mpvd28w"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/?action=stream"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "VIDEO.CGI"
},
{
"models": [
"uniview"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/onvif-stream2"
},
{
"models": [
"zero"
],
"type": "FFMPEG",
"protocol": "http",
"port": 8090,
"url": "/video.mjpg?q=30&fps=33&id=0.5"
}
]
}

View file

@ -1,72 +0,0 @@
{
"brand": "4sdot",
"brand_id": "4sdot",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"4331911061",
"4S-B05W-720P",
"B05W-720"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"4S-B05W-720P",
"B05W-720P",
"CMOS720P",
"hx series"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"B05W-720P",
"B07BW-1080P-HX",
"HX series",
"HX SERIES",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/11"
},
{
"models": [
"B07BW-1080P-HX",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/1"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/live/av0"
},
{
"models": [
"PW638K"
],
"type": "MJPEG",
"protocol": "http",
"port": 81,
"url": "videostream.cgi"
}
]
}

View file

@ -1,209 +0,0 @@
{
"brand": "4ucam",
"brand_id": "4ucam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Eyes DVR",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "/cgi-bin/Stream?Video?Acc=[USERNAME]?Pwd=[PASSWORD]?webcamPWD=UserCookie00000"
},
{
"models": [
"EYES DVR",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"EYES DVR",
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "shot.jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/Stream?Video?Acc=[USERNAME]?Pwd=[PASSWORD]?webcamPWD=UserCookie00000"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/cam/realmonitor"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "stream.asf"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/guest/Video.cgi?media=JPEG&channel=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_jpeg.cgi?ch=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?1"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "capture[CHANNEL].jpg"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "loginfree.jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.jpg?cam=[CHANNEL]&quality=3&size=2"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "ch0_0.h264"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
}
]
}

View file

@ -1,179 +0,0 @@
{
"brand": "4xem",
"brand_id": "4xem",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"IP3112",
"IPCAMW45",
"Other",
"PT 3114",
"PZ6114",
"W50",
"WLPTG",
"WLPTS",
"WLPTZ",
"WPT",
"wptz"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.jpg?size=2"
},
{
"models": [
"IP3112",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"IP3112"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?1"
},
{
"models": [
"IpCamW45",
"KX SERIES",
"Other",
"W45"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "live.sdp"
},
{
"models": [
"IPCAMW45",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"KX SERIES",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.jpg"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other",
"PZ6114"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_jpeg.cgi?ch=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.jpg?cam=[CHANNEL]&quality=3&size=2"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32"
},
{
"models": [
"Other",
"Other3"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"PT 3114"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/video.jpg?cam=0&quality=3&size=2"
}
]
}

View file

@ -1,26 +0,0 @@
{
"brand": "4xptz",
"brand_id": "4xptz",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"30x"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "live_mpeg4.sdp"
},
{
"models": [
"M400"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/stream0"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "555",
"brand_id": "555",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "5mpbullet",
"brand_id": "5mpbullet",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Onvif/live/1/1"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "7-star",
"brand_id": "7-star",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"WIPB-SC22"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
}
]
}

View file

@ -1,763 +0,0 @@
{
"brand": "7links",
"brand_id": "7links",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{
"models": [
"3628-675",
"PX-3615-675"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]*[HEIGHT]"
},
{
"models": [
"3655",
"3786-675",
"IPC-440HD",
"IPC-710IR",
"Meins",
"Other",
"PX3309",
"PX3615",
"PX-3628-675",
"PX-3671-675 LHL",
"px-3688-675",
"px-3722-675",
"PX3744",
"Sitzplatz"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf"
},
{
"models": [
"3655",
"ipc-710ir",
"ipc-720",
"IP-CAM",
"PX 3675",
"PX3309",
"PX-3615"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"3655",
"7LinksCamBarn",
"IPC-380",
"IPC-720",
"IPC-720 HD",
"IPC-800.FHD",
"ipc900.ptz",
"NX4275",
"NX-4284-675",
"PX3615",
"PX-3688-675",
"PX-3755"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/live/ch0"
},
{
"models": [
"3671",
"3677",
"3677-675",
"3720-675",
"3720-919",
"3755",
"Incam",
"ipc-720",
"IPC-760HD",
"IPC-770HD",
"IP-Cam-in",
"Other",
"PX3309",
"PX-3671-675 LHL",
"px-3675",
"px-3719-675",
"px-3720-675",
"PX-3720-675",
"Überwachung"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"3671",
"3677",
"3677-675",
"3720-919",
"IPC-440.HD",
"ipc-710ir",
"IPC-710IR",
"IP-Cam-in",
"IP-Wi-Fi",
"lenacam",
"Other",
"PX 3675",
"px 3675-675",
"PX3309",
"PX3614_675",
"PX3615",
"px-3671",
"PX-3671-675 LHL",
"px-3688-675",
"px-3722-675",
"Px3722-675"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"3671",
"as",
"moja",
"Other",
"PX3614_12",
"PX3615",
"PX-3615-675",
"px-3671",
"RoboCam III"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"3677",
"374411",
"3755",
"ipc-20hd",
"IPC-340HD",
"IPC-440.HD",
"IPC440HD",
"IPC-720",
"IPC-770HD",
"IPC-850.FHD",
"Other",
"Px3722-675",
"px3744",
"PX-3744",
"Px3744-675",
"px3755",
"PX-3755",
"PX-3765-675",
"px-3775",
"PX-4760"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=[USERNAME]&pwd=[PASSWORD]&"
},
{
"models": [
"3677",
"HAUSTÜR",
"IPC-710IR",
"IP-WI-FI",
"Other",
"px-1179-675",
"px-1279",
"PX3309",
"PX3615",
"PX-3688-675",
"RoboCam II",
"ROBOCAM III",
"ÜBERWACHUNG",
"Wireless"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi/mjpg/mjpeg.cgi"
},
{
"models": [
"3677",
"IPC-430 WIFI",
"IPC-631.HD",
"IP-CAM",
"Other",
"PX-3615"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"3720-675",
"ipc-720 HD",
"IPC-760HD",
"IPC-770HD",
"Other",
"PX 3675",
"px 3675-675",
"PX-3671-675 LHL",
"PX36771-1",
"px-3720-675"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video_snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"3720-675",
"ipc-720",
"NX-4558"
],
"type": "VLC",
"protocol": "rtsp",
"port": 5544,
"url": "ch0_0.h264"
},
{
"models": [
"3744",
"IPC 260",
"IPC-20HD",
"ipc900.ptz",
"Other",
"PX 3760-675",
"PX-3755-675"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "videoMain"
},
{
"models": [
"3775-675"
],
"type": "JPEG",
"protocol": "http",
"port": 88,
"url": "/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"4336",
"IPC-20HD",
"IPC-430 WIFI",
"IPC-720 HD",
"IP-CAM-IN",
"nx-4341-675",
"NX-4341-675",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"CS131A",
"RoboCam",
"RoboCam II",
"RoboCam III"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi/jpg/image.cgi"
},
{
"models": [
"Haustür",
"IP-Wi-Fi",
"Other",
"PX3614_12",
"PX3615",
"px-3722-675"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=11"
},
{
"models": [
"IPC-220.hd",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": ""
},
{
"models": [
"IPC-340HD",
"ipc-380",
"IPC-770HD",
"IP-CAM",
"PX-37878"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/live/av0"
},
{
"models": [
"IPC-400"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/av0_0"
},
{
"models": [
"IPC-430 WIFI",
"Other",
"PX3615"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"IPC-440.HD",
"IPC-440HD",
"IPC-750HD",
"ipc900.ptz",
"NX-4207",
"NX-4209"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 80,
"url": "/videoMain"
},
{
"models": [
"IPC-440.HD",
"IPC-720",
"NX-4558-913"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/live1.264"
},
{
"models": [
"IPC440HD",
"ipc900.ptz"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam/realmonitor?channel=[CHANNEL]&subtype=1"
},
{
"models": [
"IPC-440HD",
"ipc-720",
"Other",
"PX3309",
"PX3615",
"px-3675",
"px-3688-675"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"ipc-631.hd",
"px-3690"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg"
},
{
"models": [
"ipc-631.hd",
"px-3690"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg?q=30&fps=33&id=0.5"
},
{
"models": [
"IPC-710IR",
"Other",
"PX3615",
"px-3690"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi"
},
{
"models": [
"ipc-720",
"IPC-720 HD",
"Other",
"PX3615",
"px-3690"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?"
},
{
"models": [
"IPC-720 HD",
"IP-CAM",
"nx 4389",
"NX-4389-675",
"Other",
"pano360s",
"SK7008-T1F1"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg"
},
{
"models": [
"IP-CAM",
"PX3614_675"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"IP-CAM",
"Other",
"PX3615"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?resolution=8&rate=13"
},
{
"models": [
"IP-Wi-Fi",
"Other",
"PX3615"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=0&user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"KT-6764",
"PX-3744",
"RoboCam III"
],
"type": "MJPEG",
"protocol": "http",
"port": 80,
"url": "/?action=stream"
},
{
"models": [
"NX-4209"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 88,
"url": "/live/h264/ch0"
},
{
"models": [
"NX-4336-675"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/11"
},
{
"models": [
"NX-4389-675",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 88,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
},
{
"models": [
"Other",
"PX3615"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other",
"PX3309"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video?profile=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"px 3675-675",
"PX3615",
"px3723"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi"
},
{
"models": [
"px 3675-675"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=320*240"
},
{
"models": [
"PX3309",
"PX3615"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"PX3614_675"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=320x240"
},
{
"models": [
"PX-3615-675"
],
"type": "FFMPEG",
"protocol": "http",
"port": 888,
"url": "/videostream.asf"
},
{
"models": [
"PX-3615-675"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&password=[PASSWORD]"
},
{
"models": [
"px-3688-675"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "?action=stream"
},
{
"models": [
"px-3690"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpg/image.jpg?size=3"
},
{
"models": [
"px-3690"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/"
},
{
"models": [
"RoboCam II",
"RoboCam III"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi/mjpg/mjpg.cgi"
},
{
"models": [
"RoboCam II"
],
"type": "JPEG",
"protocol": "http",
"port": 82,
"url": "/cgi/jpg/image.cgi"
},
{
"models": [
"RoboCam III"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "user/videostream.cgi"
},
{
"models": [
"RoboCam III"
],
"type": "FFMPEG",
"protocol": "http",
"port": 82,
"url": "/cgi/mjpg/mjpg.cgi"
},
{
"models": [
"IPC-300"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/101"
},
{
"models": [
"IPC-740"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/Streaming/Channels/102"
},
{
"models": [
"PX3615",
"SK7008-T1F1"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/401"
}
]
}

View file

@ -1,36 +0,0 @@
{
"brand": "8level",
"brand_id": "8level",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"IPED-2MP-36-1",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/h264_stream"
},
{
"models": [
"v380"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
}
]
}

View file

@ -1,53 +0,0 @@
{
"brand": "9up",
"brand_id": "9up",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"DIP3"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/sf.cgi"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "A-bmi",
"brand_id": "a-bmi",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
}
]
}

View file

@ -1,80 +0,0 @@
{
"brand": "A-link",
"brand_id": "a-link",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"101",
"IPC1",
"IPC2",
"IPC3"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi/jpg/image.cgi"
},
{
"models": [
"101",
"IPC1",
"IPC2"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi/mjpg/mjpeg.cgi"
},
{
"models": [
"AICN500W",
"IPC1"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi/mjpg/mjpg.cgi"
},
{
"models": [
"IPC2"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"IPC3",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image.cgi?resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"IPC3",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"IPC3",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "/Video?Codec=MPEG4&Width=720&Height=576&Fps=30"
}
]
}

View file

@ -1,143 +0,0 @@
{
"brand": "A-mtk",
"brand_id": "a-mtk",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"2570D",
"6566",
"Other",
"SUPER"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "media/media.amp"
},
{
"models": [
"6566",
"AM9539M",
"Dome",
"Other",
"SUPER"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_video.cgi?channel=[CHANNEL]"
},
{
"models": [
"AH2927T-A"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/media.amp"
},
{
"models": [
"AH2927T-A",
"Dome",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi"
},
{
"models": [
"AM2110D"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/media.amp?streamprofile=Profile1"
},
{
"models": [
"AM2110D"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/media.amp?streamprofile=Profile2"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam/realmonitor?channel=[CHANNEL]&subtype=00"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "capture[CHANNEL].jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video?profile=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "A-tion",
"brand_id": "a-tion",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"A0528"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/11"
}
]
}

View file

@ -1,55 +0,0 @@
{
"brand": "A1webcam",
"brand_id": "a1webcam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/jpg.cgi?refresh=0&channel=[CHANNEL]&id=[USERNAME]&pass=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]&oldbrowser=1"
},
{
"models": [
"Other",
"Phone"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]*[HEIGHT]"
},
{
"models": [
"tyytt"
],
"type": "MJPEG",
"protocol": "http",
"port": 8080,
"url": "/videofeed"
},
{
"models": [
"Wanscam",
"web1"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
}
]
}

View file

@ -1,141 +0,0 @@
{
"brand": "A4tech",
"brand_id": "a4tech",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"432b",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/guest/Video.cgi?media=JPEG"
},
{
"models": [
"432b",
"avm457",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/guest/Video.cgi?media=JPEG&channel=[CHANNEL]"
},
{
"models": [
"AVM457",
"Ganek",
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"AVM457",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"ITD2016",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image.jpg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=11"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "nphMotionJpeg?Resolution=640x480&Quality=Standard"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=0&user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "GetData.cgi"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "[CHANNEL]/[USERNAME]:[PASSWORD]/main"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg?q=30&fps=33&id=0.5"
}
]
}

View file

@ -1,24 +0,0 @@
{
"brand": "Aanke",
"brand_id": "aanke",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"191BL",
"191BM",
"C500",
"C800",
"I51DL",
"I91BF",
"I91BN",
"I91-DX"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/user=[USERNAME]_password=[PASSWORD]_channel=1_stream=0.sdp"
}
]
}

View file

@ -1,80 +0,0 @@
{
"brand": "Abelcam",
"brand_id": "abelcam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"005"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi/snapshot.cgi?action=getdata&channel.[CHANNEL].capture=true&channel.[CHANNEL].resolution=1"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_jpeg.cgi?ch=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "live/ch00_0"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"WebCam (2)"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "current[CHANNEL].jpg"
},
{
"models": [
"WebCam (2)"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "current[CHANNEL].mjpg"
},
{
"models": [
"WebCam Server"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "screen.jpg"
},
{
"models": [
"WebCam Server"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "screen.mjpg"
}
]
}

View file

@ -1,26 +0,0 @@
{
"brand": "Abient Weather",
"brand_id": "abient-weather",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"AMBIENTCAMHD"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=[USERNAME]&pwd=[PASSWORD]&"
},
{
"models": [
"SK7008-T1F1"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 10554,
"url": "/Streaming/channels/601"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Abo",
"brand_id": "abo",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Ranger Pro"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Abr Security",
"brand_id": "abr-security",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"IPC6200W"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/11"
}
]
}

View file

@ -1,32 +0,0 @@
{
"brand": "Abr",
"brand_id": "abr",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"6100",
"720p",
"ipc6100w"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"6100",
"6200",
"ABR-IPD6200W",
"IPC6100W",
"IPD6200W"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/11"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Abron",
"brand_id": "abron",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"AB-IPR506NB-US"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/rtsph2641080p"
}
]
}

View file

@ -1,108 +0,0 @@
{
"brand": "Abs",
"brand_id": "abs",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"3 series"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"3 series",
"4 series"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "mjpg/1/video.mjpg"
},
{
"models": [
"3 SERIES",
"4 SERIES",
"MegaCam",
"MegaCam 312M",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpg/1/image.jpg"
},
{
"models": [
"3 SERIES",
"4 SERIES",
"megacam 4210",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "mpeg4/[CHANNEL]/media.amp"
},
{
"models": [
"4 series",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"4 SERIES",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "mjpg/[CHANNEL]/video.mjpg"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_jpeg.cgi?ch=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=0"
}
]
}

View file

@ -1,35 +0,0 @@
{
"brand": "Absolutron",
"brand_id": "absolutron",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "image.mpg"
},
{
"models": [
"ptz"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
}
]
}

View file

@ -1,676 +0,0 @@
{
"brand": "Abus",
"brand_id": "abus",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]01"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{
"models": [
"10550",
"Other",
"TV21550",
"TVIP10500",
"TVIP10550",
"TVIP11000",
"TVIP20000",
"TVIP21550",
"TVIP51550",
"TVIP52501"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpg/image.jpg"
},
{
"models": [
"21501",
"Other",
"TVIP10001",
"TVIP10050",
"TVIP10051",
"TVIP21050",
"TVIP21500",
"TVIP31050",
"TVIP52501",
"tvip71000",
"TVIP71550"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpg/image.jpg?size=3"
},
{
"models": [
"2718",
"Digi-Lan TV7204",
"DIGI-LAN TV7219",
"Digi-Lan TV7230",
"DIGI-LAN TV7230 V2",
"Innenhof",
"Other",
"tv7202",
"TV7203",
"TV7210",
"TV7214",
"tv7216",
"tv7218",
"TV7240-LAN",
"TVIP51550"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.jpg"
},
{
"models": [
"ABUS: TVIP82100",
"IPCB64621",
"TVIP42561"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/user=[USERNAME]_password=[PASSWORD]_channel=1_stream=0.sdp"
},
{
"models": [
"casa",
"DIGI-LAN TV7230 V2",
"Other20550",
"TV7203",
"TV7220",
"TVIP41550",
"TVIP52500",
"TVIP52501"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/viewer/video.jpg?resolution=640x480"
},
{
"models": [
"CF3",
"ipcb42501",
"IPCB54611B",
"IPCB74521",
"IPCB78520",
"IPCS84530",
"TVIP11560",
"TVIP41500",
"TVIP42561",
"TVIP42562",
"TVIP44510",
"TVIP60000",
"TVIP61500",
"TVIP61550",
"TVIP61560",
"TVIP62000",
"TVIP62560"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/1"
},
{
"models": [
"Digilan 7230",
"TV7204V2",
"tv7216",
"TV7230"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.jpg?size=2"
},
{
"models": [
"DIGILAN 7230",
"Digi-Lan TV7204",
"Digi-Lan TV7230",
"DIGI-LAN TV7230",
"DIGI-LAN TV7230 V2",
"entree",
"foyer",
"Other",
"Other20550",
"TV7203",
"tv7204",
"TV7220",
"TV7240-LAN",
"TVIP11000",
"TVIP21550",
"TVIP41550_CAM1",
"TVIP52500",
"TVIP61560"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "live.sdp"
},
{
"models": [
"Digi-Lan TV7204",
"Other",
"Other20550",
"TV7204v2",
"TV7222",
"TVIP41550",
"TVIP51550"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/viewer/video.jpg?channel=[CHANNEL]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Digi-Lan TV7206",
"Digi-Lan TV7230 v2",
"TVIP41550",
"tvip52500",
"tvip52501",
"TVIP52501",
"TVIP60550"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/viewer/video.jpg"
},
{
"models": [
"Digi-Lan TV7206",
"Digi-Lan TV7230 v2",
"FENIX",
"HD720p Dome",
"Other",
"Other20550",
"TIVP 31500",
"TV21550",
"TV7203",
"TVIP10000",
"TVIP10001",
"TVIP10055",
"TVIP11000",
"TVIP11502",
"TVIP11551",
"TVIP11552",
"TVIP21500",
"TVIP21550",
"tvip21551",
"tvip21552",
"TVIP21552",
"TVIP21560",
"TVIP31551",
"TVIP32500",
"TVIP41550",
"TVIP51550",
"TVIP71501",
"TVIP71551",
"TVIP717551",
"tvipem"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg"
},
{
"models": [
"DVR90001"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Unicast/channels/101.sdp"
},
{
"models": [
"DVR9001"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Unicast/channels/102.sdp"
},
{
"models": [
"DVR9001"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Unicast/channels/202.sdp"
},
{
"models": [
"HDCC90001"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Unicast/channels/201.sdp"
},
{
"models": [
"IP17550",
"IPS17550",
"IR 1080p",
"tvip10550",
"TVIP21500",
"tvip21551",
"tvip21552",
"TVIP52500",
"TVIP61550",
"TVIP62560",
"TVIP71501"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/video.mp4"
},
{
"models": [
"IP4100",
"TVIP42561",
"TVIP92700"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/stream1"
},
{
"models": [
"IP4100",
"IPCS34511A"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/h264_stream"
},
{
"models": [
"IPCA 62520",
"IPCB42515A",
"IPCB62510A",
"TVIP61560"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/1"
},
{
"models": [
"IPCA 72500",
"IPCB42515A"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/s2"
},
{
"models": [
"IPCB54611B",
"TVIP44510",
"TVIP68510"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/0"
},
{
"models": [
"IPCb64620",
"IPCB78520",
"IPCS84530",
"TVIP 21000",
"TVIP41500",
"TVIP60000",
"TVIP61500",
"TVIP61550",
"TVIP61560",
"TVIP62560"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/live.sdp"
},
{
"models": [
"IPCB7250",
"IPCB74520",
"IPCB74521",
"IPCB78520",
"TVIP22500",
"TVIP31001",
"TVIP31501",
"TVIP32500",
"TVIP60000",
"TVIP71501",
"TVIP72500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/video.h264"
},
{
"models": [
"IPTV42560"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam[CHANNEL]/h264"
},
{
"models": [
"IPTV605550",
"TVIP41550"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/viewer/video.jpg?resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"Other",
"TVIP10000",
"TVIP20000",
"TVIP20050",
"TVIP21500",
"tvip21551"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/jpg/image"
},
{
"models": [
"Other",
"TVIP20000",
"TVIP21500",
"TVIP717551"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view/image?pro_[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"Other",
"PortCam",
"TV20550",
"TV21550",
"TV32500",
"TVIP10550",
"TVIP11560",
"TVIP20000",
"TVIP20550",
"TVIP21550",
"TVIP41500",
"TVIP41550",
"TVIP61500",
"TVIP71501"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "video.mp4"
},
{
"models": [
"TIVP 31550",
"TVIP10001",
"TVIP10051",
"TVIP10055",
"TVIP11551",
"TVIP21501",
"TVIP21550",
"TVIP40000",
"TVIP41550",
"TVIP51500",
"TVIP51550",
"TVIP71550"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg?q=30&fps=33&id=0.5"
},
{
"models": [
"TIVP41550"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/viewer/video.jpg?resolution=320x240"
},
{
"models": [
"tv7203",
"TVIP41550"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/viewer/video.jpg?resolution=640x480"
},
{
"models": [
"TVIP10055",
"tvip10055A",
"TVIP10055A"
],
"type": "JPEG",
"protocol": "http",
"port": 10001,
"url": "/jpg/image.jpg?size=3"
},
{
"models": [
"TVIP21000",
"tvip41560"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ch0_0.h264"
},
{
"models": [
"TVIP21500"
],
"type": "MJPEG",
"protocol": "http",
"port": 80,
"url": "/video.mjpg"
},
{
"models": [
"TVIP22500",
"TVIP31001",
"TVIP32500",
"TVIP41560",
"TVIP62520"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "video.h264"
},
{
"models": [
"TVIP41500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/11"
},
{
"models": [
"TVIP41500",
"TVIP41550_cam1",
"TVIP41550_cam2"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "VideoInput/[CHANNEL]/h264/1"
},
{
"models": [
"TVIP41550"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video[USERNAME].mjpg"
},
{
"models": [
"tvip41560",
"TVIP61550"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/2"
},
{
"models": [
"TVIP62000",
"TVIP62500"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpeg/pull"
},
{
"models": [
"TVIP72000"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/VideoInput/0/h264/1"
},
{
"models": [
"TVIP82561"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/mpeg4/media.amp?resolution=640x480"
},
{
"models": [
"IPCA53000",
"IPCB42510B",
"IPCB44510A",
"IPCB64515B"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/102"
},
{
"models": [
"IPCB42550",
"IPCB78520",
"NVR10030",
"TVIP41500",
"TVIP52500"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
}
]
}

View file

@ -1,28 +0,0 @@
{
"brand": "Ac38xx",
"brand_id": "ac38xx",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"dm12",
"MD12"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/onvif/live/2"
},
{
"models": [
"DM12",
"MD12"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/onvif/live/1"
}
]
}

View file

@ -1,36 +0,0 @@
{
"brand": "Acam",
"brand_id": "acam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"C2100"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/ONVIF/channel2"
},
{
"models": [
"imp2irmptz"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/user=[USERNAME]_password=[PASSWORD]_channel=1_stream=0.sdp"
},
{
"models": [
"n287z752",
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
}
]
}

View file

@ -1,29 +0,0 @@
{
"brand": "Accfly",
"brand_id": "accfly",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"c091wx",
"c102wx",
"c120wx",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
},
{
"models": [
"P72"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Accsxperts",
"brand_id": "accsxperts",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"5deMayo"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
}
]
}

View file

@ -1,31 +0,0 @@
{
"brand": "Ace",
"brand_id": "ace",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Esperanza",
"Other",
"samsung",
"Xin",
"Yca"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"noname",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/profile0"
}
]
}

View file

@ -1,123 +0,0 @@
{
"brand": "Acer",
"brand_id": "acer",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"A100",
"A500",
"ASPIRE",
"LMT"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"A500"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"A500",
"Apire One",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image.jpg"
},
{
"models": [
"A500"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "current[CHANNEL].jpg"
},
{
"models": [
"A500"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "/control/faststream.jpg?stream=MxPEG&needlength&fps=6"
},
{
"models": [
"Apire One"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "Image.jpg"
},
{
"models": [
"Apire One",
"Aspire"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "out.jpg?id=0.5"
},
{
"models": [
"Aspire"
],
"type": "MJPEG",
"protocol": "http",
"port": 8090,
"url": "/video.mjpg"
},
{
"models": [
"ASPIRE"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Iconia",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "shot.jpg"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/cam/realmonitor"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Aceri-bcn",
"brand_id": "aceri-bcn",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/video.cgi?msubmenu=mjpg"
}
]
}

View file

@ -1,90 +0,0 @@
{
"brand": "Acesee",
"brand_id": "acesee",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"AC04",
"AVZM40P130",
"DSE",
"EB225/SH",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/1"
},
{
"models": [
"acdsee",
"ST-316-2M-AI"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/h264_stream"
},
{
"models": [
"AMB36HL200W"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8061,
"url": "/2"
},
{
"models": [
"AVP40P200",
"Dome",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/0"
},
{
"models": [
"AVTN40P130",
"avzm40p200",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"AVZM40P130"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "ipcam/avc.cgi?audiostream=[CHANNEL]"
},
{
"models": [
"K9604-W",
"ST-316-2M-AI"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
}
]
}

View file

@ -1,56 +0,0 @@
{
"brand": "Achtertuin",
"brand_id": "achtertuin",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"3011",
"N3011"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/cam1/onvif-h264"
},
{
"models": [
"3011",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"Hooldoor",
"huawau"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
},
{
"models": [
"Link"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Panasonic"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "nphMotionJpeg?Resolution=640x480&Quality=Standard"
}
]
}

View file

@ -1,18 +0,0 @@
{
"brand": "Acm-v3002",
"brand_id": "acm-v3002",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Fine",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/stream2"
}
]
}

View file

@ -1,62 +0,0 @@
{
"brand": "Acm",
"brand_id": "acm",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"1311"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/encoder?USER=[USERNAME]&PWD=[PASSWORD]&SNAPSHOT"
},
{
"models": [
"4100b"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": ""
},
{
"models": [
"m101"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"m101"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi/mjpg/mjpeg.cgi"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Acor",
"brand_id": "acor",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
}
]
}

View file

@ -1,182 +0,0 @@
{
"brand": "Acromedia",
"brand_id": "acromedia",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"009",
"ACROMEDIA IN-009",
"IN/EX",
"IN/EX Series",
"IN-010",
"IN-09",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 10554,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"009",
"Acromedia IN-009",
"ACROMEDIA IN-009",
"BLW-2004E-AHD",
"IN-010",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/11"
},
{
"models": [
"BLW-2004E-AHD"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"ECESMS",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"in/ex",
"IN/EX Series",
"IN-010",
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"IN/EX",
"IN/EX Series"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=11"
},
{
"models": [
"IN/EX Series",
"IN/EX SERİES",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi"
},
{
"models": [
"in-009",
"IN-010",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/12"
},
{
"models": [
"IN-009",
"IN-010"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
},
{
"models": [
"IN-010"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"IN-010"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/ONVIF/channel2"
},
{
"models": [
"IN-010"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&password=[PASSWORD]"
},
{
"models": [
"IN-010"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "ipcam/avc.cgi?audiostream=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam1/mpeg4"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "MediaInput/mpeg4"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg"
}
]
}

View file

@ -1,727 +0,0 @@
{
"brand": "Acti",
"brand_id": "acti",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"000",
"00217",
"1231",
"1239",
"3411",
"3511",
"4200",
"4201",
"5711n",
"7411 B",
"7911",
"8201",
"A41",
"A71",
"acd 2200",
"ACD2000",
"ACD2100",
"ACM-1011",
"ACM11231",
"ACM1231",
"ACM-1431",
"ACM-1431N",
"acm-1431P",
"ACM-1432P",
"acm3001",
"ACM-3001",
"ACM3011",
"ACM-3211",
"ACM3401",
"ACM-3411",
"ACM-3511",
"ACM3601",
"ACM-3601",
"ACM3701",
"acm-4000",
"acm4001",
"ACM-4001",
"ACM-4100",
"ACM-4200",
"acm4201",
"ACM-4201",
"ACM-5001",
"ACM-5601",
"acm-5611",
"ACM5611",
"ACM-7411",
"acm-7511",
"acm8201",
"ACM-8211",
"ACM-8511",
"ACN-3211",
"acti d55",
"ACTI IP CAMERA",
"ACTI-1231",
"ACTiMyView",
"ADC3011",
"B21",
"B27",
"B410",
"B45",
"b53",
"B77A",
"b97",
"D11",
"D12",
"D31",
"D32",
"D51",
"D52",
"D55",
"d61a",
"D64",
"d71a",
"D72",
"D72A",
"D82",
"D92",
"E 913",
"E12",
"E12A",
"E13",
"E22VA",
"E31",
"E32",
"E32A",
"E33",
"E36",
"e37",
"E41",
"E42",
"E42A",
"E43",
"e43b",
"E44A",
"E45A",
"E46",
"E51 Manual",
"E53",
"e56",
"E61",
"E62A",
"E66",
"E72A",
"E77",
"E77--A-XX-14E-00179",
"E77-Phil",
"E816",
"E82",
"E91",
"E92",
"E93",
"E94",
"e97",
"E98",
"I51",
"I96",
"i98",
"KCM-3311",
"KCM-3911",
"KCM-5211",
"KCM5511",
"KCM5611",
"KCM-5611",
"KCM7111",
"Other",
"SED-2120",
"SHS",
"TCM 4301",
"TCM 4511",
"TCM-1111",
"TCM1231",
"TCM-1511",
"TCM3041",
"TCM-3111",
"TCM3401",
"TCM3411",
"TCM-3511",
"TCM-4101",
"TCM-4201",
"TCM4301-09C-X",
"tcm-4511",
"TCM5311",
"TCM5611",
"TCM7411",
"tcm-7811"
],
"type": "JPEG",
"protocol": "http",
"port": 7070,
"url": "cgi-bin/encoder?USER=[USERNAME]&PWD=[PASSWORD]&SNAPSHOT"
},
{
"models": [
"000",
"7411 B",
"acm 8511",
"ACM3601",
"acm4201",
"ACM-4201",
"ACM-7411",
"ACM-8211",
"acti d55",
"D52",
"D55",
"d61a",
"D92",
"Dome",
"E54",
"E77",
"KCM-5211",
"TCM1231",
"TCM-1231",
"tcm-4511"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/encoder?USER=[USERNAME]&PWD=[PASSWORD]&SNAPSHOT"
},
{
"models": [
"1231",
"3411",
"A41",
"A416",
"ACD2100",
"ACM-1231",
"ACM-1431N",
"ACM3211",
"ACM-3401",
"ACM-3511",
"ACM-4001",
"ACM-4201",
"ACM-7411",
"b53",
"B54",
"B910",
"B95--A2XX-14B-00310",
"d11",
"D12",
"D21",
"D31",
"D32",
"D42",
"D51",
"D52",
"D55",
"D72",
"D82",
"D92",
"DO4M36A",
"E12",
"E13",
"E32",
"E33",
"E33 chan2",
"E42A",
"E43",
"E43A",
"E46",
"E51",
"E52",
"E53",
"E53--A-XX-13G-00029",
"e617",
"E63",
"E65",
"E73",
"E73A-A-XX-15C-00034",
"E76",
"E77",
"E81",
"E82",
"E84",
"E86a",
"E91",
"E96",
"I42",
"I51",
"KCM-3311",
"KCM-3911",
"KCM-5611",
"KCM7211",
"KCM7911",
"KCM8211",
"Other",
"v24",
"Z31",
"Z34",
"Z82",
"z95"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/stream1"
},
{
"models": [
"1231",
"1511",
"4200",
"ACCA",
"ACD2100",
"ACM 5711",
"ACM-1011",
"acm1231",
"acm1431",
"ACM-1511",
"acm3001",
"ACM-3001",
"ACM3211",
"ACM-3311",
"ACM-3401",
"ACM-3411",
"ACM-3511",
"ACM3601",
"ACM-4001",
"ACM-4200",
"ACM-4201",
"ACM-5601",
"ACM-7411",
"ACM-8511",
"ACTI IP CAMERA",
"B41",
"B45",
"B87",
"d11",
"d31",
"D32",
"d51",
"D64",
"d72",
"D82A",
"E12",
"E12A",
"E14",
"E22",
"E271",
"E33 chan2",
"E37",
"E441A",
"E61",
"E66",
"E77",
"E77--A-XX-14E-00179",
"E91",
"E92",
"E93",
"E96",
"E97",
"E98",
"KCM-5611",
"KCM7211",
"kcm-8111",
"Other",
"TCM 4511",
"TCM3011",
"TCM-4201",
"TCM-5111",
"TCM5311",
"TCM5311MG",
"tcm-7811"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/cmd/system?GET_STREAM&USER=[USERNAME]&PWD=[PASSWORD]"
},
{
"models": [
"1231",
"3411",
"4201",
"ACM-1011",
"ACM1231",
"ACM1231 egen",
"ACM-3401",
"ACM-3511",
"ACM-4001",
"ACM-4201",
"acm-5601",
"ACM5611",
"B87",
"d11",
"D12",
"D21",
"d31",
"D51",
"D52",
"D55",
"D72",
"E12",
"E32",
"E33 chan2",
"E46",
"E73",
"E77",
"E91",
"i94",
"KCM-5611",
"KCM7211",
"KCM7311",
"Other",
"TCM 3511",
"TCM 4511",
"TCM1231",
"TCM3111",
"TCM-4201",
"TCM5111"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": ""
},
{
"models": [
"1231",
"22VA",
"A41",
"ACM-1231",
"ACM3211",
"ACM3411",
"ACM-5001",
"ACM5611",
"B55",
"B67",
"B71",
"B95",
"B95--A2XX-14B-00310",
"B97--A-XX-13L-00049",
"d32",
"D32--A-XX-13K-00022",
"D54",
"D55",
"D71A",
"D71--A-XX-13C-00408",
"D81A-A-XX-15E-0",
"D91",
"E11",
"E12",
"E12A",
"E13A",
"E16",
"E22VA",
"E31",
"E32A",
"E43B",
"e46",
"E46",
"E63A",
"E77",
"E77--A-XX-14F-00933",
"E81",
"E816",
"I51",
"I71",
"i910",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 7070,
"url": "/onvif-stream1"
},
{
"models": [
"1231",
"7401",
"acm1231",
"ACM-1231",
"acm4201",
"ACM-4201",
"ACM-5001",
"ACM-7411",
"B71",
"E44",
"I47",
"TCM 4301"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/cmd/system?GET_STREAM&USER=[USERNAME]&PWD=[PASSWORD]"
},
{
"models": [
"168",
"7911",
"A82",
"A84",
"a94",
"ACM-1231",
"ACM-3511",
"ACM-7411",
"ACTI IP CAMERA",
"B410",
"B43",
"b45",
"B81",
"B83",
"d11",
"D32",
"E12",
"E13A",
"E15",
"e21",
"E22VA",
"E32",
"E33",
"E33A",
"E34",
"E415",
"E42A",
"E51",
"E74A",
"E77",
"E79",
"E81",
"E86A",
"E95",
"EQ1",
"GCO",
"KCM-5311",
"KCM7311",
"KCM8211",
"Other",
"SED-2120",
"TCM 4511",
"TCM-1111",
"TCM1231",
"TCM-1231",
"TCM3111",
"TCM-3511",
"tcm-6630",
"TCM-7411"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 7070,
"url": "/"
},
{
"models": [
"A81",
"ACM3601",
"ACM-3601"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 7070,
"url": "/onvif-media/media.amp"
},
{
"models": [
"ACM-1431",
"ACM-3401",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "jpg/image.jpg"
},
{
"models": [
"ACM-3511"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam[CHANNEL]/h264"
},
{
"models": [
"ACM-3511",
"ACM-4001",
"ACM-4200"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "h264"
},
{
"models": [
"ACM-4001",
"ACTi B97",
"B96",
"B97",
"E11",
"E73--A-XX-13G-00002",
"E73--A-XX-13I-00238"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/stream2"
},
{
"models": [
"ACM-4001",
"D31",
"D82a",
"e925",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 7070,
"url": "/onvif&event&video2"
},
{
"models": [
"ACM-4201",
"TCM-1231"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "mjpeg.cgi?user=[USERNAME]&password=[PASSWORD]&channel=[CHANNEL]"
},
{
"models": [
"ACM-5001",
"ACM-7411",
"ACTi I25",
"b53",
"d10",
"D22VA",
"D61",
"E32A",
"E67a",
"E77",
"e925",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 7070,
"url": "/onvif&event&video1"
},
{
"models": [
"ACM-5001"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 7070,
"url": "/cgi-bin/cmd/encoder?GET_STREAM"
},
{
"models": [
"acm-5611",
"D61",
"d61a",
"E93"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/encoder?USER=[USERNAME]&PWD=[PASSWORD]&GET_STREAM"
},
{
"models": [
"ACM5611",
"b71",
"B95",
"BS30",
"d32-2",
"E53--A-XX-14C-00157",
"E77",
"E77--A-XX-14E-00179",
"I96--A-XX-13K-00077"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/onvif-stream2"
},
{
"models": [
"ACTi B81",
"d82a",
"E413",
"I96"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 7070,
"url": "/onvif&event&audio&video1"
},
{
"models": [
"av3100ai",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image?res=half&x0=0&y0=0&x1=1600&y1=1200&quality=15&doublescan=0&ssn=1340443365044&id=1340443379230"
},
{
"models": [
"D12"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/view/image?pro_[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi/jpg/image.cgi"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "now.jpg"
},
{
"models": [
"SRICAM"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Z34"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam0/h264"
}
]
}

View file

@ -1,72 +0,0 @@
{
"brand": "Action",
"brand_id": "action",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"000",
"b53"
],
"type": "JPEG",
"protocol": "http",
"port": 7070,
"url": "cgi-bin/encoder?USER=[USERNAME]&PWD=[PASSWORD]&SNAPSHOT"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/live/av0"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "rtsp",
"port": 0,
"url": "cam[CHANNEL]/mjpeg"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_video.cgi?channel=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "ch0_0.h264"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam[CHANNEL]/h264"
}
]
}

View file

@ -1,44 +0,0 @@
{
"brand": "Actioncam",
"brand_id": "actioncam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"cam300"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=3"
},
{
"models": [
"camm"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"IPM"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "[CHANNEL]/video.cgi"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/guest/Video.cgi?media=JPEG"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Actiontec",
"brand_id": "actiontec",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"rc8021v"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "img/video.asf"
}
]
}

View file

@ -1,28 +0,0 @@
{
"brand": "Activa",
"brand_id": "activa",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"ACT-200W",
"ACT-2800/3100"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi/mjpg/mjpg.cgi"
},
{
"models": [
"ACT-2100",
"ACT-2800/3100"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi/jpg/image.cgi"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Active Vision",
"brand_id": "active-vision",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"ACC-V11"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "GetData.cgi"
}
]
}

View file

@ -1,161 +0,0 @@
{
"brand": "Active",
"brand_id": "active",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/streaming/video0"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "mpeg4/media.amp?resolution=640x480"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?usr=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/guest/Video.cgi?media=JPEG&channel=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/guest/Video.cgi?media=JPEG"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi?date=1&clock=1&camera=[CHANNEL]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi?camera=[CHANNEL]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi?date=1&clock=1&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi?camera=1&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "ch0_0.h264"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "live"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "capture[CHANNEL].jpg"
},
{
"models": [
"SC530"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
},
{
"models": [
"SC530"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "mjpeg"
},
{
"models": [
"Vision SX-1200"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "GetData.cgi?CH=[CHANNEL]&Codec=jpeg&Size=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Vision SX-500"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "[USERNAME]/cam[CHANNEL].jpg"
}
]
}

View file

@ -1,36 +0,0 @@
{
"brand": "Activecam",
"brand_id": "activecam",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"ac-d4121ir1v2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/h264"
},
{
"models": [
"AC-D7111IR1",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/streaming/video0"
},
{
"models": [
"AC-D7111IR1"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/streaming/video1"
}
]
}

View file

@ -1,49 +0,0 @@
{
"brand": "Acumen",
"brand_id": "acumen",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"AiP-B24N",
"AiP-B34",
"AiP-M53",
"Other",
"Y04"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/rtsph2641080p"
},
{
"models": [
"AIS-S22H-B1Y0W"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/user=[USERNAME]_password=[PASSWORD]_channel=1_stream=1.sdp"
},
{
"models": [
"ekran",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "mpg4/rtsp.amp"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
}
]
}

View file

@ -1,26 +0,0 @@
{
"brand": "Acunico",
"brand_id": "acunico",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/ucast/11"
}
]
}

View file

@ -1,35 +0,0 @@
{
"brand": "Acvil",
"brand_id": "acvil",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL+1]02"
},
{
"models": [
"ALL"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/[CHANNEL]02"
},
{
"models": [
"WIFI-5MP-30"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/channels/702"
}
]
}

View file

@ -1,26 +0,0 @@
{
"brand": "Adamas",
"brand_id": "adamas",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"wnc-01"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"wnc-01"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg?JpegCam=[CHANNEL]"
}
]
}

View file

@ -1,26 +0,0 @@
{
"brand": "Adapter",
"brand_id": "adapter",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"dvr"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf"
}
]
}

View file

@ -1,67 +0,0 @@
{
"brand": "Adata",
"brand_id": "adata",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"1MP HD P2P CAMERA"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/live/ch0"
},
{
"models": [
"AMB",
"AMB-MD",
"APOIP-MB",
"BLC02",
"EYE1.3",
"EYE2MBS",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/cam/realmonitor"
},
{
"models": [
"AMB",
"AMB-MB1.3",
"apollo hd dvr",
"EYE1.3",
"EYE2MBS",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"APOIP-MB",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"APOIP-MB",
"BCC",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": ""
}
]
}

View file

@ -1,130 +0,0 @@
{
"brand": "Adc",
"brand_id": "adc",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"700x",
"723",
"V510",
"v520ir",
"V520IR",
"V521IR",
"V721W",
"V820"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 1026,
"url": "/live.sdp"
},
{
"models": [
"700X"
],
"type": "JPEG",
"protocol": "http",
"port": 1026,
"url": "cgi-bin/viewer/video.jpg?resolution=640x480"
},
{
"models": [
"723",
"ADCi400-X002",
"D064",
"Ilustra400",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/live1.sdp"
},
{
"models": [
"723",
"Other",
"V520IR",
"V820"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/live2.sdp"
},
{
"models": [
"ILLustra400",
"ILUSTRA400"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "dms"
},
{
"models": [
"ILLustra400",
"ILUSTRA400"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image/jpeg.cgi"
},
{
"models": [
"Other",
"V520IR",
"V723"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.mjpg"
},
{
"models": [
"Other",
"v510",
"V520IR",
"V720W",
"V721W"
],
"type": "JPEG",
"protocol": "http",
"port": 1026,
"url": "cgi-bin/viewer/video.jpg"
},
{
"models": [
"V510"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/viewer/video.jpg?channel=[CHANNEL]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"V520IR",
"V721W"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 1032,
"url": "/live3.sdp"
},
{
"models": [
"V521IR"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/11"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Adeco",
"brand_id": "adeco",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"PTZ"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 5544,
"url": "/11"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Adhua Dh-ipc-hdw4233c-a",
"brand_id": "adhua-dh-ipc-hdw4233c-a",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"DH-IPC-HDW4233C-A"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?1"
}
]
}

View file

@ -1,116 +0,0 @@
{
"brand": "Adhua",
"brand_id": "adhua",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"DH-HAC-HFW1200RMN-0360B-S3",
"DH-IPC-HDW4233C-A",
"HDB4300F-PT",
"MYCAM",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"DH-HAC-HFW1200RMN-0360B-S3",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"DH-IPC-HDW4233C-A"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/live0.264"
},
{
"models": [
"HDB4300F-PT"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"HDB4300F-PT",
"MyCam",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi"
},
{
"models": [
"IPC-D1B20"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/cam/realmonitor?channel=1&subtype=00&authbasic=[AUTH]"
},
{
"models": [
"IPC-HDW1230S"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=htd%402Tg25"
},
{
"models": [
"IPC-HFW1320S-W",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?1"
},
{
"models": [
"N84CL52",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/11"
},
{
"models": [
"xvr4808"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/cgi-bin/snapshot.cgi?chn=8&u=[USERNAME]&p=[PASSWORD]"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Adiance",
"brand_id": "adiance",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "image.cgi?type=motion"
}
]
}

View file

@ -1,62 +0,0 @@
{
"brand": "Adj",
"brand_id": "adj",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"700-00048"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 1024,
"url": "/Streaming/Channels/1"
},
{
"models": [
"DVR (Channel 1)"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=1&subtype=0"
},
{
"models": [
"DVR (Channel 2)"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=2&subtype=0"
},
{
"models": [
"DVR (Channel 3)"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=3&subtype=0"
},
{
"models": [
"Wireless IPCAM"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&password=[PASSWORD]"
},
{
"models": [
"WIRELESS IPCAM"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]"
}
]
}

View file

@ -1,433 +0,0 @@
{
"brand": "Adt",
"brand_id": "adt",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"0c810",
"0C810",
"1000",
"1600hd",
"8025b",
"A-ADT-4HS2",
"AD412-ADT",
"ADT8025B",
"G-Camera",
"i1000",
"ICAMERA",
"icamera 1000",
"Icamera 1000",
"ICAMERA1000",
"ICAMERA-1000-ADT",
"MDC83",
"NV412A-ADT",
"OC810",
"OC810-ADT",
"OC835-ADT",
"Other",
"PULSE",
"RC8010",
"RC8021",
"RC8021W",
"RC8021W-ADT",
"RC8025",
"RC8025-ADT",
"rc8025b",
"Rc8025b",
"RC8025B-adt",
"RC8025B-ADT",
"RC8025B-V2",
"rc8-25b-adt",
"RCR021W-ADT",
"toycam"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "img/video.sav"
},
{
"models": [
"0c810",
"1000",
"8025B",
"ADT8025B",
"ICAMERA1000",
"ICAMERA-1000-ADT",
"MDC835-ADT",
"OC810",
"OC810-ADT",
"OC835-ADT",
"otc810",
"Other",
"pulsar",
"PULSE",
"RC8021",
"RC8021W",
"RC8021W-ADT",
"RC8025",
"RC8025-ADT",
"RC8025B",
"RC8025B-ADT",
"rc8325-v2"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi"
},
{
"models": [
"0C810",
"1234",
"8025",
"8025B",
"A-ADT4HS2",
"ADT8025B",
"Icamera 1000",
"ICamera1000",
"ICAMERA-1000",
"ICAMERA-1000-ADT",
"mdc835",
"NV412A",
"OC810",
"OC810-ADT",
"OC835-ADT",
"oc835v3",
"OTC810",
"Other",
"pulse",
"RC8010",
"RC8021",
"RC8021W",
"rc8021w-adt",
"RC8021W-ADT",
"RC8025",
"RC8025-ADT",
"RC8025b",
"RC8025B-adt",
"RC8025B-V2",
"RC8025b-vb",
"RC8201",
"rc8235",
"RC8326",
"RCR021W-ADT"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "img/video.mjpeg"
},
{
"models": [
"1600hd",
"A-ADT4HS2",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam/realmonitor?channel=[CHANNEL]&subtype=1"
},
{
"models": [
"8025B",
"iCamera-1000",
"ICAMERA1000",
"OC810-ADT",
"RC8025-ADT",
"RC8025B-ADT"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?img=vga"
},
{
"models": [
"8025B",
"iCamera",
"Icamera 1000",
"ICAMERA1000",
"ICAMERA-1000-ADT",
"NV412A",
"OC810",
"OC810-ADT",
"Other",
"pulse",
"RC8021",
"RC8021W",
"RC8021W-ADT",
"RC8025",
"RC8025-ADT",
"RCR021W-ADT"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=2"
},
{
"models": [
"A-ADT4HS2",
"Icamera 1000",
"ICAMERA1000",
"ICamera-1000-ADT",
"oc810",
"OC810-ADT",
"Other",
"RC8021",
"RC8021W-ADT",
"RC8025",
"RC8025B-ADT"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "img/mjpeg.jpg"
},
{
"models": [
"A-ADT-4HS2"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "cam4/mpeg4"
},
{
"models": [
"AD412-ADT",
"nv412a",
"NV412A-ADT",
"RC8021",
"RC8021W",
"RC8021W-ADT"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "img/video.asf"
},
{
"models": [
"Digital Video Recorder"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=2&subtype=1"
},
{
"models": [
"DYK4500"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"DYK4500"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/net_jpeg.cgi?ch=[CHANNEL]"
},
{
"models": [
"G-CAMERA"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snap.jpg"
},
{
"models": [
"ICAMERA",
"ICAMERA 1000",
"ICAMERA-1000-ADT",
"OC810",
"Other",
"PULSE",
"RC8021W-ADT",
"RC8025-ADT",
"rc8025b",
"RC8025b-ADT"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi?size=3"
},
{
"models": [
"ICAMERA1000",
"ICAMERA-1000-ADT",
"ipcam-wo",
"OC810-ADT",
"Other",
"RC8021",
"RC8021W-ADT",
"rc8025",
"RC8025-ADT",
"RC8025B",
"RC8025B-ADT"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "img/mjpeg.cgi"
},
{
"models": [
"ICAMERA-1000",
"OC810-ADT",
"OC845",
"RC8025B-ADT"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/img/video.sav"
},
{
"models": [
"NV412a",
"RC8021W",
"rc8021w-adt"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/img/video.asf"
},
{
"models": [
"NV412A-ADT"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?1"
},
{
"models": [
"NV412A-ADT",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?loginuse=[USERNAME]&loginpas=[PASSWORD]"
},
{
"models": [
"NV412A-ADT",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/snapshot.cgi?chn=[CHANNEL]&u=[USERNAME]&p=[PASSWORD]"
},
{
"models": [
"OC810-ADT",
"rc8021w",
"sc468",
"SC87C51C"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/img/video.mjpeg"
},
{
"models": [
"oc835v3"
],
"type": "MJPEG",
"protocol": "http",
"port": 80,
"url": "/img/mjpeg.cgi"
},
{
"models": [
"oc845"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/11"
},
{
"models": [
"OC845"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam4/mpeg4"
},
{
"models": [
"OC845"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/user=[USERNAME]_password=[PASSWORD]_channel=1_stream=0.sdp"
},
{
"models": [
"rc8021w"
],
"type": "MJPEG",
"protocol": "http",
"port": 80,
"url": "/img/main.cgi?"
},
{
"models": [
"RC8021W"
],
"type": "MJPEG",
"protocol": "http",
"port": 81,
"url": "videostream.cgi?rate=0&user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"rc8021w-adt"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/img/mjpeg.jpg"
},
{
"models": [
"RC8025B-ADT"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=0&subtype=1"
},
{
"models": [
"SC821C83"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/img/main.cgi?next_file=main.htm"
}
]
}

View file

@ -1,18 +0,0 @@
{
"brand": "Adv",
"brand_id": "adv",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"adv1",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videofeed"
}
]
}

View file

@ -1,220 +0,0 @@
{
"brand": "Advance",
"brand_id": "advance",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"002fvwu",
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"HVC",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]&count=0"
},
{
"models": [
"NetCam"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"NetCam"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"NetCam"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=320x240"
},
{
"models": [
"NetCam"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/videostream.cgi"
},
{
"models": [
"NetCam"
],
"type": "FFMPEG",
"protocol": "http",
"port": 82,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"NetCam",
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf"
},
{
"models": [
"NetCam"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/"
},
{
"models": [
"Other",
"WB-IP03A"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=[WIDTH]x[HEIGHT]"
},
{
"models": [
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "ch0_0.h264"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/sf.cgi"
},
{
"models": [
"Other"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "img/video.mjpeg"
},
{
"models": [
"WB-IP03A",
"wp00030A"
],
"type": "FFMPEG",
"protocol": "http",
"port": 80,
"url": "/video.cgi?resolution=VGA"
},
{
"models": [
"WB-IP03A"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?resolution=8&rate=13"
},
{
"models": [
"WB-IP03A"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video.cgi?resolution=VGA"
},
{
"models": [
"WB-IP03A"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=11"
},
{
"models": [
"WB-IP03A"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=0"
},
{
"models": [
"WB-IP03A"
],
"type": "VLC",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"WB-IP03A"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
}
]
}

View file

@ -1,80 +0,0 @@
{
"brand": "Advanced Home",
"brand_id": "advanced-home",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"elro"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "image.jpg"
},
{
"models": [
"ELRO"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"icam"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi"
},
{
"models": [
"lc-1140"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "http",
"port": 8081,
"url": "/videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=64&rate=0"
},
{
"models": [
"Phone"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "video?submenu=mjpg"
},
{
"models": [
"RC8025B-ADT"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "img/snapshot.cgi"
},
{
"models": [
"S4X"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "mjpeg"
}
]
}

View file

@ -1,327 +0,0 @@
{
"brand": "Advidia",
"brand_id": "advidia",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"A14",
"A-15",
"A-30",
"A-34W",
"A-38-F",
"A-44-IR",
"A-49-F",
"A-54-OD",
"Other",
"vp-16"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/1"
},
{
"models": [
"A14",
"A-34"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "MediaInput/mpeg4"
},
{
"models": [
"A-14",
"A-34W",
"A-45",
"A-46"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "ch0_0.h264"
},
{
"models": [
"A-28",
"a-35",
"vp-4"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ch0_0.h264"
},
{
"models": [
"A-34W",
"A-37FW",
"A-47",
"M-46-FW",
"VP-16-V2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/Streaming/Channels/101"
},
{
"models": [
"A-34W",
"A-37FW",
"A-44-IR",
"A-45"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "live/mpeg4"
},
{
"models": [
"a-35",
"A-55",
"vp-16"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/103"
},
{
"models": [
"A-37fw",
"A-37-FW",
"A-47",
"Other"
],
"type": "VLC",
"protocol": "rtsp",
"port": 0,
"url": "video.mp4"
},
{
"models": [
"A-427-V",
"vp-4",
"VP-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/MediaInput/mpeg4"
},
{
"models": [
"A-427-V",
"VP-16-V2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/901"
},
{
"models": [
"A-427-V",
"vp-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=2&subtype=00&authbasic=[AUTH]"
},
{
"models": [
"A-44-IR",
"a-49-f",
"VP-16"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/live/mpeg4"
},
{
"models": [
"a-49-f"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/video.mp4"
},
{
"models": [
"a-49-f",
"E-47-V"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=1&subtype=00&authbasic=[AUTH]"
},
{
"models": [
"A-54-OD"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/0"
},
{
"models": [
"A-65",
"B-38-V"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/stream1"
},
{
"models": [
"A-88-V",
"B-31"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/"
},
{
"models": [
"B-31"
],
"type": "VLC",
"protocol": "rtsp",
"port": 7070,
"url": ""
},
{
"models": [
"B-31"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/cmd/system?GET_STREAM&USER=[USERNAME]&PWD=[PASSWORD]"
},
{
"models": [
"B-31",
"B-33",
"B5360",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "cgi-bin/encoder?USER=[USERNAME]&PWD=[PASSWORD]&SNAPSHOT"
},
{
"models": [
"E-37-V"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "axis-cgi/mjpg/video.cgi"
},
{
"models": [
"p-25",
"vp-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/ONVIF/MediaInput"
},
{
"models": [
"vp-16"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/Channels/2"
},
{
"models": [
"vp-16"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 10554,
"url": "/Streaming/Channels/1103"
},
{
"models": [
"VP-16"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/Streaming/channels/902"
},
{
"models": [
"VP-16-V2"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/ch2_0.h264"
},
{
"models": [
"vp-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "//Streaming/Channels/2"
},
{
"models": [
"vp-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "//Streaming/Channels/5"
},
{
"models": [
"vp-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=3&subtype=00&authbasic=[AUTH]"
},
{
"models": [
"vp-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "/cam/realmonitor?channel=101&subtype=00&authbasic=[AUTH]"
},
{
"models": [
"VP-8"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 554,
"url": "//Streaming/Channels/1"
}
]
}

View file

@ -1,28 +0,0 @@
{
"brand": "Advisen",
"brand_id": "advisen",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"123281"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/tmpfs/auto.jpg"
},
{
"models": [
"Other",
"UNLISTED",
"Visia 7"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Advitronics",
"brand_id": "advitronics",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"PortaVision SIP"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "?action=stream"
}
]
}

View file

@ -1,26 +0,0 @@
{
"brand": "Aecbl1",
"brand_id": "aecbl1",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/live1.264"
},
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 8554,
"url": "/live0.264"
}
]
}

View file

@ -1,17 +0,0 @@
{
"brand": "Aegis",
"brand_id": "aegis",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/11"
}
]
}

View file

@ -1,27 +0,0 @@
{
"brand": "Aeon",
"brand_id": "aeon",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"AEON SC"
],
"type": "JPEG",
"protocol": "http",
"port": 80,
"url": "/snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=0"
},
{
"models": [
"nc325w",
"Other"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "snapshot.jpg?user=[USERNAME]&pwd=[PASSWORD]&strm=[CHANNEL]"
}
]
}

View file

@ -1,67 +0,0 @@
{
"brand": "Aeoss",
"brand_id": "aeoss",
"last_updated": "2025-10-17",
"source": "ispyconnect.com",
"entries": [
{
"models": [
"610W",
"Other"
],
"type": "FFMPEG",
"protocol": "rtsp",
"port": 0,
"url": "/live/ch0"
},
{
"models": [
"BS-200W",
"BW-200W",
"srr",
"Vision BW-200"
],
"type": "JPEG",
"protocol": "http",
"port": 0,
"url": "tmpfs/auto.jpg"
},
{
"models": [
"Eos PTZ-100W",
"J6358"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]"
},
{
"models": [
"J6358"
],
"type": "FFMPEG",
"protocol": "http",
"port": 0,
"url": "videostream.asf?user=[USERNAME]&pwd=[PASSWORD]&resolution=32&rate=0"
},
{
"models": [
"J6358"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?rate=11"
},
{
"models": [
"J6358"
],
"type": "MJPEG",
"protocol": "http",
"port": 0,
"url": "videostream.cgi?user=[USERNAME]&pwd=[PASSWORD]&resolution=32"
}
]
}

Some files were not shown because too many files have changed in this diff Show more