Set Up Your AI-Powered Media Platform in 5 Steps
From configuring storage backends to enabling semantic video search in under 20 minutes.
5-Step Media Setup
Configure Storage Backend
Navigate to Media > Settings > Storage. Choose your backend: S3, GCS, Azure Blob, Cloudflare R2, MinIO, or local. Enter credentials (bucket, region, access keys). Test connection. Set as default provider. Configure CDN for faster delivery. **Why it matters:** presigned upload and download links are generated the same way regardless of where the bytes live, so you can switch providers — or add a fallback backend — without touching a single asset URL. Your media stays in your bucket, not a vendor's cloud.
Enable AI Transcription
Navigate to Media > Settings > AI. Configure transcription provider: OpenAI Whisper (recommended for base64), Deepgram, AssemblyAI, or Google STT. Set default language. Enable speaker diarization if needed. Set word-level timestamps option. **Why it matters:** one API call fronts your choice of engine, so you can switch providers without rewriting a single integration. Word-level timestamps and speaker diarization are what make a transcript searchable and caption-ready rather than a wall of text.
Set Up Twelve Labs (Optional)
Navigate to Media > Settings > Video Search. Enter Twelve Labs API key. Create video index. Configure search threshold (default: 0.1). Enable activity detection and scene recognition. Test with a sample video. **Why it matters:** indexing captures scene and activity recognition, so you can search against what's actually happening on screen — "person running on beach" — instead of hoping someone tagged the file correctly at upload.
Configure NSFW Detection
Navigate to Media > Settings > Moderation. Enable NSFW detection. Set warn/block thresholds (defaults: warn 0.6, block 0.9). Configure auto-reject vs. review mode. Toggle categories (adult/racy/violence/spoof/medical; adult and violence on by default). Enable logging for compliance. **Why it matters:** per-category scores let you tune sensitivity precisely — auto-reject the obvious cases, route the borderline ones to a review queue — and every decision is logged so moderation stays auditable.
Install Bridge for Local Processing (Optional)
Install Aeion Bridge desktop app. Navigate to Media > Settings > Bridge. Enable FFmpeg transcoding, image processing, OCR, and PDF generation. Test local transcoding with a sample video. Configure default codec/quality presets. **Why it matters:** heavy 4K footage never has to leave the building — transcodes run on your own hardware, finish faster than a cloud round-trip, and cost nothing in server time. When Bridge is offline, operations fall back to server-side processing rather than failing.
typescript
// Media operations are available through the auto-generated REST API.
// Example: Transcode video locally via Bridgeconst result = await aeion.api.post("/media/bridge/transcode/video", {inputPath: "/path/to/video.mov",outputFormat: "mp4",codec: "h264",bitrate: "5M",resolution: "1920x1080",crf: 23,});// result.data.outputPath === "/path/to/video.mp4"
// Example: Transcribe a video (Whisper / Deepgram / AssemblyAI; Google STT// is available as a tenant-level default in Media > Settings > AI)const transcript = await aeion.api.post("/media/media_abc123/transcribe", {provider: "openai",language: "en",});// transcript.data.segments[0].words[0].word === "Hello"
// Example: Semantic video search (Twelve Labs)const search = await aeion.api.post("/media/video/search", {query: "person running on beach",});
// Example: Apply watermarkawait aeion.api.post("/media/media_abc123/watermark", {preset: "diagonal",saveAsNew: true,});
// Example: List media via auto-CRUD (the underlying collection slug is `media`)const list = await fetch("/api/v1/media?where[type][equals]=video&limit=20");
// Example: Trigger NSFW detectionconst nsfw = await aeion.api.post("/media/media_abc123/nsfw-check", {threshold: 0.7,});// nsfw.data.isNSFW === false// nsfw.data.recommendedAction === "allow"Aeion Bridge runs FFmpeg locally on your machine, avoiding cloud upload for large files. Results are returned to the server. When Bridge is unavailable, operations fall back gracefully.
OpenAI Whisper is recommended for most use cases (base64 audio input, word timestamps). Deepgram Nova-2 is best for real-time streaming. AssemblyAI has excellent speaker diarization and PII redaction. Google STT excels at multi-language support. All can be configured; the system falls back if one is unavailable.
Aeion indexes your videos with AI, creating a semantic understanding of video content. You can then search with natural language: "person running," "blue car," "indoor meeting." Results include video ID, confidence score, and timestamp of the matching segment. Requires a Twelve Labs API key.
Vision AI analyzes the image/video frame and returns scores per category (adult, racy, violence, spoof, medical). If any category exceeds its threshold, the asset is flagged. With auto-reject enabled, uploads are rejected automatically; otherwise, assets go to a moderation review queue.
The watermarking service supports text and image watermarks. Text: font, size, color, opacity, rotation, position. Image: overlay with size/position. Presets: corner, center, diagonal, subtle. Apply to single asset or batch to collections. Save as new or replace original.
Configurable sizes: original, large (1200px), medium (800px), small (400px), thumbnail (200px), avatar (100px). WebP/AVIF conversion with quality optimization. Focal point detection ensures important content stays in frame during cropping.
Aeion supports S3, GCS, Azure, R2, MinIO, and local storage. Configure multiple providers in Media > Settings > Storage. Set a default provider, with fallback providers if the default fails. CDN integration for faster delivery.
Yes. Browser-only mode works for simple uploads. Variant generation and image processing fall back to server-side processing when Bridge is unavailable. Local FFmpeg transcoding requires Bridge for best performance.
Every AI operation (transcription, NSFW detection, Twelve Labs indexing) is tracked automatically. Provider-specific metrics (calls, tokens, cost) are recorded. Aggregate by provider for billing and quota management.
Configurable whitelist: images (JPEG, PNG, WebP, AVIF, GIF), videos (MP4, MOV, MKV, WebM), audio (MP3, WAV, OGG, FLAC), documents (PDF). Max file sizes per type. Magic byte verification for security. Virus scanning hooks available.