2.6 KiB
2.6 KiB
Media Analyzer
Project Overview
This project is a real-time video streaming and AI analysis platform. It ingests RTMP video streams, processes them with computer vision AI models, and provides live analysis results through a responsive web dashboard.
The architecture is based on microservices and includes:
- Backend: A Django application that handles video stream management, AI processing, and WebSocket communication for real-time updates.
- Frontend: An Angular single-page application that provides a user interface for stream viewing and analysis visualization.
- AI Processing: A Python-based analysis engine that uses various adapters for different types of analysis, such as object detection, logo detection, and motion analysis. The engine can be configured to run locally, on a remote LAN worker, or in the cloud.
- Streaming: An NGINX server with the RTMP module ingests video streams and converts them to HLS for web playback.
- Infrastructure: The entire platform is containerized using Docker and can be deployed with Docker Compose for development or Kubernetes for production.
Building and Running
Docker Compose (Development)
To run the application in a development environment, use Docker Compose:
# Start all services
docker compose up
# Run migrations (in a separate terminal)
docker compose --profile tools up migrate
The application will be accessible at the following URLs:
- Frontend:
http://localhost:4200 - Backend API:
http://localhost:8000 - RTMP Stream:
rtmp://localhost:1935/live - HLS Stream:
http://localhost:8081/hls
Kubernetes (Production-like)
To deploy the application to a Kubernetes cluster, you can use the provided scripts:
# Build and push images to a local registry
./k8s/build-for-ctlptl.sh
# Deploy to Kubernetes
kubectl apply -k k8s/overlays/development
# Check deployment status
kubectl get pods -n media-analyzer
# Access the application via port forwarding
kubectl port-forward service/frontend -n media-analyzer 4200:80
Development Conventions
- Backend: The backend is a Django application. Follow Django best practices for development.
- Frontend: The frontend is an Angular application. Follow Angular best practices for development.
- AI Processing: The AI processing engine is designed to be extensible. To add a new analysis capability, create a new adapter and integrate it with the
AnalysisEngine. - Testing: The project includes a
test_unified_ai.pyfile, which suggests that there is a testing framework in place. Run existing tests and add new ones when making changes.