No description
| .forgejo/workflows | ||
| Dockerfile | ||
| inotify.sh | ||
| LICENSE | ||
| README.md | ||
Meetling Livekit Recording Uploader
This containerized utility monitors a directory for new .mp4 files, splits them into chunks, and uploads each chunk to a specified endpoint. It is intended for use with the Meetling Livekit recording system.
📦 Features
- 📁 Watches the
/outdirectory for new.mp4files - ✂️ Splits files into configurable chunk sizes
- 📤 Uploads chunks via HTTP with bearer token authorization
- 🐳 Lightweight Alpine-based Docker image
⚙️ Environment Variables
| Variable | Default | Description |
|---|---|---|
CHUNK_SIZE |
1048576 (1 MiB) |
Size of each chunk in bytes |
UPLOAD_URL |
http://localhost:8000/recording/upload |
Upload endpoint URL |
AUTH_TOKEN |
verySecretToken |
Bearer token for authentication |
🚀 Usage
1. Build the Docker image
docker build -t meetling-uploader --build-arg VERSION=1.0.0 .
2. Run the container
docker run -v /your/output/directory:/out meetling-uploader
Replace
/your/output/directorywith the directory containing your.mp4recordings.
🔄 Upload Process
Once a .mp4 file is completely written to /out, the script:
- Verifies the file exists.
- Calculates file size.
- Splits the file into chunks based on
CHUNK_SIZE. - Uploads each chunk using
curl.
Each upload includes the following multipart form fields:
recording_id: Filename without.mp4chunk_index: Index of the chunk (starting from 0)total_chunks: Total number of chunksfile: The actual chunk
🐳 Dockerfile Overview
The image uses alpine:3.20 and installs:
inotify-tools(for file system event watching)curl(for HTTP requests)coreutils(forstatandddutilities)
The script is located at /inotify.sh and is executed when the container starts.
It runs as the non-privileged user nobody for security.
📝 License
MIT License
👨💻 Maintainers
H2 invent GmbH
📧 support@h2-invent.com
🌐 https://meetling.de
Note: Ensure your backend server supports chunked uploads and correctly assembles the file.