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.
- Penonton
Masuk ke layanan Anda dan meminta video.
- Backend Anda
Memeriksa pembelian, langganan, atau izin menonton lainnya milik pengguna.
- DRM-X
Menerapkan aturan yang dipilih dan mengembalikan konfigurasi serta otorisasi pemutaran.
- Pemutar
Menggunakan otorisasi yang diterima untuk meminta lisensi DRM yang diperlukan untuk pemutaran.
Buat Sesi Pemutaran Universal #
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-beta.4"
}
}
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.
Contoh respons berhasil
Contoh ini menggunakan URL contoh yang tidak berfungsi dan token placeholder. Baca deskriptor bertingkat; alias kompatibilitas disertakan untuk integrasi lama.
{
"contractVersion": 1,
"playbackMode": "streaming",
"sessionId": "c9006ed8-58c8-45db-9ed0-311d1047c210",
"contentId": "course-12-lesson-4",
"drmSystem": "widevine",
"manifestUrl": "https://media.example.test/course-12/manifest.mpd",
"manifestUrls": {"dash": "https://media.example.test/course-12/manifest.mpd"},
"expiresAt": "2026-10-26T12:10:00Z",
"drm": {
"system": "widevine",
"licenseServerUrl": "https://license6.drm-x.com/v1/licenses/widevine",
"drmLicenseToken": "REDACTED_EXAMPLE_ONLY",
"tokenType": "Bearer",
"fairPlayCertificateUrl": null
},
"release": {
"url": "https://license6.drm-x.com/v1/playback-sessions/release",
"method": "POST",
"authorizationScheme": "Bearer"
},
"policy": {"maximumHeight": 1080, "allowedTrackTypes": ["AUDIO", "SD", "HD"]},
"tracks": {"audioLanguageSelection": true, "subtitleLanguageSelection": true, "languageTagStandard": "BCP-47"},
"platformCapabilities": null,
"playerBranding": null,
"token": "REDACTED_EXAMPLE_ONLY",
"tokenType": "Bearer",
"licenseServerUrl": "https://license6.drm-x.com/v1/licenses/widevine",
"fairPlayCertificateUrl": null,
"releaseUrl": "https://license6.drm-x.com/v1/playback-sessions/release",
"maximumHeight": 1080,
"allowedTrackTypes": ["AUDIO", "SD", "HD"]
}
Otentikasi dan ruas permintaan terpercaya #
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 . |
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 #
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 #
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 .
Lepaskan pemesanan pada Stop, penggantian putar, galat terminal, dan matikan aplikasi. Upaya baru akan memperoleh sesi baru ID.
POST https://license6.drm-x.com/v1/playback-sessions/release
Authorization: Bearer REDACTED_EXAMPLE_ONLY
Accept: application/json
HTTP/1.1 200 OK
{"contractVersion":1,"released":true,"code":"license_session_released","requestId":"example-request-id"}
Gunakan URL pelepasan dan skema otorisasi yang dikembalikan dengan DRM License Token yang sama. Tidak diperlukan isi permintaan. Pelepasan berulang yang terautentikasi mengembalikan HTTP 200 dengan released false dan code license_session_not_active. Otorisasi yang kedaluwarsa atau tidak valid dapat gagal sebelum pelepasan; dapatkan otorisasi baru untuk upaya pemutaran baru. Coba ulang gangguan layanan sementara dengan jeda bertahap dan jumlah percobaan terbatas.
Kontrak publik ini menjelaskan streaming. Endpoint offline milik pelanggan dan lisensi persisten yang terikat perangkat memiliki alur terpisah; jangan gunakan kembali respons streaming ini sebagai lisensi offline.
DRM-X 6.0