diff --git a/README.md b/README.md index 05b3d7e..26284c8 100644 --- a/README.md +++ b/README.md @@ -50,15 +50,20 @@ Step 2. Run — replace `/your/video/path` with the real path on your host A. Using `docker run`: + `mkdir -p data` + ``` docker run -d \ --name videopress \ --restart unless-stopped \ -p 8080:8080 \ -v /your/video/path:/media \ + -v ./data:/data \ videopress ``` B. Using Docker Compose + + `mkdir -p data` `docker compose up -d` @@ -120,6 +125,8 @@ Browser ──HTTP──▶ Gunicorn (gevent worker) └─ POST /api/compress/cancel/ ``` + + **Why gevent?** SSE (`/api/compress/progress`) is a long-lived streaming response. Standard Gunicorn sync workers block for its entire duration. Gevent workers use cooperative greenlets so a single worker process can @@ -146,17 +153,44 @@ in-process job store with Redis. ``` videocompressor/ -├── app.py ← Flask application + all API routes -├── wsgi.py ← Gunicorn entry point (imports app from app.py) -├── gunicorn.conf.py ← Gunicorn configuration (gevent, timeout, logging) -├── requirements.txt ← Python dependencies -├── Dockerfile ← Two-stage Docker build -├── docker-compose.yml ← Volume mapping, port, env vars -├── start.sh ← Helper script (dev + prod modes) +├── app + ├── __init__.py + ├── config.py + ├── db.py + ├── jobs.py + ├── media.py + ├── notify.py + └── routes.py +├── wsgi.py +├── gunicorn.conf.py +├── requirements.txt +├── Dockerfile +├── docker-compose.yml +├── start.sh ├── README.md ├── templates/ │ └── index.html └── static/ - ├── css/main.css - └── js/app.js + ├── css + └── main.css + └── js + ├── app.js + └── modules + ├── browser.js + ├── compress.js + ├── progress.js + ├── scan.js + ├── session.js + ├── settings.js + ├── state.js + ├── stream.js + ├── theme.js + └── utils.js ``` + +## Contribute +Feel free to clone the repository, make updates, and submit a pull request to make this more feature rich. + +Keep in mind, I like to keep things fairly simple to use. + +If you need to know too much about ffmpeg and how to configure the perfect compression, then that may be too much for this app, but feel free to fork this repository and make your own as well. \ No newline at end of file