Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 17 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ POST /api/v1/convert # Universal media conversion
POST /api/v1/analyze # Quality metrics (VMAF, PSNR, SSIM)
POST /api/v1/stream # HLS/DASH adaptive streaming
POST /api/v1/estimate # Processing time/cost estimation
POST /api/v1/batch # Batch processing (up to 100 jobs)
```

### Job Management
Expand All @@ -83,6 +84,8 @@ GET /api/v1/jobs # List and filter jobs
GET /api/v1/jobs/{id} # Job status and progress
GET /api/v1/jobs/{id}/events # Real-time progress (SSE)
DELETE /api/v1/jobs/{id} # Cancel job
GET /api/v1/batch/{id} # Batch job status and progress
DELETE /api/v1/batch/{id} # Cancel entire batch
```

### System & Health
Expand All @@ -107,15 +110,27 @@ GET /docs # Interactive API documentation
- **VMAF** - Perceptual video quality measurement
- **PSNR** - Peak Signal-to-Noise Ratio
- **SSIM** - Structural Similarity Index

> **📊 Need detailed media analysis?** Check out our companion [FFprobe API](https://github.com/rendiffdev/ffprobe-api) for comprehensive media file inspection, metadata extraction, and format analysis.
- **Bitrate Analysis** - Compression efficiency metrics

### Enterprise Security

- **API Key Authentication** with role-based permissions
- **Rate Limiting** with configurable thresholds
- **Input Validation** prevents command injection
- **Advanced Rate Limiting** with Redis-backed distributed limiting
- **Input Validation** prevents command injection and malicious uploads
- **Media File Security** with comprehensive malware detection
- **HTTPS/SSL** with automatic certificate management
- **Security Headers** (HSTS, CSP, XSS protection)
- **Security Audit Logging** tracks suspicious activity

### Advanced Features

- **Adaptive Streaming** - HLS/DASH with multiple quality variants
- **Batch Processing** - Process up to 100 files simultaneously
- **Enhanced Thumbnails** - Multiple formats, grids, and quality options
- **Professional Watermarking** - Advanced positioning and opacity controls
- **Quality Analysis** - VMAF, PSNR, SSIM with reference comparison

### Production Monitoring

Expand Down
3 changes: 2 additions & 1 deletion api/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from api.config import settings
from api.middleware.security import SecurityHeadersMiddleware, RateLimitMiddleware
from api.models.database import init_db
from api.routers import admin, api_keys, convert, health, jobs
from api.routers import admin, api_keys, batch, convert, health, jobs
from api.services.queue import QueueService
from api.services.storage import StorageService
from api.utils.error_handlers import (
Expand Down Expand Up @@ -149,6 +149,7 @@ def _configure_routes(application: FastAPI) -> None:
application.include_router(health.router, prefix="/api/v1", tags=["health"])
application.include_router(convert.router, prefix="/api/v1", tags=["processing"])
application.include_router(jobs.router, prefix="/api/v1", tags=["jobs"])
application.include_router(batch.router, prefix="/api/v1", tags=["batch"])

# Management routes
application.include_router(api_keys.router, prefix="/api/v1", tags=["authentication"])
Expand Down
4 changes: 4 additions & 0 deletions api/models/job.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,10 @@ class Job(Base):
webhook_url = Column(String, nullable=True)
webhook_events = Column(JSON, default=["complete", "error"])

# Batch processing
batch_id = Column(String, nullable=True, index=True)
batch_index = Column(Integer, nullable=True)

# Indexes
__table_args__ = (
Index("idx_job_status_created", "status", "created_at"),
Expand Down
Loading