{"id":35370160,"url":"https://github.com/syedalijabir/ml-video-platform","last_synced_at":"2026-01-13T19:23:03.121Z","repository":{"id":331394881,"uuid":"1124730214","full_name":"syedalijabir/ml-video-platform","owner":"syedalijabir","description":"A production-style end-to-end video understanding system that enables semantic search over video content using OpenAI’s CLIP model, Pinecone vector search, and AWS-native infrastructure.","archived":false,"fork":false,"pushed_at":"2026-01-05T15:04:09.000Z","size":1106,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-07T13:25:44.339Z","etag":null,"topics":["ai","artificial-intelligence","aws","clip","containers","docker","high-av","hugging","huggingface-transformers","infrastructure-as-code","machine-learning","natural","openai","video","video-search"],"latest_commit_sha":null,"homepage":"https://video-search.alijabir.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syedalijabir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-29T14:13:56.000Z","updated_at":"2026-01-05T18:55:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/syedalijabir/ml-video-platform","commit_stats":null,"previous_names":["syedalijabir/ml-video-platform"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/syedalijabir/ml-video-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syedalijabir%2Fml-video-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syedalijabir%2Fml-video-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syedalijabir%2Fml-video-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syedalijabir%2Fml-video-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syedalijabir","download_url":"https://codeload.github.com/syedalijabir/ml-video-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syedalijabir%2Fml-video-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28397826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","artificial-intelligence","aws","clip","containers","docker","high-av","hugging","huggingface-transformers","infrastructure-as-code","machine-learning","natural","openai","video","video-search"],"created_at":"2026-01-02T02:52:38.657Z","updated_at":"2026-01-13T19:23:03.115Z","avatar_url":"https://github.com/syedalijabir.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Video Search Platform\n\n\u003e AI-powered semantic search across video content using CLIP embeddings and vector cosine similarity\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)\n[![AWS](https://img.shields.io/badge/AWS-ECS%20%7C%20RDS%20%7C%20S3-orange.svg)](https://aws.amazon.com/)\n[![Pinecone](https://img.shields.io/badge/Pinecone-Vector%20DB-green.svg)](https://www.pinecone.io/)\n\n## Overview\n\nAn ML infrastructure that enables natural language search across video content. Upload videos, and search for moments using queries like \"people celebrating,\" \"ocean waves,\" or \"dog running in park.\" The system extracts frames, generates embeddings using OpenAI's CLIP model, and performs semantic similarity matching.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/diagrams/frontend.png\" alt=\"User Interface\" width=\"100%\"\u003e\n\u003c/div\u003e\n\n### Key Features\n\n- **Semantic Search**: Natural language queries to find specific moments in videos\n- **Real-time Processing**: Asynchronous video processing with auto-scaling workers\n- **Scalable Architecture**: Container-based deployment with auto-scaling on AWS for high availability\n- **Video Playback**: Jump directly to matching timestamps\n\n---\n\n## Architecture\n### System Design\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./docs/diagrams/top-level.png\" alt=\"Video search high-level architecture\" width=\"90%\"\u003e\n\u003c/div\u003e\n\n### Component Details\n\n| Component | Technology | Function |\n|-----------|-----------|---------|\n| **Load Balancer** | AWS ALB | Traffic distribution, SSL termination |\n| **API Service** | ECS Fargate + FastAPI | REST endpoints for upload/search/playback |\n| **Worker Service** | ECS Fargate + Python | Background video processing |\n| **Container Registry** | Amazon ECR | Docker image storage |\n| **Message Queue** | Amazon SQS | Async job processing |\n| **Object Storage** | Amazon S3 | Video and frame storage |\n| **Relational DB** | Amazon RDS (PostgreSQL) | Metadata and job tracking |\n| **Vector DB** | Pinecone | Embedding storage and search |\n| **ML Model** | CLIP (Hugging Face) | Image-text embedding generation |\n\n---\n\n## Tech Stack\n\n### Backend\n- **Framework**: FastAPI (Python 3.11+)\n- **ML Model**: OpenAI CLIP (via Hugging Face Transformers)\n- **Video Processing**: OpenCV, FFmpeg\n- **ORM**: SQLAlchemy\n- **Task Queue**: Boto3 (SQS client)\n\n### Frontend\n- **UI**: Vanilla JavaScript + HTML5\n- **Styling**: Custom CSS with modern design\n- **Video Player**: HTML5 Video API\n\n### Infrastructure\n- **Cloud Provider**: AWS\n- **Container Orchestration**: ECS Fargate\n- **Database**: PostgreSQL (RDS)\n- **Vector Database**: Pinecone\n- **Storage**: S3\n- **Networking**: VPC, ALB, Security Groups\n\n---\n\n## Prerequisites\n\n- AWS Account with appropriate permissions\n- Pinecone account and API key\n- Docker installed locally\n- Python 3.11+\n- Terraform or AWS CDK (for infrastructure)\n\n---\n\n## 🚀 Deployment Guide\n\n### Step 1: Clone Repository\n\n```bash\ngit clone https://github.com/syedalijabir/ml-video-platform.git\ncd ml-video-platform\n```\n\n### Step 2: Configure Environment Variables\n\nMake sure the following environment variables are available\n\n```env\nAPP_NAME=ML Video Platform API\n\n# AWS Configuration\nAWS_REGION=\u003caws_region_name\u003e\nAWS_ACCOUNT_ID=123456789012\n\n# RDS Database\nDATABASE_URL=\u003cpostgresql://user:pass@rds-endpoint:5432/videosearch\u003e\n\n# S3 Configuration\nS3_BUCKET_NAME=\u003cbucket_name\u003e\nS3_REGION=\u003caws_region_name\u003e\n\n# SQS Configuration\nSQS_QUEUE_URL=\u003cqueue_url\u003e\n\n# Pinecone Configuration\nPINECONE_API_KEY=\u003cyour-api-key-here\u003e\nPINECONE_INDEX_NAME=\u003cyour-index-name\u003e\n```\n\n### Step 3: Build Docker Images\n\n```bash\n# Build API service\ndocker build -t video-search-api:latest -f infrastructure/docker/Dockerfile.api .\n\n# Build Worker service\ndocker build -t video-search-worker:latest -f infrastructure/docker/Dockerfile.worker .\n\n# Tag and push to ECR\naws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com\n\ndocker tag video-search-api:latest ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/video-search-api:latest\ndocker push ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/video-search-api:latest\n\ndocker tag video-search-worker:latest ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/video-search-worker:latest\ndocker push ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/video-search-worker:latest\n```\n\n### Step 4: Deploy Infrastructure with Terraform\n\n```bash\ncd infrastructure/terraform\n\n# Initialize Terraform\nterraform init\n\n# Review planned changes\nterraform plan\n\n# Deploy infrastructure\nterraform apply\n```\n\n```bash\n# Check API health\ncurl https://video-search.\u003cyour_hosted_zone\u003e/health\n```\n\n---\n\n## Contributing\n\nContributions are welcome! Please follow these steps:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\nPlease ensure:\n- Code follows PEP 8 style guide (`flake8`)\n- Documentation is updated\n\n---\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n**If you find this project useful, please consider giving it a star on GitHub!**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyedalijabir%2Fml-video-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyedalijabir%2Fml-video-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyedalijabir%2Fml-video-platform/lists"}