PHP code example of foxws / laravel-shaka
1. Go to this page and download the library: Download foxws/laravel-shaka library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
foxws / laravel-shaka example snippets
use Foxws\Shaka\Facades\Shaka;
$result = Shaka::fromDisk('s3')
->open('videos/input.mp4')
->addVideoStream('videos/input.mp4', 'video_1080p.mp4', ['bandwidth' => '5000000'])
->addVideoStream('videos/input.mp4', 'video_720p.mp4', ['bandwidth' => '3000000'])
->addAudioStream('videos/input.mp4', 'audio.mp4')
->withHlsMasterPlaylist('master.m3u8')
->withSegmentDuration(6)
->export()
->toDisk('export')
->save();
use Foxws\Shaka\Facades\Shaka;
$result = Shaka::open('input.mp4')
->addVideoStream('input.mp4', 'video.mp4')
->addAudioStream('input.mp4', 'audio.mp4')
->withHlsMasterPlaylist('master.m3u8')
->export()
->save();
$result = Shaka::open('input.mp4')
->addVideoStream('input.mp4', 'video_1080p.mp4', ['bandwidth' => '5000000'])
->addVideoStream('input.mp4', 'video_720p.mp4', ['bandwidth' => '3000000'])
->addVideoStream('input.mp4', 'video_480p.mp4', ['bandwidth' => '1500000'])
->addAudioStream('input.mp4', 'audio.mp4')
->withHlsMasterPlaylist('master.m3u8')
->withSegmentDuration(6)
->export()
->save();
$result = Shaka::fromDisk('s3')
->open('videos/input.mp4')
->addVideoStream('videos/input.mp4', 'video.mp4')
->addAudioStream('videos/input.mp4', 'audio.mp4')
->withHlsMasterPlaylist('master.m3u8')
->export()
->toDisk('export') // Save output to a different disk (e.g., local, s3, etc.)
->toPath('exports/') // (Optional) Save to a subdirectory on the target disk
->save();
// Basic encryption with auto-generated AES-128 key
Shaka::open('input.mp4')
->addVideoStream('input.mp4', 'video.mp4')
->addAudioStream('input.mp4', 'audio.mp4')
->withHlsMasterPlaylist('master.m3u8')
->withAESEncryption() // Auto-generates key with 'cbc1' scheme
->export()
->save();
// With key rotation (generates key_0.key, key_1.key, etc.)
Shaka::open('input.mp4')
->addVideoStream('input.mp4', 'video.mp4')
->addAudioStream('input.mp4', 'audio.mp4')
->withHlsMasterPlaylist('master.m3u8')
->withAESEncryption()
->withKeyRotationDuration(60) // Rotate every 60 seconds
->export()
->toDisk('s3')
->save();
use Foxws\Shaka\Http\DynamicHLSPlaylist;
use Illuminate\Support\Facades\Storage;
public function playlist(Video $video)
{
return (new DynamicHLSPlaylist('s3'))
->open("videos/{$video->id}/master.m3u8")
->setKeyUrlResolver(fn ($key) => Storage::disk('s3')->temporaryUrl(
"videos/{$video->id}/{$key}",
now()->addHour()
))
->setMediaUrlResolver(fn ($file) => Storage::disk('s3')->temporaryUrl(
"videos/{$video->id}/{$file}",
now()->addHours(2)
))
->toResponse(request());
}
use Foxws\Shaka\Http\DynamicDASHManifest;
use Illuminate\Support\Facades\Storage;
public function manifest(Video $video)
{
return (new DynamicDASHManifest('s3'))
->open("videos/{$video->id}/manifest.mpd")
->setKeyUrlResolver(fn ($key) => Storage::disk('s3')->temporaryUrl(
"videos/{$video->id}/{$key}",
now()->addHour()
))
->setMediaUrlResolver(fn ($file) => Storage::disk('s3')->temporaryUrl(
"videos/{$video->id}/{$file}",
now()->addHours(2)
))
->setInitUrlResolver(fn ($file) => Storage::disk('s3')->temporaryUrl(
"videos/{$video->id}/{$file}",
now()->addHours(2)
))
->toResponse(request());
}
bash
php artisan vendor:publish --tag="shaka-config"
bash
php artisan shaka:info