foxws / laravel-shaka
Package video and audio into HLS and DASH with Shaka Packager, on top of foxws/laravel-media.
Fund package maintenance!
Requires
- php: ^8.4
- foxws/laravel-media: ^0.3.4
- illuminate/contracts: ^13.0
- illuminate/support: ^13.0
Requires (Dev)
- larastan/larastan: ^3.9
- laravel/pint: ^1.29
- orchestra/testbench: ^11.0
- pestphp/pest: ^5.0
- pestphp/pest-plugin-laravel: ^5.0
- pestphp/pest-plugin-type-coverage: ^5.0.2
- phpstan/extension-installer: ^1.4
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- 3.0.0
- 2.4.0
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.1
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.9.0
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.0
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.0
- 0.9.0
- 0.8.0
- 0.7.0
- 0.6.0
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.0
- dev-build-on-laravel-media
- dev-add-homepage-group
- dev-feat-config
- dev-fix-missing-keys
- dev-copilot/sub-pr-2-one-more-time
- dev-copilot/sub-pr-2-again
This package is auto-updated.
Last update: 2026-10-07 10:05:03 UTC
README
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
- PHP 8.4 or higher
- Laravel 13
- foxws/laravel-media 0.3.4 or higher
- The Shaka Packager binary
Installation
composer require foxws/laravel-shaka
Install the packager binary, then check the setup:
php artisan media:info
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
Links
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.