Foxws

Video · HLS/DASH · Shaka Packager

Laravel Shaka

Package already-encoded video into HLS and DASH with Shaka Packager, including DRM and live DASH. Read from any Laravel disk, and write to any disk.

composer require foxws/laravel-shaka
Get startedSource
Latest release
3.0.0
Requires
PHP ^8.4
Laravel
13.x
Runtime
Shaka Packager, foxws/laravel-media
Licence
MIT
Downloads
916/mo

Introduction

This package runs Shaka Packager from Laravel. It turns video and audio files into HLS and DASH streams.

It's an add-on for foxws/laravel-media: it adds a shaka driver to laravel-media's packaging builder. You open media with laravel-media, and shaka() packages it:

use Foxws\Media\Facades\Media;

Media::fromDisk('media')
    ->open('videos/clip.mp4')
    ->shaka()
    ->addStreamsFrom()
    ->withHlsPlaylist()
    ->withDashManifest()
    ->toDisk('s3')
    ->save('streams/clip');

What it does, and what it doesn't

Shaka Packager packages. It cuts already-encoded video into segments and writes the playlists that players read. It does not re-encode, so it's fast, and the output is about the same size as the input.

To get several qualities, encode them first with laravel-media's rendition ladder, then add each file as a stream.

laravel-media's own native packager needs only FFmpeg. Use Shaka Packager when you need what the native packager doesn't do: cbcs encryption for Safari, key rotation, a clear lead, Widevine and PlayReady, live and low-latency DASH, or several audio streams.

Features

  • Every packaging feature of laravel-media: any Laravel disk for input and output, DASH and HLS from the same segments, AES encryption with a generated key, signed playlists with DynamicHLSPlaylist and DynamicDASHManifest, concurrent S3 uploads, events and temporary file cleanup.
  • Shaka Packager's own options as typed methods with ShakaOptions: DRM systems, Widevine and PlayReady key servers, live DASH, base URLs and segment numbering.
  • Media::fake() in tests, with FakeShaka writing placeholder outputs.

Requirements

Pages