# Buat sesi pemutaran

Request and consume the DRM-X Universal Playback Session Contract with authentication, trusted Content IDs, and bounded authorization.

Cara pemutaran diotorisasi

Backend Anda menentukan siapa yang boleh menonton. DRM-X memberikan otorisasi pemutaran. Pemutar menggunakannya untuk meminta lisensi DRM.

- 01**Penonton**

Masuk ke layanan Anda dan meminta video.

- 02**Backend Anda**

Memeriksa pembelian, langganan, atau izin menonton lainnya milik pengguna.

- 03**DRM-X**

Menerapkan aturan yang dipilih dan mengembalikan konfigurasi serta otorisasi pemutaran.

- 04**Pemutar**

Menggunakan otorisasi yang diterima untuk meminta lisensi DRM yang diperlukan untuk pemutaran.

Backend Anda memutuskan akses; DRM-X memaksa kebijakan yang ditandatangani. Media tersandi dan DRM lisensi mengikuti jalur pengiriman terpisah.

API 

## Buat Sesi Pemutaran Universal [ # ](#create-a-universal-playback-session)



```
POST https://api6.drm-x.com/api/v1/playback/environments/{siteId}/sessions
Accept: application/json
Content-Type: application/json
X-DRMX-Client-Id: {siteKey}
X-DRMX-Client-Secret: {accessKey}
```



```
{
  "contentId": "course-12-lesson-4",
  "contentType": "vod",
  "drmSystem": "widevine",
  "subject": "customer-user-1001",
  "sessionId": "new-unpredictable-id-per-playback",
  "playbackMode": "streaming",
  "licensePolicyTemplate": "multi-tier-standard",
  "useEnvironmentDefaults": true,
  "applicationId": "customer-web",
  "platformCapabilities": {
    "clientPlatform": "web",
    "drmSystems": ["widevine"],
    "manifestTypes": ["dash"],
    "maximumHeight": 2160,
    "persistentState": false,
    "sdkVersion": "1.2.0-preview.6"
  }
}
```



Balasan Kontrak v1 yang sukses termasuk manifest otoritatif, varian manifest yang tersedia, sebuah DRM- lisensi spesifik URL, sebuah pendek-hidup DRM License Token atau otorisasi proksi pelanggan, rute rilis, yang berlisensi tinggi maksimum, dan diperbolehkan trek. Kembalikan dengan `Cache-Control: no-store`.



Gunakan satu sesi yang tak terduga ID untuk setiap percobaan pemutaran yang sebenarnya. Gunakan sebuah ID di perangkat yang mengalahkan arus yang sedang berjalan.





## Otentikasi dan ruas permintaan terpercaya [ # ](#authentication-and-trusted-request-fields)

Sebut ini API dari backend Anda dengan sebuah projek API klien yang memiliki `license-tokens:create`. Gunakan lingkungan UUID sebagai `siteId`. Tampilan dikonfirmasi Anda memanggil titik akhir; Anda menyediakan daerah yang terpercaya di bawah.

| Ruas | Artinya | Aturan integrasi | 
| --- | --- | --- |

| `contentId` | Referensi isi yang diterbitkan | Selesaikan dari katalog terpercaya Anda setelah cek hak. | 

| `subject` | Identifier penampil stabil Anda | Derif dari sesi terotentikasi, bukan pengguna yang diberikan oleh klien ID. | 

| `drmSystem` | `widevine`, `playready`, `fairplay`, atau `wiseplay` | Cocok dengan yang dipilih DRM ke kemampuan pemutar. | 

| `sessionId` | Identitas percobaan pemutaran ini | Hasilkan nilai yang baru tak terduga untuk setiap usaha. | 

| `contentType` | `vod` atau `live` | Gunakan tipe yang terdaftar untuk isi. | 

| `playbackMode` | `streaming` dalam Kontrak v1 | Pemutaran luring memerlukan ekstensi kontrak nanti. | 

| `licensePolicyTemplate` / `licensePolicy` | Kebijakan bernama atau kebijakan gubahan | Pilih pada server Anda; jangan sediakan keduanya. Lihat [ aturan kebijakan ](https://docs.drm-x.com/id/license-service/policies). | 

| `platformCapabilities` | Platform, DRM sistem, tipe manifest, dan hints perangkat | Kirim kemampuan eksplisit dengan integrasi. mereka menggambarkan klien; mereka tidak menimpa kebijakan lisensi. | 



## Konsumsi deskripsi respon [ # ](#consume-the-response-descriptors)

Gunakan nested Contract v1 deskripsi. Jangan buat URL lisensi dari menebak atau ganti URL muatan terdaftar dengan pemutar masukan.

| Ruas respon | Bagaimana menggunakannya | 
| --- | --- |

| `contractVersion` | Verifikasi bahwa versi kontrak yang dikembalikan didukung oleh integrasi Anda. | 

| `manifestUrl` / `manifestUrls` | Muat manifest yang dipilih berwibawa atau varian yang kembali kompatibel. | 

| `expiresAt` | Kehabisan otorisasi terbatas ini. | 

| `drm` | Baca `system`, `licenseServerUrl`, `drmLicenseToken`, `tokenType`, dan opsional `fairPlayCertificateUrl`. Proksi token pelanggan dapat menggantikan browser- yang menghadap otorisasi dengan sesi sendiri yang terbatas. | 

| `release` | Gunakan `url` nya, `method`, dan `authorizationScheme` untuk merilis sesi ketika pemutaran berakhir. | 

| `policy` | Kehormatan `maximumHeight` dan `allowedTrackTypes`. Penyedia masih memaksa kebijakan yang ditandatangani. | 

| `tracks` | Baca audio / subjudul lesu - kemampuan seleksi dan lesu - tag standar. | 

Kembalikan jawaban pemutar Anda dengan `Cache-Control: no-store`. Jangan pernah meneruskan projek Access Key ke peramban. Batasi tajuk otorisasi ke lisensi yang dikembalikan dan rute sertifikat.



## Menangani kesalahan dan rilis pemesanan [ # ](#handle-errors-and-release-reservations)

Inspeksi status HTTP dan dapat dibaca oleh mesin `code`. Tahan `requestId` untuk mengabaikan dan menghormati `retryable`; kebijakan yang ditolak atau tidak valid membutuhkan keputusan yang dikoreksi, bukan pengulangan ulang. Lihat kesalahan dari sesi [ yang mereferensikan ](https://docs.drm-x.com/id/api-reference/errors).

Lepaskan pemesanan pada Stop, penggantian putar, galat terminal, dan matikan aplikasi. Upaya baru akan memperoleh sesi baru ID.

<!-- Canonical: https://docs.drm-x.com/id/api-reference/playback-sessions -->
<!-- Language: id -->
