Troubleshooting
Start with php artisan streamer:info. It shows whether Shaka Streamer runs and where temporary files go.
Shaka Streamer is not installed
RuntimeException: Shaka Streamer is not installed or not accessible.
which shaka-streamer found nothing. Install it with pip install shaka-streamer, or set STREAMER_BINARY to its full path, for example inside a Python virtualenv.
Invalid Shaka Streamer configuration
Shaka Streamer rejected the config. It stops on any field it doesn't know. Common causes:
- A typo in
withOption()orstreamer_options. - A stream option that isn't an input config field, such as Shaka Packager's
bandwidth.
Check the config with ->getCommand(), and compare it with the configuration fields.
FFmpeg or Shaka Packager fails
The error output names the tool that failed.
ffmpegorpackagernot found: installshaka-streamer-binaries, or install both tools yourself and calluseSystemBinaries().- An unknown encoder, such as
h264_vaapi: your FFmpeg build doesn't support that hardware encoder, orhwaccel_apidoesn't match your hardware. Try without thehw:prefix first. - Input file not found: the path wasn't opened with
open(), or the file is gone.
The job times out
Illuminate\Process\Exceptions\ProcessTimedOutException means Shaka Streamer ran longer than STREAMER_TIMEOUT (default 4 hours). Encode fewer qualities, use hardware encoding, or raise the timeout. Check the job and queue timeouts too. See Queues.
Not enough space
InsufficientStorageException: Insufficient storage space in [/cache/temp/streamer]: 314572800 bytes free, 1073741824 bytes required.
A storage floor stopped the job before it started, so nothing needs cleaning up. Free up space, give the mount more room, or run fewer jobs at once.
A No space left on device error from FFmpeg means the disk filled up during the job. Set STREAMER_TEMPORARY_MIN_FREE to the largest output you expect.
Files failed to copy
RuntimeException: 2 file(s) failed to copy to disk "s3": ...
The upload failed for the files listed. Common causes:
- Wrong S3 credentials, bucket or endpoint in
config/filesystems.php. withVisibility('public')on a bucket that blocks public ACLs. Leave visibility unset, or allow ACLs.- A self-hosted S3 store that needs
use_path_style_endpoint.
Temporary files pile up
Something isn't calling cleanupTemporaryFiles() after a failure. Call it in finally in every job. See Usage.
The player won't play the stream
- Nothing loads in the browser: the bucket needs a CORS policy that allows your site.
- It stops after a while: signed URLs in the playlist expired. Give segment URLs a longer lifetime, or reload the playlist.
- Encrypted HLS doesn't play: the key URL in the playlist must be reachable. Sign it with
setKeyUrlResolver(). See Encryption. - Encrypted video doesn't play in Safari: use the
cbcsprotection scheme.
Logs
Shaka Streamer's config, with keys redacted, and its output are logged to STREAMER_LOG_CHANNEL. Use a separate channel to keep them apart:
STREAMER_LOG_CHANNEL=streamer
Still stuck?
Open an issue with the output of php artisan streamer:info, the config from getCommand(), and the error message.
