No description
  • Shell 73%
  • Dockerfile 27%
Find a file
holzi1005 fb95bd5111
All checks were successful
docker-build / release (push) Successful in 5s
docker-build / docker-build (push) Successful in 16s
Update Dockerfile
2026-08-21 10:40:53 +02:00
.forgejo/workflows Update .forgejo/workflows/build.yml 2026-08-21 10:39:21 +02:00
Dockerfile Update Dockerfile 2026-08-21 10:40:53 +02:00
inotify.sh Update inotify.sh 2026-08-17 19:26:26 +02:00
LICENSE Update LICENSE 2026-08-17 19:38:42 +02:00
README.md add new license to Readme 2026-08-17 19:40:09 +02:00

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

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/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

H2 invent Fair Use Source License Agreement


👨‍💻 Maintainers

H2 invent GmbH
📧 support@h2-invent.com
🌐 https://meetling.de


Note: Ensure your backend server supports chunked uploads and correctly assembles the file.