Skip to content

PAM Native Video

Terminal window
pam add video
pam doctor
return VideoPlayer::make('https://cdn.example.com/master.m3u8')
->autoPlay()
->controls()
->resizeMode(VideoResizeMode::Cover)
->onEvent(fn (VideoEventKind $kind, array $event) => $this->handle($kind, $event));

VideoPlayer owns native adaptive/local playback; VideoResizeMode selects contain/cover/fill; VideoEventKind reports prepared/progress/completion/ failure; VideoPlaybackState tracks lifecycle. Subtitle/audio tracks, looping, mute/volume, revision-based seek, and sandboxed local files are supported.

Prefer adaptive manifests for variable networks, keep progress intervals coarse, make seek an intentional state revision rather than every render, and pause/release with screen visibility. Android uses Media3 1.9.3; iOS uses AVFoundation/AVKit.

VideoPluginProvider registers VideoPlayer automatically.