# 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 `/out` directory for new `.mp4` files - ✂️ 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 ```sh docker build -t meetling-uploader --build-arg VERSION=1.0.0 . ``` ### 2. Run the container ```sh docker run -v /your/output/directory:/out meetling-uploader ``` > Replace `/your/output/directory` with the directory containing your `.mp4` recordings. --- ## 🔄 Upload Process Once a `.mp4` file is completely written to `/out`, the script: 1. Verifies the file exists. 2. Calculates file size. 3. Splits the file into chunks based on `CHUNK_SIZE`. 4. Uploads each chunk using `curl`. Each upload includes the following multipart form fields: - `recording_id`: Filename without `.mp4` - `chunk_index`: Index of the chunk (starting from 0) - `total_chunks`: Total number of chunks - `file`: 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` (for `stat` and `dd` utilities) 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](mailto:support@h2-invent.com) 🌐 [https://meetling.de](https://meetling.de) --- > **Note:** Ensure your backend server supports chunked uploads and correctly assembles the file.