6c56306873
Full-featured video conversion platform with: - FFmpeg-based pipeline system with composable stages (transcode, scale, filter, audio, bitrate, framerate, trim, deinterlace, denoise, stabilize) - Live stream management with real-time format switching (RTMP/RTSP/HTTP) - Industrial/nuclear power plant control room themed UI with gauges, switches, LED indicators - Format switchboard for instant conversion between 16+ video/audio formats - Pipeline designer with visual flow editor and drag-and-drop stage composition - Job queue with priority scheduling and batch conversion - WebSocket server for real-time progress broadcasting - REST API for all operations (upload, convert, streams, pipelines, queue) - System monitoring (CPU, memory, disk) with animated gauge displays - Docker Compose setup with web, websocket, and worker services https://claude.ai/code/session_01WxmHGnVFXGm2bwbFREHkHb
55 lines
1.2 KiB
YAML
55 lines
1.2 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# Main Web Application
|
|
web:
|
|
build: .
|
|
ports:
|
|
- "8080:8080"
|
|
volumes:
|
|
- ./storage:/app/storage
|
|
- ./src:/app/src
|
|
- ./public:/app/public
|
|
- ./templates:/app/templates
|
|
- ./config:/app/config
|
|
environment:
|
|
- FFMPEG_PATH=/usr/bin/ffmpeg
|
|
- FFPROBE_PATH=/usr/bin/ffprobe
|
|
- FFMPEG_THREADS=4
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/api/system"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
# WebSocket Server for real-time updates
|
|
websocket:
|
|
build: .
|
|
command: php bin/websocket-server.php
|
|
ports:
|
|
- "8081:8081"
|
|
volumes:
|
|
- ./storage:/app/storage
|
|
- ./src:/app/src
|
|
- ./config:/app/config
|
|
depends_on:
|
|
- web
|
|
restart: unless-stopped
|
|
|
|
# Queue Worker for batch processing
|
|
worker:
|
|
build: .
|
|
command: php bin/queue-worker.php
|
|
volumes:
|
|
- ./storage:/app/storage
|
|
- ./src:/app/src
|
|
- ./config:/app/config
|
|
environment:
|
|
- FFMPEG_PATH=/usr/bin/ffmpeg
|
|
- FFPROBE_PATH=/usr/bin/ffprobe
|
|
- FFMPEG_THREADS=2
|
|
depends_on:
|
|
- web
|
|
restart: unless-stopped
|