imanghafoori/laravel-video
Laravel Video extracts metadata from video files—duration, dimensions, and more—and generates thumbnails, wrapping ffmpeg/ffprobe behind a clean facade. Grab video info and posters with a single call, no shell commands required.
Architecture fit
Integration feasibility
composer require, config publish, route definition, and middleware attachment — realistically a one-to-three-day spike for a competent Laravel developer, not a multi-sprint effort.<video>) will consume the endpoint.Technical risk
206 Partial Content, Accept-Ranges, Content-Range, and HEAD handling must be right or seeking breaks — most visibly on iOS/Safari, where it is a hard failure rather than a degradation. This must be validated in the POC, not assumed.Key questions
X-Accel-Redirect) or is PHP always in the byte path?HEAD, conditional requests (If-Range, ETag), and correct MIME detection, or only simple GET?Stack fit
<video> element.<video> works for progressive MP4/WebM. If the product needs adaptive bitrate or DRM, this package is the wrong layer — that requires HLS/DASH packaging and a player like hls.js, with the package at most serving segments.Migration path
public/ or raw storage URLs, the migration is primarily a security upgrade (moving from public to authorized streaming) — frame it that way to justify the work.Compatibility
Sequencing
206 responses, seeking, HEAD, and iOS playback with curl and a real device.Maintenance
Support
Scaling
X-Accel-Redirect) or a CDN/object-storage signed URL for public or semi-public content; reserve PHP streaming for short, low-concurrency, highly-authorized content; cap concurrent streams per user and add rate limiting.max_execution_time and memory expectations, and confirm the implementation streams in chunks rather than loading files into memory.Failure modes
206/Content-Range handling — the highest-probability, highest-visibility failure.Ramp-up
How can I help you explore Laravel packages today?