New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

foxws/laravel-shaka

Package video and audio into HLS and DASH with Shaka Packager, on top of foxws/laravel-media.
7,789 2
Install
composer require foxws/laravel-shaka
Latest Version:3.0.1
PHP:^8.4
Laravel:13
Older releases:11 · 12
License:MIT
Last Updated:Oct 15, 2026
Links: GitHub  ·  Packagist
Maintainer: francoism90

Laravel Shaka

Latest Version on Packagist GitHub Tests Action Status Total Downloads

Package video and audio into HLS and DASH with Shaka Packager, on top of foxws/laravel-media. Read the source from any Laravel disk, and write the result to any disk.

Shaka Packager packages already-encoded video; it doesn't re-encode. That makes it fast. Encode several qualities first with laravel-media's rendition ladder, then package them together.

See the full documentation: Installation, Usage, Testing, Configuration, Upgrading from 2.x.

Requirements

Installation

composer require foxws/laravel-shaka

Install the packager binary, then check the setup:

php artisan media:info

[!TIP] Let your AI agent do the hard parts. This package ships a Laravel Boost skill, laravel-shaka-development, that teaches your agent how to install, configure and use Laravel Shaka. Install Boost and select the skill when prompted:

composer require laravel/boost --dev
php artisan boost:install

Already using Boost? Run php artisan boost:update --discover to pick up the skill. Then just ask, for example: "Package my encoded videos into HLS and DASH with cbcs encryption."

Quick start

use Foxws\Media\Encryption\ProtectionScheme;
use Foxws\Media\Facades\Media;

$result = Media::fromDisk('media')
    ->open('videos/clip.mp4')
    ->shaka()
    ->addStreamsFrom()
    ->withHlsPlaylist()
    ->withDashManifest()
    ->withEncryption(scheme: ProtectionScheme::Cbcs)
    ->toDisk('s3')
    ->save('streams/clip');

This writes one set of encrypted segments with both an HLS playlist and a DASH manifest, and uploads them to streams/clip on the s3 disk. shaka() is laravel-media's packaging builder with the Shaka Packager driver; set MEDIA_PACKAGER=shaka to use it for every package() call.

Shaka Packager's other options, such as DRM systems, key servers and live DASH, are typed methods on ShakaOptions:

use Foxws\Shaka\ProtectionSystem;
use Foxws\Shaka\ShakaOptions;

->withOptions(ShakaOptions::make()->protectionSystems(ProtectionSystem::Widevine)->lowLatencyDashMode())

Testing

composer test

Credits

Used by Stry, a self-hosted video streaming app.

AI, specifically Claude, was used to help build this package. All AI-assisted output is reviewed by me, and I retain final say over everything that is implemented and released.

License

MIT. See License File.

Related Packages

foxws/laravel-streamer

Encode video into several qualities and package it into HLS and DASH with Shaka...

6,503 2
foxws/laravel-media

Probe, encode, package and stream media in Laravel with ffmpeg.

1,386 1
daun/statamic-mux

Seamless video encoding and streaming using Mux on Statamic sites

7,464 13
achyutn/laravel-hls

A package to convert video files to HLS with rotating key encryption.

1,609 130
acekyd/laravelmp3

A light weight Laravel package for simple operations with mp3 files

3,709 22

Version History

Version Released PHP Laravel License
3.0.1 ^8.4 ^13.0 MIT
3.0.0 ^8.4 ^13.0 MIT
2.4.0 ^8.3 ^12.0||^13.0 MIT
2.3.2 ^8.3 ^12.0||^13.0 MIT
2.3.1 ^8.3 ^12.0||^13.0 MIT