Проекты на RelaxDev
Реальные проекты пользователей.
Web-проекты (Frontend) (17)







bazariara
Онлайн магазин 1000 товаров в Тбилиси (фото не в Yandex, на Imgbb, для ru vpn
bbab05kt314a7njeurlg.containers.yandexcloud.net


sitebuild
Наша компания по разработке сайтов и приложений
bbalanoktul16vogb0ab.containers.yandexcloud.net



Serverless API (Backend) (1)
Приложения и Боты (VM) (4)
Разное (1)
thumb-extractor1
Thumbnail Service Lightweight Node.js service for extracting video thumbnails with caching. Features Extract thumbnails from video URLs at any timestamp Resizable output (width/height with aspect ratio preservation) Adjustable quality (1-31 scale) Automatic caching (MD5 hash of URL + timestamp + dimensions + quality) Returns JPG images Docker support with FFmpeg pre-installed Quick Start Build and run with Docker docker build -t thumbnail-service . docker run -p 3000:3000 -v $(pwd)/cache:/app/cache thumbnail-service Local development (requires Node.js + FFmpeg) npm install npm start API Extract Thumbnail GET /thumbnail?url=<video_url>×tamp=<seconds>&width=<pixels>&height=<pixels>&quality=<1-31> Parameters: url (required): Video URL (HTTP/HTTPS supported) timestamp (optional): Timestamp in seconds (default: 0) width (optional): Output width in pixels (preserves aspect ratio if only width specified) height (optional): Output height in pixels (preserves aspect ratio if only height specified) quality (optional): JPEG quality 1-31, where 1 is best quality and 31 is worst (default: 2) Examples (working test video): # Original quality, 2 seconds curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=2" -o thumb.jpg # Resize to 320px width (auto height) curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=2&width=320" -o thumb_320.jpg # Resize to 240px height (auto width) curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=2&height=240" -o thumb_240.jpg # Exact size 320x240 curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=2&width=320&height=240" -o thumb_320x240.jpg # High quality (larger file) curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=2&quality=1" -o thumb_hq.jpg # Low quality (smaller file) curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=2&quality=10" -o thumb_lq.jpg Response: JPG image Health Check GET /health Response: { "status": "ok", "cached": 42 } How it works Receives URL, timestamp, width, height, quality Generates MD5 cache key from url:timestamp:width:height:quality Checks if cached thumbnail exists If cached → returns immediately If not cached → extracts frame with FFmpeg, saves to cache, returns Important: Different parameters generate different cache keys. For example: ?url=X×tamp=2&width=320 → cached separately ?url=X×tamp=2&width=640 → different cached file Examples # First frame (timestamp=0) curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4" -o frame0.jpg # Frame at 2 seconds, 320px wide curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=2&width=320" -o frame2_320w.jpg # Frame at 1 second, 200x150, medium quality curl "http://localhost:3000/thumbnail?url=https://www.w3schools.com/html/mov_bbb.mp4×tamp=1&width=200&height=150&quality=5" -o frame_small.jpg Cache Cached images stored in /app/cache directory. Volume-mounted for persistence. Requirements Docker (recommended) or Node.js 18+ + FFmpeg For local development: FFmpeg must be installed system-wide




