# Xstream

This article describes how to configure Xstream DRM with THEOplayer.

Head to our page on [DRM](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/introduction.md) for more general information.

## SDKs

| Web SDK | Android SDK | iOS SDK | tvOS SDK   | Android TV SDK | Chromecast SDK |
| ------- | ----------- | ------- | ---------- | -------------- | -------------- |
| Yes     | Yes         | Yes     | Unverified | Yes            | Yes            |

## Code examples

##### Web SDK

```js
if (HLS) {
  let drmConfiguration = {
    integration: 'xstream',
    streamId: '<STREAM_ID>',
    ticketAcquisitionURL: '<TICKET_ACQUISITION_URL>',
    /*"fairplay": {
            "licenseAcquisitionURL": "<LICENSE_KEY_URL_FAIRPLAY>",
            "certificateURL": "CERTIFICATE_URL>"
        }*/
  };
  player.source = {
    sources: {
      src: '<HLS_STREAM_URL>',
      type: 'application/x-mpegurl',
      contentProtection: drmConfiguration,
    },
  };
} else if (DASH) {
  let drmConfiguration = {
    integration: 'xstream',
    streamId: '<STREAM_ID>',
    ticketAcquisitionURL: '<TICKET_ACQUISITION_URL>',
    /*"playready": {
            "licenseAcquisitionURL": "<LICENSE_KEY_URL_PLAYREADY>"
        },
        "widevine": {
            "licenseAcquisitionURL": "<LICENSE_KEY_URL_WIDEVINE>"
        }*/
  };
  player.source = {
    sources: {
      src: '<DASH_STREAM_URL>',
      type: 'application/dash+xml',
      contentProtection: drmConfiguration,
    },
  };
}
```

##### Android SDK

```java
DRMConfiguration drmConfiguration = new XstreamConfiguration.Builder("<STREAM_ID>", "<TICKET_ACQUISITION_URL>")
    .widevine(
        KeySystemConfiguration.Builder.keySystemConfiguration("LA_URL").build()
    )
    .build()
TypedSource typedSource = new TypedSource.Builder()
    .src("<DASH_STREAM_URL>")
    .drm(drmConfiguration)
    .build();
SourceDescription sourceDescription = SourceDescription.Builder.sourceDescription()
    .sources(typedSource)
    .build();
theoplayer.getPlayer().setSource(sourceDescription);
```

##### Legacy iOS/tvOS SDK (4.12.x)

```swift
let drmConfiguration = XstreamDRMConfiguration(
    licenseAcquisitionURL: "<LICENSE_KEY_URL_FAIRPLAY>",
    certificateURL: "<CERTIFICATE_URL>",
    streamId: "<STREAM_ID>",
    ticketAcquisitionURL: "<TICKET_ACQUISITION_URL>"
)
let typedSource = TypedSource(src: "<HLS_STREAM_URL>", type: "application/x-mpegurl", drm: drmConfiguration)
let sourceDescription = SourceDescription(source: typedSource)
theoplayer.source = sourceDescription
```

## Related articles

* [Comcast](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/comcast.md)
* [DoveRunner](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/doverunner.md)
* [BuyDRM KeyOS](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/buydrm-keyos/introduction.md)
* [Arris Titanium](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/arris-titanium.md)
* [Uplynk](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/uplynk.md)
* [Xstream](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/xstream.md)
* [Vualto VuDRM](https://docs-preview.optiview.dolby.com/pr-863/theoplayer/v10/how-to-guides/drm/vualto-vudrm.md)
