[{"data":1,"prerenderedAt":1461},["ShallowReactive",2],{"navigation_docs_en":3,"-en-how-tos-multi-drm-destination":408,"-en-how-tos-multi-drm-destination-surround":1456},[4,25,74,124,238,253,313,342,388],{"title":5,"path":6,"stem":7,"children":8,"page":24},"Getting Started","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[9,14,19],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Quickstart","\u002Fen\u002Fgetting-started\u002Fquickstart","en\u002F1.getting-started\u002F2.quickstart","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Concepts","\u002Fen\u002Fgetting-started\u002Fconcepts","en\u002F1.getting-started\u002F3.concepts","i-lucide-book-open",false,{"title":26,"path":27,"stem":28,"children":29,"page":24},"Live Production","\u002Fen\u002Flive-production","en\u002F2.live-production",[30,35,55,60],{"title":31,"path":32,"stem":33,"icon":34},"On air","\u002Fen\u002Flive-production\u002Fon-air","en\u002F2.live-production\u002F1.on-air","i-lucide-radio",{"title":36,"path":37,"stem":38,"children":39,"page":24},"Live Streams","\u002Fen\u002Flive-production\u002Flive-streams","en\u002F2.live-production\u002F2.live-streams",[40,45,50],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Fen\u002Flive-production\u002Flive-streams\u002Foverview","en\u002F2.live-production\u002F2.live-streams\u002F1.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Options","\u002Fen\u002Flive-production\u002Flive-streams\u002Flive-stream-options","en\u002F2.live-production\u002F2.live-streams\u002F2.live-stream-options","i-lucide-file-text",{"title":51,"path":52,"stem":53,"icon":54},"Start and stop","\u002Fen\u002Flive-production\u002Flive-streams\u002Fstart-stop","en\u002F2.live-production\u002F2.live-streams\u002F3.start-stop","i-lucide-play-circle",{"title":56,"path":57,"stem":58,"icon":59},"Scheduler","\u002Fen\u002Flive-production\u002Fscheduler","en\u002F2.live-production\u002F3.scheduler","i-lucide-calendar-clock",{"title":61,"path":62,"stem":63,"children":64,"page":24},"Recordings","\u002Fen\u002Flive-production\u002Frecordings","en\u002F2.live-production\u002F4.recordings",[65,69],{"title":41,"path":66,"stem":67,"icon":68},"\u002Fen\u002Flive-production\u002Frecordings\u002Foverview","en\u002F2.live-production\u002F4.recordings\u002F1.overview","i-lucide-circle-dot",{"title":70,"path":71,"stem":72,"icon":73},"Editor","\u002Fen\u002Flive-production\u002Frecordings\u002Feditor","en\u002F2.live-production\u002F4.recordings\u002F2.editor","i-lucide-scissors",{"title":75,"path":76,"stem":77,"children":78,"page":24},"Configuration","\u002Fen\u002Fconfiguration","en\u002F3.configuration",[79,93,98,111],{"title":80,"path":81,"stem":82,"children":83,"page":24},"Devices","\u002Fen\u002Fconfiguration\u002Fdevices","en\u002F3.configuration\u002F1.devices",[84,88],{"title":80,"path":85,"stem":86,"icon":87},"\u002Fen\u002Fconfiguration\u002Fdevices\u002Fdevices","en\u002F3.configuration\u002F1.devices\u002F1.devices","i-lucide-server",{"title":89,"path":90,"stem":91,"icon":92},"Groups","\u002Fen\u002Fconfiguration\u002Fdevices\u002Fgroups","en\u002F3.configuration\u002F1.devices\u002F2.groups","i-lucide-network",{"title":94,"path":95,"stem":96,"icon":97},"Sources","\u002Fen\u002Fconfiguration\u002Fsources","en\u002F3.configuration\u002F2.sources","i-lucide-cable",{"title":99,"path":100,"stem":101,"children":102,"page":24},"Encodings","\u002Fen\u002Fconfiguration\u002Fencodings","en\u002F3.configuration\u002F3.encodings",[103,107],{"title":99,"path":104,"stem":105,"icon":106},"\u002Fen\u002Fconfiguration\u002Fencodings\u002Fprofiles","en\u002F3.configuration\u002F3.encodings\u002F1.profiles","i-lucide-sliders-horizontal",{"title":89,"path":108,"stem":109,"icon":110},"\u002Fen\u002Fconfiguration\u002Fencodings\u002Fgroups","en\u002F3.configuration\u002F3.encodings\u002F2.groups","i-lucide-layers",{"title":112,"path":113,"stem":114,"children":115,"page":24},"Destinations","\u002Fen\u002Fconfiguration\u002Fdestinations","en\u002F3.configuration\u002F4.destinations",[116,120],{"title":112,"path":117,"stem":118,"icon":119},"\u002Fen\u002Fconfiguration\u002Fdestinations\u002Fdestinations","en\u002F3.configuration\u002F4.destinations\u002F1.destinations","i-lucide-send",{"title":89,"path":121,"stem":122,"icon":123},"\u002Fen\u002Fconfiguration\u002Fdestinations\u002Fpublishing-groups","en\u002F3.configuration\u002F4.destinations\u002F2.publishing-groups","i-lucide-share-2",{"title":125,"path":126,"stem":127,"children":128,"page":24},"Settings","\u002Fen\u002Fsettings","en\u002F4.settings",[129,142,147,163,179],{"title":130,"path":131,"stem":132,"children":133,"page":24},"Users","\u002Fen\u002Fsettings\u002Fusers","en\u002F4.settings\u002F1.users",[134,138],{"title":130,"path":135,"stem":136,"icon":137},"\u002Fen\u002Fsettings\u002Fusers\u002Fusers","en\u002F4.settings\u002F1.users\u002F1.users","i-lucide-user",{"title":89,"path":139,"stem":140,"icon":141},"\u002Fen\u002Fsettings\u002Fusers\u002Fuser-groups","en\u002F4.settings\u002F1.users\u002F2.user-groups","i-lucide-users",{"title":143,"path":144,"stem":145,"icon":146},"Security","\u002Fen\u002Fsettings\u002Fsecurity","en\u002F4.settings\u002F2.security","i-lucide-shield",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":24},"Assets","i-lucide-image","\u002Fen\u002Fsettings\u002Fassets","en\u002F4.settings\u002F3.assets",[153,158],{"title":154,"path":155,"stem":156,"icon":157},"Logos","\u002Fen\u002Fsettings\u002Fassets\u002Flogos","en\u002F4.settings\u002F3.assets\u002F1.logos","i-lucide-images",{"title":159,"path":160,"stem":161,"icon":162},"Files","\u002Fen\u002Fsettings\u002Fassets\u002Ffiles","en\u002F4.settings\u002F3.assets\u002F2.files","i-lucide-clapperboard",{"title":164,"icon":165,"path":166,"stem":167,"children":168,"page":24},"External Storage","i-lucide-folder-cog","\u002Fen\u002Fsettings\u002Fexternal-storage","en\u002F4.settings\u002F4.external-storage",[169,174],{"title":170,"path":171,"stem":172,"icon":173},"Remote Folders","\u002Fen\u002Fsettings\u002Fexternal-storage\u002Fremote-folders","en\u002F4.settings\u002F4.external-storage\u002F1.remote-folders","i-lucide-folder-archive",{"title":175,"path":176,"stem":177,"icon":178},"Target Folders","\u002Fen\u002Fsettings\u002Fexternal-storage\u002Ftarget-folders","en\u002F4.settings\u002F4.external-storage\u002F2.target-folders","i-lucide-folder-up",{"title":180,"path":181,"stem":182,"children":183,"page":24},"Integrations","\u002Fen\u002Fsettings\u002Fintegrations","en\u002F4.settings\u002F5.integrations",[184,188,193,207],{"title":41,"path":185,"stem":186,"icon":187},"\u002Fen\u002Fsettings\u002Fintegrations\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F1.overview","i-lucide-plug",{"title":189,"path":190,"stem":191,"icon":192},"MediaCopilot","\u002Fen\u002Fsettings\u002Fintegrations\u002Fmediacopilot","en\u002F4.settings\u002F5.integrations\u002F2.mediacopilot","i-lucide-sparkles",{"title":194,"icon":195,"path":196,"stem":197,"children":198,"page":24},"C21 Live Cloud","i-lucide-cloud","\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud",[199,202],{"title":41,"path":200,"stem":201,"icon":195},"\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F1.overview",{"title":203,"path":204,"stem":205,"icon":206},"Accounts","\u002Fen\u002Fsettings\u002Fintegrations\u002Fc21livecloud\u002Faccounts","en\u002F4.settings\u002F5.integrations\u002F3.c21livecloud\u002F2.accounts","i-lucide-key-round",{"title":208,"icon":146,"path":209,"stem":210,"children":211,"page":24},"DRM Providers","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm","en\u002F4.settings\u002F5.integrations\u002F4.drm",[212,216,220,224,228,233],{"title":41,"path":213,"stem":214,"icon":215},"\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Foverview","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F1.overview","i-lucide-shield-check",{"title":217,"path":218,"stem":219,"icon":146},"Widevine","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fwidevine","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F2.widevine",{"title":221,"path":222,"stem":223,"icon":146},"PlayReady","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fplayready","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F3.playready",{"title":225,"path":226,"stem":227,"icon":146},"FairPlay","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Ffairplay","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F4.fairplay",{"title":229,"path":230,"stem":231,"icon":232},"Providers","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fproviders","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F5.providers","i-lucide-shield-half",{"title":234,"path":235,"stem":236,"icon":237},"Workflow","\u002Fen\u002Fsettings\u002Fintegrations\u002Fdrm\u002Fworkflow","en\u002F4.settings\u002F5.integrations\u002F4.drm\u002F6.workflow","i-lucide-workflow",{"title":239,"path":240,"stem":241,"children":242,"page":24},"System Status","\u002Fen\u002Fsystem-status","en\u002F5.system-status",[243,248],{"title":244,"path":245,"stem":246,"icon":247},"Commands","\u002Fen\u002Fsystem-status\u002Fcommands","en\u002F5.system-status\u002F1.commands","i-lucide-square-terminal",{"title":249,"path":250,"stem":251,"icon":252},"Logs","\u002Fen\u002Fsystem-status\u002Flogs","en\u002F5.system-status\u002F2.logs","i-lucide-scroll-text",{"title":254,"path":255,"stem":256,"children":257,"page":24},"How Tos","\u002Fen\u002Fhow-tos","en\u002F6.how-tos",[258,263,268,273,277,281,285,290,294,299,304,309],{"title":259,"path":260,"stem":261,"icon":262},"Start and stop a Live stream","\u002Fen\u002Fhow-tos\u002Fstart-stream-via-api","en\u002F6.how-tos\u002F1.start-stream-via-api","i-lucide-terminal",{"title":264,"path":265,"stem":266,"icon":267},"Ingest a YouTube Live broadcast","\u002Fen\u002Fhow-tos\u002Fingest-youtube-live","en\u002F6.how-tos\u002F10.ingest-youtube-live","i-lucide-youtube",{"title":269,"path":270,"stem":271,"icon":272},"Source Synchronized Encoding (SSE) — bit-identical redundancy","\u002Fen\u002Fhow-tos\u002Fsource-synchronized-encoding","en\u002F6.how-tos\u002F11.source-synchronized-encoding","i-lucide-copy-check",{"title":274,"path":275,"stem":276,"icon":34},"Broadcast radio as video","\u002Fen\u002Fhow-tos\u002Fbroadcast-radio-as-video","en\u002F6.how-tos\u002F12.broadcast-radio-as-video",{"title":278,"path":279,"stem":280,"icon":215},"Protect a Live stream with multi-DRM","\u002Fen\u002Fhow-tos\u002Fmulti-drm-destination","en\u002F6.how-tos\u002F2.multi-drm-destination",{"title":282,"path":283,"stem":284,"icon":59},"Schedule a weekly recurring broadcast","\u002Fen\u002Fhow-tos\u002Fweekly-recurring-broadcast","en\u002F6.how-tos\u002F3.weekly-recurring-broadcast",{"title":286,"path":287,"stem":288,"icon":289},"Cut a clip in the Editor and send it to MediaCopilot","\u002Fen\u002Fhow-tos\u002Fexport-recording-to-mediacopilot","en\u002F6.how-tos\u002F4.export-recording-to-mediacopilot","i-lucide-upload-cloud",{"title":291,"path":292,"stem":293,"icon":149},"Apply a logo overlay to a running Live stream","\u002Fen\u002Fhow-tos\u002Fapply-logo-overlay","en\u002F6.how-tos\u002F5.apply-logo-overlay",{"title":295,"path":296,"stem":297,"icon":298},"Black out or replace the program on a running Live stream","\u002Fen\u002Fhow-tos\u002Fbroadcast-blackout","en\u002F6.how-tos\u002F6.broadcast-blackout","i-lucide-square",{"title":300,"path":301,"stem":302,"icon":303},"Switch the source of a running Live stream","\u002Fen\u002Fhow-tos\u002Fruntime-source-switch","en\u002F6.how-tos\u002F7.runtime-source-switch","i-lucide-repeat-2",{"title":305,"path":306,"stem":307,"icon":308},"Toggle a Publishing mid-broadcast","\u002Fen\u002Fhow-tos\u002Ftoggle-publishing-mid-broadcast","en\u002F6.how-tos\u002F8.toggle-publishing-mid-broadcast","i-lucide-toggle-right",{"title":310,"path":311,"stem":312,"icon":34},"Contribute a live signal to MediaCopilot Live","\u002Fen\u002Fhow-tos\u002Fcontribute-to-mediacopilot-live","en\u002F6.how-tos\u002F9.contribute-to-mediacopilot-live",{"title":314,"path":315,"stem":316,"children":317,"page":24},"Installation","\u002Fen\u002Finstallation","en\u002F7.installation",[318,323,328,333,338],{"title":319,"path":320,"stem":321,"icon":322},"Prepare the host","\u002Fen\u002Finstallation\u002Fprepare-host","en\u002F7.installation\u002F1.prepare-host","i-lucide-server-cog",{"title":324,"path":325,"stem":326,"icon":327},"Install C21 Live Control","\u002Fen\u002Finstallation\u002Fcontrol","en\u002F7.installation\u002F2.control","i-lucide-cloud-download",{"title":329,"path":330,"stem":331,"icon":332},"Install C21 Live Encoder","\u002Fen\u002Finstallation\u002Fencoder","en\u002F7.installation\u002F3.encoder","i-lucide-cpu",{"title":334,"path":335,"stem":336,"icon":337},"Updates","\u002Fen\u002Finstallation\u002Fupdates","en\u002F7.installation\u002F4.updates","i-lucide-refresh-cw",{"title":339,"path":340,"stem":341,"icon":206},"Licenses","\u002Fen\u002Finstallation\u002Flicenses","en\u002F7.installation\u002F5.licenses",{"title":343,"path":344,"stem":345,"children":346,"page":24},"Developers","\u002Fen\u002Fdevelopers","en\u002F8.developers",[347,351,369],{"title":41,"path":348,"stem":349,"icon":350},"\u002Fen\u002Fdevelopers\u002Foverview","en\u002F8.developers\u002F1.overview","i-lucide-code",{"title":352,"icon":350,"path":353,"stem":354,"children":355,"page":24},"API","\u002Fen\u002Fdevelopers\u002Fapi","en\u002F8.developers\u002F2.api",[356,359,364],{"title":41,"path":357,"stem":358,"icon":350},"\u002Fen\u002Fdevelopers\u002Fapi\u002Foverview","en\u002F8.developers\u002F2.api\u002F1.overview",{"title":360,"path":361,"stem":362,"icon":363},"Authentication","\u002Fen\u002Fdevelopers\u002Fapi\u002Fauthentication","en\u002F8.developers\u002F2.api\u002F2.authentication","i-lucide-key",{"title":365,"path":366,"stem":367,"icon":368},"Pagination and Errors","\u002Fen\u002Fdevelopers\u002Fapi\u002Fpagination-errors","en\u002F8.developers\u002F2.api\u002F3.pagination-errors","i-lucide-list-ordered",{"title":370,"icon":371,"path":372,"stem":373,"children":374,"page":24},"MCP Server","i-lucide-bot","\u002Fen\u002Fdevelopers\u002Fmcp-server","en\u002F8.developers\u002F3.mcp-server",[375,378,383],{"title":41,"path":376,"stem":377,"icon":371},"\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Foverview","en\u002F8.developers\u002F3.mcp-server\u002F1.overview",{"title":379,"path":380,"stem":381,"icon":382},"Tools","\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Ftools","en\u002F8.developers\u002F3.mcp-server\u002F2.tools","i-lucide-wrench",{"title":384,"path":385,"stem":386,"icon":387},"Examples","\u002Fen\u002Fdevelopers\u002Fmcp-server\u002Fexamples","en\u002F8.developers\u002F3.mcp-server\u002F3.examples","i-lucide-play",{"title":389,"path":390,"stem":391,"children":392,"page":24},"Resources","\u002Fen\u002Fresources","en\u002F9.resources",[393,398,403],{"title":394,"path":395,"stem":396,"icon":397},"Links","\u002Fen\u002Fresources\u002Flinks","en\u002F9.resources\u002F1.links","i-lucide-link",{"title":399,"path":400,"stem":401,"icon":402},"Release Notes","\u002Fen\u002Fresources\u002Frelease-notes","en\u002F9.resources\u002F2.release-notes","i-lucide-clipboard-list",{"title":404,"path":405,"stem":406,"icon":407},"Glossary","\u002Fen\u002Fresources\u002Fglossary","en\u002F9.resources\u002F3.glossary","i-lucide-book-a",{"id":409,"title":278,"body":410,"description":1449,"extension":1450,"links":1451,"meta":1452,"navigation":1453,"path":279,"seo":1454,"stem":280,"__hash__":1455},"docs_en\u002Fen\u002F6.how-tos\u002F2.multi-drm-destination.md",{"type":411,"value":412,"toc":1436},"minimark",[413,421,424,429,450,454,486,490,496,825,829,832,924,935,1224,1240,1306,1310,1341,1393,1396,1400,1405,1425,1432],[414,415,416,420],"p",{},[417,418,419],"strong",{},"Available in:"," UI · API",[414,422,423],{},"Use this how-to when a Live stream must reach web, Windows and Apple clients with DRM enforced on every platform. The integration model is the same regardless of the surface: register a DRM provider once, then attach it to each protected Destination.",[425,426,428],"h2",{"id":427},"when-to-use-this","When to use this",[414,430,431,432,436,437,440,441,444,445,449],{},"When a ",[433,434,435],"code",{},"DASH",", ",[433,438,439],{},"CMAF"," or ",[433,442,443],{},"HLS \u002F TS"," Destination on a Live stream must encrypt segments and have license URLs in the manifest. For the broader concept reference see ",[446,447,448],"a",{"href":213},"DRM",".",[425,451,453],{"id":452},"prerequisites","Prerequisites",[455,456,457,465,476],"ul",{},[458,459,460,461,464],"li",{},"The ",[417,462,463],{},"System Administrator"," role. The DRM provider CRUD is gated to that role; Operators cannot register, validate, edit or delete providers.",[458,466,467,468,471,472,475],{},"A multi-DRM vendor account. The catalogue publishes ",[433,469,470],{},"AXINOM"," and ",[433,473,474],{},"EZDRM"," today. From the vendor you receive a SPEKE endpoint, the credentials envelope expected by the brand and — for brands that need it — a tenant id.",[458,477,478,479,436,481,440,483,485],{},"A ",[433,480,435],{},[433,482,439],{},[433,484,443],{}," Destination on the Live stream that will carry the protected output.",[425,487,489],{"id":488},"via-ui","Via UI",[414,491,492,493,449],{},"Navigation: ",[417,494,495],{},"Integrations → DRM → Providers",[497,498,499,504,519,662,668,672,698,702,711,812,815,819],"steps",{},[500,501,503],"h3",{"id":502},"register-the-drm-provider","Register the DRM provider",[414,505,506,507,509,510,514,515,518],{},"Open ",[417,508,495],{}," and click ",[511,512,513],"em",{},"Add provider",". The form maps to the ",[433,516,517],{},"DrmProviderCreateRequest"," schema:",[520,521,522,538],"table",{},[523,524,525],"thead",{},[526,527,528,532,535],"tr",{},[529,530,531],"th",{},"UI label",[529,533,534],{},"API field",[529,536,537],{},"Notes",[539,540,541,557,577,592,607,628,647],"tbody",{},[526,542,543,549,554],{},[544,545,546],"td",{},[417,547,548],{},"Name",[544,550,551],{},[433,552,553],{},"name",[544,555,556],{},"Display name (≤ 100 characters).",[526,558,559,564,569],{},[544,560,561],{},[417,562,563],{},"Provider type",[544,565,566],{},[433,567,568],{},"provider_type",[544,570,571,572,436,574,576],{},"One of the values from the server-side catalogue (today ",[433,573,470],{},[433,575,474],{},").",[526,578,579,584,589],{},[544,580,581],{},[417,582,583],{},"SPEKE URL",[544,585,586],{},[433,587,588],{},"speke_url",[544,590,591],{},"Primary SPEKE endpoint.",[526,593,594,599,604],{},[544,595,596],{},[417,597,598],{},"SPEKE backup URL",[544,600,601],{},[433,602,603],{},"speke_url_backup",[544,605,606],{},"Optional fallback.",[526,608,609,614,619],{},[544,610,611],{},[417,612,613],{},"Tenant id",[544,615,616],{},[433,617,618],{},"tenant_id",[544,620,621,622,624,625,449],{},"Required when the chosen ",[511,623,563],{}," declares ",[433,626,627],{},"requires_tenant_id = true",[526,629,630,635,640],{},[544,631,632],{},[417,633,634],{},"Credentials",[544,636,637],{},[433,638,639],{},"credentials",[544,641,642,643,646],{},"Provider-specific envelope. Write-only — ",[433,644,645],{},"GET"," returns the redacted sentinel value.",[526,648,649,654,659],{},[544,650,651],{},[417,652,653],{},"Enabled",[544,655,656],{},[433,657,658],{},"enabled",[544,660,661],{},"Whether the provider is selectable by Destinations.",[414,663,664,665,449],{},"Submit. The new row appears in the providers list with ",[511,666,667],{},"Validation status: UNKNOWN",[500,669,671],{"id":670},"validate","Validate",[414,673,674,675,677,678,681,682,685,686,689,690,693,694,697],{},"Run the ",[511,676,671],{}," action on the new provider row. The handler round-trips the credentials against the upstream SPEKE service. The ",[511,679,680],{},"Validation status"," column flips to ",[511,683,684],{},"VALID"," (success) or ",[511,687,688],{},"INVALID"," (failure). A failure surfaces a sanitised error in ",[511,691,692],{},"Validation error","; correct the credentials with ",[511,695,696],{},"Edit"," and re-validate.",[500,699,701],{"id":700},"attach-the-provider-to-a-destination","Attach the provider to a Destination",[414,703,704,705,707,708,710],{},"Open the Destination under ",[417,706,112],{}," and fill the ",[511,709,448],{}," block:",[520,712,713,723],{},[523,714,715],{},[526,716,717,719,721],{},[529,718,531],{},[529,720,534],{},[529,722,537],{},[539,724,725,740,755,770,791],{},[526,726,727,732,737],{},[544,728,729],{},[417,730,731],{},"Active",[544,733,734],{},[433,735,736],{},"drm.active",[544,738,739],{},"Toggle that turns DRM on for this Destination.",[526,741,742,747,752],{},[544,743,744],{},[417,745,746],{},"Provider",[544,748,749],{},[433,750,751],{},"drm.provider_id",[544,753,754],{},"Picker over the registered providers (only enabled providers appear).",[526,756,757,762,767],{},[544,758,759],{},[417,760,761],{},"Content id",[544,763,764],{},[433,765,766],{},"drm.contentid",[544,768,769],{},"The content identifier expected by the vendor.",[526,771,772,777,782],{},[544,773,774],{},[417,775,776],{},"Systems",[544,778,779],{},[433,780,781],{},"drm.systems[]",[544,783,784,785,436,787,436,789,449],{},"Any combination of ",[511,786,217],{},[511,788,221],{},[511,790,225],{},[526,792,793,798,803],{},[544,794,795],{},[417,796,797],{},"Encryption mode",[544,799,800],{},[433,801,802],{},"drm.encryption_mode",[544,804,805,806,440,809,449],{},"One of ",[433,807,808],{},"cenc",[433,810,811],{},"cbcs",[414,813,814],{},"Save. The Destination's row shows a shield indicator when DRM is active.",[500,816,818],{"id":817},"start-the-live-stream","Start the Live stream",[414,820,821,822,824],{},"Start the Live stream from ",[446,823,31],{"href":32}," or the Live stream's detail page. The encoder requests keys from the configured SPEKE endpoint, encrypts the segments and writes the license URLs into the manifest.",[425,826,828],{"id":827},"via-api","Via API",[414,830,831],{},"DRM provider CRUD:",[520,833,834,847],{},[523,835,836],{},[526,837,838,841,844],{},[529,839,840],{},"Action",[529,842,843],{},"Method + path",[529,845,846],{},"operationId",[539,848,849,864,879,894,909],{},[526,850,851,854,859],{},[544,852,853],{},"List providers",[544,855,856],{},[433,857,858],{},"GET \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders",[544,860,861],{},[433,862,863],{},"getAllDrmProviders",[526,865,866,869,874],{},[544,867,868],{},"Create a provider",[544,870,871],{},[433,872,873],{},"POST \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders",[544,875,876],{},[433,877,878],{},"addDrmProvider",[526,880,881,884,889],{},[544,882,883],{},"Validate a provider",[544,885,886],{},[433,887,888],{},"POST \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F{providerId}\u002Fvalidate",[544,890,891],{},[433,892,893],{},"validateDrmProvider",[526,895,896,899,904],{},[544,897,898],{},"Update a provider",[544,900,901],{},[433,902,903],{},"PUT \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F{providerId}",[544,905,906],{},[433,907,908],{},"updateDrmProvider",[526,910,911,914,919],{},[544,912,913],{},"Delete a provider",[544,915,916],{},[433,917,918],{},"DELETE \u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F{providerId}",[544,920,921],{},[433,922,923],{},"deleteDrmProvider",[414,925,926,927,930,931,934],{},"The DRM block on a Destination is set through ",[433,928,929],{},"addPublishing"," \u002F ",[433,932,933],{},"updatePublishing",":",[936,937,942],"pre",{"className":938,"code":939,"language":940,"meta":941,"style":941},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 1. Register the provider\ncurl -X POST \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"name\": \"MyDRMProvider\",\n    \"provider_type\": \"AXINOM\",\n    \"speke_url\": \"https:\u002F\u002Fdrm-axinom.example\u002Fspeke\u002Fv2\",\n    \"tenant_id\": \"\u003Ctenant>\",\n    \"credentials\": { \"...\": \"...\" },\n    \"enabled\": true\n  }'\n\n# 2. Validate\ncurl -X POST \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F\u003CproviderId>\u002Fvalidate\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\"\n\n# 3. Attach to an existing DASH\u002FCMAF\u002FHLS Publishing\ncurl -X PUT \"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fpublishings\u002F\u003CpublishingId>\" \\\n  -H \"Authorization: Bearer \u003CYOUR_API_TOKEN>\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"drm\": {\n      \"active\": true,\n      \"provider_id\": \u003CproviderId>,\n      \"contentid\": \"\u003Cvendor content id>\",\n      \"systems\": [\"Widevine\", \"PlayReady\"],\n      \"encryption_mode\": \"cenc\"\n    }\n  }'\n","bash","",[433,943,944,953,981,996,1010,1022,1028,1034,1040,1046,1052,1058,1067,1074,1080,1098,1110,1115,1121,1140,1153,1166,1175,1181,1187,1193,1199,1205,1211,1217],{"__ignoreMap":941},[945,946,949],"span",{"class":947,"line":948},"line",1,[945,950,952],{"class":951},"sHwdD","# 1. Register the provider\n",[945,954,956,960,964,967,971,974,977],{"class":947,"line":955},2,[945,957,959],{"class":958},"sBMFI","curl",[945,961,963],{"class":962},"sfazB"," -X",[945,965,966],{"class":962}," POST",[945,968,970],{"class":969},"sMK4o"," \"",[945,972,973],{"class":962},"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders",[945,975,976],{"class":969},"\"",[945,978,980],{"class":979},"sTEyZ"," \\\n",[945,982,984,987,989,992,994],{"class":947,"line":983},3,[945,985,986],{"class":962},"  -H",[945,988,970],{"class":969},[945,990,991],{"class":962},"Authorization: Bearer \u003CYOUR_API_TOKEN>",[945,993,976],{"class":969},[945,995,980],{"class":979},[945,997,999,1001,1003,1006,1008],{"class":947,"line":998},4,[945,1000,986],{"class":962},[945,1002,970],{"class":969},[945,1004,1005],{"class":962},"Content-Type: application\u002Fjson",[945,1007,976],{"class":969},[945,1009,980],{"class":979},[945,1011,1013,1016,1019],{"class":947,"line":1012},5,[945,1014,1015],{"class":962},"  -d",[945,1017,1018],{"class":969}," '",[945,1020,1021],{"class":962},"{\n",[945,1023,1025],{"class":947,"line":1024},6,[945,1026,1027],{"class":962},"    \"name\": \"MyDRMProvider\",\n",[945,1029,1031],{"class":947,"line":1030},7,[945,1032,1033],{"class":962},"    \"provider_type\": \"AXINOM\",\n",[945,1035,1037],{"class":947,"line":1036},8,[945,1038,1039],{"class":962},"    \"speke_url\": \"https:\u002F\u002Fdrm-axinom.example\u002Fspeke\u002Fv2\",\n",[945,1041,1043],{"class":947,"line":1042},9,[945,1044,1045],{"class":962},"    \"tenant_id\": \"\u003Ctenant>\",\n",[945,1047,1049],{"class":947,"line":1048},10,[945,1050,1051],{"class":962},"    \"credentials\": { \"...\": \"...\" },\n",[945,1053,1055],{"class":947,"line":1054},11,[945,1056,1057],{"class":962},"    \"enabled\": true\n",[945,1059,1061,1064],{"class":947,"line":1060},12,[945,1062,1063],{"class":962},"  }",[945,1065,1066],{"class":969},"'\n",[945,1068,1070],{"class":947,"line":1069},13,[945,1071,1073],{"emptyLinePlaceholder":1072},true,"\n",[945,1075,1077],{"class":947,"line":1076},14,[945,1078,1079],{"class":951},"# 2. Validate\n",[945,1081,1083,1085,1087,1089,1091,1094,1096],{"class":947,"line":1082},15,[945,1084,959],{"class":958},[945,1086,963],{"class":962},[945,1088,966],{"class":962},[945,1090,970],{"class":969},[945,1092,1093],{"class":962},"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fsettings\u002Fintegrations\u002Fdrmproviders\u002F\u003CproviderId>\u002Fvalidate",[945,1095,976],{"class":969},[945,1097,980],{"class":979},[945,1099,1101,1103,1105,1107],{"class":947,"line":1100},16,[945,1102,986],{"class":962},[945,1104,970],{"class":969},[945,1106,991],{"class":962},[945,1108,1109],{"class":969},"\"\n",[945,1111,1113],{"class":947,"line":1112},17,[945,1114,1073],{"emptyLinePlaceholder":1072},[945,1116,1118],{"class":947,"line":1117},18,[945,1119,1120],{"class":951},"# 3. Attach to an existing DASH\u002FCMAF\u002FHLS Publishing\n",[945,1122,1124,1126,1128,1131,1133,1136,1138],{"class":947,"line":1123},19,[945,1125,959],{"class":958},[945,1127,963],{"class":962},[945,1129,1130],{"class":962}," PUT",[945,1132,970],{"class":969},[945,1134,1135],{"class":962},"https:\u002F\u002F\u003Cyour-host>\u002Fc21apiv2\u002Fpublishings\u002F\u003CpublishingId>",[945,1137,976],{"class":969},[945,1139,980],{"class":979},[945,1141,1143,1145,1147,1149,1151],{"class":947,"line":1142},20,[945,1144,986],{"class":962},[945,1146,970],{"class":969},[945,1148,991],{"class":962},[945,1150,976],{"class":969},[945,1152,980],{"class":979},[945,1154,1156,1158,1160,1162,1164],{"class":947,"line":1155},21,[945,1157,986],{"class":962},[945,1159,970],{"class":969},[945,1161,1005],{"class":962},[945,1163,976],{"class":969},[945,1165,980],{"class":979},[945,1167,1169,1171,1173],{"class":947,"line":1168},22,[945,1170,1015],{"class":962},[945,1172,1018],{"class":969},[945,1174,1021],{"class":962},[945,1176,1178],{"class":947,"line":1177},23,[945,1179,1180],{"class":962},"    \"drm\": {\n",[945,1182,1184],{"class":947,"line":1183},24,[945,1185,1186],{"class":962},"      \"active\": true,\n",[945,1188,1190],{"class":947,"line":1189},25,[945,1191,1192],{"class":962},"      \"provider_id\": \u003CproviderId>,\n",[945,1194,1196],{"class":947,"line":1195},26,[945,1197,1198],{"class":962},"      \"contentid\": \"\u003Cvendor content id>\",\n",[945,1200,1202],{"class":947,"line":1201},27,[945,1203,1204],{"class":962},"      \"systems\": [\"Widevine\", \"PlayReady\"],\n",[945,1206,1208],{"class":947,"line":1207},28,[945,1209,1210],{"class":962},"      \"encryption_mode\": \"cenc\"\n",[945,1212,1214],{"class":947,"line":1213},29,[945,1215,1216],{"class":962},"    }\n",[945,1218,1220,1222],{"class":947,"line":1219},30,[945,1221,1063],{"class":962},[945,1223,1066],{"class":969},[414,1225,1226,1229,1230,1233,1234,1236,1237,1239],{},[433,1227,1228],{},"validation_status"," carries ",[433,1231,1232],{},"UNKNOWN"," (just registered), ",[433,1235,684],{}," (validation succeeded) or ",[433,1238,688],{}," (validation failed). Common patterns:",[520,1241,1242,1258],{},[523,1243,1244],{},[526,1245,1246,1249,1254],{},[529,1247,1248],{},"Pattern",[529,1250,1251],{},[433,1252,1253],{},"drm.systems",[529,1255,1256],{},[433,1257,802],{},[539,1259,1260,1274,1289],{},[526,1261,1262,1265,1270],{},[544,1263,1264],{},"DASH + CMAF, web + Microsoft",[544,1266,1267],{},[433,1268,1269],{},"[\"Widevine\", \"PlayReady\"]",[544,1271,1272],{},[433,1273,808],{},[526,1275,1276,1279,1285],{},[544,1277,1278],{},"CMAF \u002F HLS, Apple coverage",[544,1280,1281,1284],{},[433,1282,1283],{},"[\"FairPlay\"]"," (or all three)",[544,1286,1287],{},[433,1288,811],{},[526,1290,1291,1297,1302],{},[544,1292,1293,1294,1296],{},"Universal ",[433,1295,811],{}," delivery",[544,1298,1299],{},[433,1300,1301],{},"[\"Widevine\", \"PlayReady\", \"FairPlay\"]",[544,1303,1304],{},[433,1305,811],{},[425,1307,1309],{"id":1308},"verify","Verify",[455,1311,1312,1318,1338],{},[458,1313,1314,1315,449],{},"The provider row reads ",[511,1316,1317],{},"Validation status: VALID",[458,1319,1320,1323,1324,1327,1328,1331,1332,930,1335,449],{},[433,1321,1322],{},"GET \u002Fc21apiv2\u002Fpublishings\u002F{publishingId}"," returns the ",[433,1325,1326],{},"drm"," block with ",[433,1329,1330],{},"active: true"," and the expected ",[433,1333,1334],{},"systems",[433,1336,1337],{},"encryption_mode",[458,1339,1340],{},"Players from each target ecosystem successfully decrypt and play the protected output:",[520,1342,1343,1356],{},[523,1344,1345],{},[526,1346,1347,1350,1353],{},[529,1348,1349],{},"Ecosystem",[529,1351,1352],{},"Browser \u002F device",[529,1354,1355],{},"Manifest",[539,1357,1358,1370,1381],{},[526,1359,1360,1364,1367],{},[544,1361,1362],{},[417,1363,217],{},[544,1365,1366],{},"Chrome or Edge on desktop",[544,1368,1369],{},"DASH or CMAF",[526,1371,1372,1376,1379],{},[544,1373,1374],{},[417,1375,221],{},[544,1377,1378],{},"Edge on Windows",[544,1380,1369],{},[526,1382,1383,1387,1390],{},[544,1384,1385],{},[417,1386,225],{},[544,1388,1389],{},"Safari on iOS or macOS",[544,1391,1392],{},"HLS \u002F CMAF",[414,1394,1395],{},"The upstream vendor's dashboard logs one license issuance per session per ecosystem.",[425,1397,1399],{"id":1398},"faq","FAQ",[1401,1402,1404],"collapsible",{"name":1403},"Can I mix clear and DRM-protected Destinations on the same Live stream?","Yes. The DRM block is per Destination. A Destination group that mixes a protected DASH Destination with a clear HLS Destination is technically valid, but most premium licences prohibit clear distribution of the same content — confirm the rights position first.",[1401,1406,1408,1409,1412,1413,1416,1417,1419,1420,1422,1423,449],{"name":1407},"What if validateDrmProvider returns INVALID?","The validator surfaces the upstream error in ",[433,1410,1411],{},"validation_error",". Common causes are a wrong tenant id, mistyped credentials, or the SPEKE endpoint being unreachable from this ",[417,1414,1415],{},"C21 Live Control"," instance. Correct the field with ",[433,1418,908],{}," (or ",[511,1421,696],{}," in the UI) and re-run ",[511,1424,671],{},[1401,1426,1428,1429,1431],{"name":1427},"How do I rotate provider credentials without downtime?","The credentials envelope is write-only. Send the new value through ",[433,1430,908],{},"; the change applies to subsequent key acquisitions. Running Live streams keep working under the keys they already hold until their next rotation.",[1433,1434,1435],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":941,"searchDepth":955,"depth":955,"links":1437},[1438,1439,1440,1446,1447,1448],{"id":427,"depth":955,"text":428},{"id":452,"depth":955,"text":453},{"id":488,"depth":955,"text":489,"children":1441},[1442,1443,1444,1445],{"id":502,"depth":983,"text":503},{"id":670,"depth":983,"text":671},{"id":700,"depth":983,"text":701},{"id":817,"depth":983,"text":818},{"id":827,"depth":955,"text":828},{"id":1308,"depth":955,"text":1309},{"id":1398,"depth":955,"text":1399},"Register a DRM provider and attach it to a Publishing — through the UI, through the API, or both.","md",null,{},{"icon":215},{"title":278,"description":1449},"da1LDubzMTa15g9fF4poZSrJ-_D3kWzPIfbej-6K5zM",[1457,1459],{"title":274,"path":275,"stem":276,"description":1458,"icon":34,"children":-1},"Run a radio Channel as a Live stream where the visual track is a programmable still or short clip, the audio is always the live feed, and the visual can be swapped without interrupting the audio.",{"title":282,"path":283,"stem":284,"description":1460,"icon":59,"children":-1},"Drive a Live stream on a fixed cadence — from the Scheduler UI, from the API, or both.",1782916485233]