Using image generators

The medialibrary has built-in support to convert images. To generate conversions of other media types – most notably PDFs and videos – the medialibrary uses a image generators to create a derived image file of the media.

Conversion of specific file type are defined in the exact same way as images:

$this->addMediaConversion('thumb')
     ->width(368)
     ->height(232)
     ->performOnCollections('videos');

The medialibrary includes image generators for the following file types:

PDF

The PDF generator requires Imagick and Ghostscript. If you're running into issues with Ghostscript have a look at issues regarding Ghostscript.

SVG

The only requirement to perform a conversion of a SVG file is Imagick.

Video

The video image generator uses the PHP-FFMpeg package that you can install via composer:

$ composer require php-ffmpeg/php-ffmpeg

You'll also need to follow FFmpeg installation instructions on their official website.

The video image generator allows you to choose at which time of the video the derived file should be created using the setExtractVideoFrameAtSecond on the conversion.

$this->addMediaConversion('thumb')
     ->width(368)
     ->height(232)
     ->extractVideoFrameAtSecond(20)
     ->performOnCollections('videos');

Once the conversion is created you can easily use the thumbnail in a html video tag for example:

<video controls poster="{{ $video->getUrl('thumb') }}">
  <source src="{{ $video->getUrl() }}" type="video/mp4">
  Your browser does not support the video tag.
</video>