MediaX is a powerful, scalable media processing and serving server built with Go. It provides on-the-fly media transformation, multiple storage backend support, and high-performance media delivery for images, videos, audio files, and documents.
- Multi-format Support: Images (JPG, PNG, GIF, WebP, AVIF), Videos (MP4, WebM, AVI, MOV, MKV, FLV, WMV, M4V, 3GP, OGV), Audio (MP3, WAV, FLAC, AAC, OGG, M4A, WMA, Opus), Documents (PDF, DOCX, XLSX, PPTX, DOC, XLS, PPT, ODT, ODS, ODP, TXT, RTF, CSV, EPUB, XML)
- On-the-fly Processing: Real-time image resizing, video transcoding, audio conversion, and thumbnail generation
- Multiple Storage Backends: Local filesystem, AWS S3, and HTTP-based storage
- Domain-based Configuration: Multi-tenant support with domain-specific settings
- High Performance: Built on the EVO framework with efficient caching and processing
- RESTful API: Clean API for media management and processing
- Docker Support: Easy deployment with Docker containers
# Clone the repository
git clone <repository-url>
cd mediax
# Install dependencies
go mod download
# Run the application
go run main.goThe server will start on http://localhost:8080 by default.
Comprehensive documentation is available in the docs/ directory:
- Setup and Requirements - Installation, dependencies, and database setup
- Configuration - Configuration options and how to run MediaX
- Storage Setup - Configure local, S3, and HTTP storage backends
- Media Querying - Complete guide to processing images, videos, and audio
- API Reference - REST API documentation and SDK examples
- Docker Deployment - Docker, Docker Compose, and Kubernetes deployment
- Performance Tuning - Optimization, scaling, and monitoring
- Security - Security best practices and configuration
- Development Guide - Extending MediaX, adding features, and contributing
- Troubleshooting - Common issues and debugging guide
# Resize image to 800x600
GET /images/photo.jpg?w=800&h=600
# Convert to WebP with 90% quality
GET /images/photo.jpg?f=webp&q=90
# Generate thumbnail maintaining aspect ratio
GET /images/photo.jpg?w=300&ar=true# Generate video thumbnail
GET /videos/movie.mp4?f=jpg&t=30
# Convert to WebM format
GET /videos/movie.mp4?f=webm&w=1280&h=720# Convert audio format
GET /audio/song.mp3?f=flac&q=100
# Extract album art
GET /audio/song.mp3?f=jpg
# Get metadata
GET /audio/song.mp3?detail=true# Generate thumbnail from PDF
GET /documents/document.pdf?f=jpg&thumbnail=480p
# Generate thumbnail from Office document
GET /documents/presentation.pptx?f=png&thumbnail=1080p
# Get document metadata
GET /documents/spreadsheet.xlsx?detail=true- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
[Add your license information here]
[Add support contact information here]