diff medi/README.md @ 217:7ef4c9d2a72d hg-web

[DO NOT PUSH] Random values.
author MrJuneJune <me@mrjunejune.com>
date Sun, 25 Jan 2026 10:44:04 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/medi/README.md	Sun Jan 25 10:44:04 2026 -0800
@@ -0,0 +1,111 @@
+# medi
+
+Media upload and processing server. Upload images and videos, get optimized WebP images and HLS video streams.
+
+## Features
+
+- **Image Upload**: Converts to WebP format with configurable quality
+- **Video Upload**: Converts to HLS streaming format with thumbnails
+- **Background Processing**: Non-blocking uploads with status polling
+- **Web UI**: Drag-and-drop upload interface
+- **REST API**: Programmatic access to upload and retrieve media
+
+## Running
+
+```bash
+# Build and run
+bazel run //medi:medi
+
+# Run on custom port
+bazel run //medi:medi -- 3000
+```
+
+Server starts at `http://localhost:8080` by default.
+
+## API
+
+### Upload Media
+
+```bash
+POST /api/upload
+Content-Type: multipart/form-data
+
+# Response
+{
+  "id": "1706123456_12345_0",
+  "type": "image",
+  "status": "processing"
+}
+```
+
+### Get Media Info
+
+```bash
+GET /api/media/{id}
+
+# Response (completed image)
+{
+  "id": "1706123456_12345_0",
+  "type": "image",
+  "status": "completed",
+  "webp": "/media/1706123456_12345_0/image.webp",
+  "original": "/media/1706123456_12345_0/original.jpg"
+}
+
+# Response (completed video)
+{
+  "id": "1706123456_12345_1",
+  "type": "video",
+  "status": "completed",
+  "hls": "/media/1706123456_12345_1/video.m3u8",
+  "thumbnail": "/media/1706123456_12345_1/video_thumb.jpg",
+  "original": "/media/1706123456_12345_1/original.mp4"
+}
+```
+
+### List All Media
+
+```bash
+GET /api/media
+
+# Response
+{
+  "items": [
+    {"id": "1706123456_12345_0", "type": "image"},
+    {"id": "1706123456_12345_1", "type": "video"}
+  ]
+}
+```
+
+## Output Structure
+
+```
+uploads/          # Temporary upload storage (deleted after processing)
+media/            # Processed media
+├── {id}/
+│   ├── original.{ext}   # Original uploaded file
+│   ├── image.webp       # (images) WebP conversion
+│   ├── video.m3u8       # (videos) HLS playlist
+│   ├── video_000.ts     # (videos) HLS segments
+│   └── video_thumb.jpg  # (videos) Thumbnail
+```
+
+## Supported Formats
+
+### Images
+JPG, JPEG, PNG, GIF, WebP, BMP, TIFF, HEIC, AVIF
+
+### Videos
+MP4, MOV, AVI, MKV, WebM, FLV, WMV, M4V, 3GP
+
+## Dependencies
+
+- `//seobeo:seobeo` - HTTP server
+- `//media_processor:media_processor` - Media processing
+- FFmpeg (system installed)
+
+## Building
+
+```bash
+bazel build //medi:medi
+```