Skip to content

A fluent, chainable API for working with FFmpeg in Laravel applications. Process videos and audio with an elegant, expressive syntax.

License

Notifications You must be signed in to change notification settings

ritechoice23/laravel-fluent-ffmpeg

Repository files navigation

Laravel Fluent FFmpeg

Laravel Fluent FFmpeg Thumbnail

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

A fluent, chainable API for working with FFmpeg in Laravel applications. Process videos and audio with an elegant, expressive syntax.

Installation

composer require ritechoice23/laravel-fluent-ffmpeg

Publish the configuration:

php artisan vendor:publish --tag=fluent-ffmpeg-config

Quick Start

use Ritechoice23\FluentFFmpeg\Facades\FFmpeg;

// Basic video conversion
FFmpeg::fromPath('video.mp4')
    ->videoCodec('libx264')
    ->audioCodec('aac')
    ->resolution(1920, 1080)
    ->save('output.mp4');

// Or using the global helper
ffmpeg()->fromPath('video.mp4')
    ->videoCodec('libx264')
    ->save('output.mp4');

// Extract audio
FFmpeg::fromPath('video.mp4')
    ->extractAudio()
    ->save('audio.mp3');

// Create GIF
FFmpeg::fromPath('video.mp4')
    ->clip('00:00:05', '00:00:10')
    ->toGif(['fps' => 15, 'width' => 480])
    ->save('animation.gif');

// Advanced HLS Streaming (Multi-bitrate)
FFmpeg::fromPath('video.mp4')
    ->exportForHLS()
    ->addFormat('1080p')
    ->addFormat('720p')
    ->addFormat('480p')
    ->save('stream.m3u8');

// Extract multiple clips
FFmpeg::fromPath('video.mp4')
    ->clips([
        ['start' => '00:00:10', 'end' => '00:00:20'],
        ['start' => '00:01:30', 'end' => '00:02:00'],
        ['start' => '00:03:45', 'end' => '00:04:15'],
    ])
    ->save('highlight.mp4'); // Outputs: highlight_1.mp4, highlight_2.mp4, highlight_3.mp4

// Video composition with intro, outro, and watermark
FFmpeg::fromPath('video.mp4')
    ->withIntro('intro.mp4')
    ->withOutro('outro.mp4')
    ->withWatermark('logo.png', 'bottom-right')
    ->save('branded.mp4');

Features

  • Fluent API - Chainable, expressive syntax
  • Multi-Clip Extraction - Extract multiple clips with auto-numbering
  • Video Composition - Add intro, outro, and watermarks to clips
  • 20+ Filters - Effects, transformations, overlays
  • Multiple Formats - MP4, HLS, DASH, GIF, and more
  • Media Probing - Get detailed video/audio information
  • Laravel Disks - Save to S3, local, or any disk
  • Progress Tracking - Real-time progress with broadcasting
  • Queue Support - Process videos in background
  • Smart Defaults - Sensible defaults from config
  • Events - Track processing lifecycle
  • Fully Tested - 104+ passing tests

Documentation

Requirements

  • PHP 8.2+
  • Laravel 10.0+
  • FFmpeg 4.0+

Testing

composer test

Credits

License

The MIT License (MIT). Please see License File for more information.

About

A fluent, chainable API for working with FFmpeg in Laravel applications. Process videos and audio with an elegant, expressive syntax.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 2

  •  
  •  

Languages