<!--
{
  "availability" : [
    "iOS: 17.4.0 -",
    "iPadOS: 17.4.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "BrowserEngineKit",
  "identifier" : "/documentation/BrowserEngineKit/MediaEnvironment",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "BrowserEngineKit"
    ],
    "preciseIdentifier" : "s:16BrowserEngineKit16MediaEnvironmentV"
  },
  "title" : "MediaEnvironment"
}
-->

# MediaEnvironment

An object that identifies a media playback or streaming environment.

```
struct MediaEnvironment
```

## Overview

To stream media in your browser app, create an instance of `MediaEnvironment` and call [`activate()`](/documentation/BrowserEngineKit/MediaEnvironment/activate()) before beginning media playback or capture, for example, by calling the <doc://com.apple.documentation/documentation/AVFoundation/AVCaptureSession> class’s [`makeCaptureSession()`](/documentation/BrowserEngineKit/MediaEnvironment/makeCaptureSession()) method.

To finish media playback or capture, call [`suspend()`](/documentation/BrowserEngineKit/MediaEnvironment/suspend()).

If your app captures media input or prepares streaming content in a rendering extension, call [`activate()`](/documentation/BrowserEngineKit/MediaEnvironment/activate()) before [`grantCapability(_:)`](/documentation/BrowserEngineKit/RenderingProcess/grantCapability(_:)) to grant the media playback and capture capability, which you create with [`ProcessCapability.mediaPlaybackAndCapture(environment:)`](/documentation/BrowserEngineKit/ProcessCapability/mediaPlaybackAndCapture(environment:)).

Call [`createXPCRepresentation()`](/documentation/BrowserEngineKit/MediaEnvironment/createXPCRepresentation()) and use <doc://com.apple.documentation/documentation/XPC> to send the media environment to a rendering extension. Additionally, grant the same capability to the web content extension for a page that plays or captures media by calling [`grantCapability(_:)`](/documentation/BrowserEngineKit/WebContentProcess/grantCapability(_:)).

## Topics

### Creating a media environment

[`init(webPage: URL)`](/documentation/BrowserEngineKit/MediaEnvironment/init(webPage:))

Creates a new media environment identified by the URL.

[`init(xpcRepresentation: xpc_object_t) throws`](/documentation/BrowserEngineKit/MediaEnvironment/init(xpcRepresentation:))

Creates a media environment from an XPC representation.

### Sending media environments over XPC connections

[`func createXPCRepresentation() -> xpc_object_t`](/documentation/BrowserEngineKit/MediaEnvironment/createXPCRepresentation())

Creates an encoded representation of the media environment for transmission through an XPC connection.

### Capturing media streams

[`func activate() throws`](/documentation/BrowserEngineKit/MediaEnvironment/activate())

Activates the media environment.

[`func makeCaptureSession() throws -> AVCaptureSession`](/documentation/BrowserEngineKit/MediaEnvironment/makeCaptureSession())

Creates a new capture session in this media environment  or throws an error if it can not be created.

[`func suspend() throws`](/documentation/BrowserEngineKit/MediaEnvironment/suspend())

Suspends the media environment.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)