dhia chemingui
08/14/2026, 4:00 PMModifier.blur() to a Compose container does not blur the video rendered by an embedded AVPlayerViewController.
For example, I have:
Column(
modifier = Modifier
.fillMaxSize()
.blur(20.dp)
) {
// Compose content
UIKitViewController(
factory = { AVPlayerViewController() }
)
}
The Compose content is blurred correctly, but the AVPlayer video is not included in the blur; depending on the setup, the video can remain sharp or the blurred area can become black/white.
Is this expected because `AVPlayerViewController`/`AVPlayerLayer` is rendered through a native/hardware-backed surface that Compose's blur can't capture?
If so, is there a supported way for a Compose blur/effect to include the pixels rendered by AVPlayerViewController, or is the recommended approach to implement the blur natively on the UIKit side / capture the current video frame and blur that instead?
I’m using UIKitViewController from Compose Multiplatform and AVPlayerViewController with showsPlaybackControls = false.dhia chemingui
08/14/2026, 4:02 PMUIKitViewController itself.
When blur is requested:
1. Capture the current frame from AVPlayer.
2. Temporarily cover/hide the AVPlayerViewController.
3. Render the captured frame as an image and apply the Compose blur to that image.
4. When blur is removed, remove the frame overlay and show the player again.
This would keep the workaround inside NativeVideoSurface and avoid changing the shared player/UI layer.
Does this sound like a reasonable approach, or is there a better way to make a Compose blur/effect include the native AVPlayerViewController content?markturnip
08/20/2026, 5:46 AMUIKitView with a wrapped AVPlayerLayer?markturnip
08/20/2026, 5:47 AMUIKitViewController, but I suppose you could test with some more basic contentmarkturnip
08/20/2026, 5:49 AM