


{"id":11055,"date":"2017-09-08T21:29:13","date_gmt":"2017-09-08T21:29:13","guid":{"rendered":"https:\/\/expressplay.local\/?page_id=11055"},"modified":"2021-09-27T13:20:43","modified_gmt":"2021-09-27T20:20:43","slug":"sdk-overview-osx-and-windows","status":"publish","type":"page","link":"https:\/\/www.expressplay.com\/ko\/developer\/sdk-overview-osx-and-windows\/","title":{"rendered":"SDK Dev &#8211; OSX and Windows"},"content":{"rendered":"<style type=\"text\/css\">\n    .anchorlinks,.anchorlinks-dev {<br \/>\n        margin-bottom: 20px;<br \/>\n    }<\/p>\n<p>    .anchorlinks h2,.anchorlinks-dev h3 {<br \/>\n        margin-bottom: 10px;<br \/>\n    }<br \/>\n<\/style>\n<h2>SDK Development Guide for OSX and Windows<\/h2>\n<div id=\"rest-api_my-sub-menu\" class=\"bg-grey-100 p-8 mb-12\">\n<p>Jump to section<\/p>\n<ol class=\"\">\n<li><a class=\"my-hyperlink\" href=\"#whatthesdkcando\">What the SDK Can Do<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#whatarethestepstoplay\">What Are the Steps to Play<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#whatarethestepsforebooks\">What Are the Steps for eBooks<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#keyconcepts\">Key Concepts<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#sdkusageguidelines\">SDK Usage Guidelines<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#personalization\">Personalization<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#contentlicenseacquisition\">Content License Acquisition<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#mediaplayerfordesktop\">Media Player for Desktop<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#msforebooks\">MediaStream for eBooks<\/a><\/li>\n<li><a class=\"my-hyperlink\" href=\"#otherdrmfunctions\">Other DRM Functions<\/a><\/li>\n<\/ol>\n<\/div>\n<div id=\"whatthesdkcando\" class=\"anchorlinks-dev\">\n<h3>What the SDK can do<\/h3>\n<p>The ExpressPlay SDK for OSX and Windows is designed to make it simple to build secure media players and ebook reader applications for Marlin protected audio, video and ebook content on OSX and Windows platforms. The ExpressPlay SDK shares a common core API set across all platforms. On some platforms the SDK includes an extended set of APIs unique to that platform.<\/p>\n<p>For development of media applications on OSX and Windows, the SDK offers simple APIs providing access to DRM control and media playback functions, sufficient to credential an application, acquire DRM licenses and trigger playback of Marlin-protected content. Content may be a contiguous media file or an adaptive bit rate (ABR) stream. The SDK works in conjunction with the ExpressPlay Service for device initialization (Marlin personalization) and token processing for playback (Marlin content license acquisition) while meeting the compliance and robustness rules of the MTMO (Marlin Trust Management Organization).<\/p>\n<\/div>\n<div id=\"whatarethestepstoplay\" class=\"anchorlinks-dev\">\n<h3>What are the steps to play<\/h3>\n<p>The steps below are a high-level view of the steps required to play content. However, the exact sequence of steps to play content in your application may vary due to the requirements of your specific application.<\/p>\n<ul>\n<li>Start the DRM engine<\/li>\n<li>Get a unique player ID (personalization)<\/li>\n<li>Get the content URL<\/li>\n<li>Get a token for playback<\/li>\n<li>Instantiate a WSB_Player object, and set its inputs to the content reference to be played<\/li>\n<li>Start the player<\/li>\n<\/ul>\n<\/div>\n<div id=\"whatarethestepsforebooks\" class=\"anchorlinks-dev\">\n<h3>What are the steps for ebooks<\/h3>\n<ul>\n<li>Initialize the DRM Engine<\/li>\n<li>Get a unique player ID (Personalization)<\/li>\n<li>Get a BB license for the content ID of the ebook, and store that license in the license store<\/li>\n<li>Instantiate a MediaStream object (passing it a reference to the encrypted ebook file)<\/li>\n<li>Read bytes from the mediastream object until there are none remaining. Now you have a decrypted ebook.<\/li>\n<li>Instantiate a webview object, and pass it the decrypted ebook<\/li>\n<\/ul>\n<\/div>\n<div id=\"keyconcepts\" class=\"anchorlinks-dev\">\n<h3>Key Concepts<\/h3>\n<p>Below is a list of key concepts that a developer should know before using the ExpressPlay SDK. It&#8217;s a good idea to go through all the concepts before using the SDK as they are reference frequently throughout the SDK documentation.<\/p>\n<ul>\n<li><a href=\"\/ko\/developers\/sdk-key-concepts\/#whatispersonalization\">What is Personalization<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-key-concepts\/#ms3vsbb\">Marlin Simple Stream Setup (MS3) vs. Marlin Broadband Delivery system (BB)<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-key-concepts\/#streamingvsoffline\">Streaming vs.Offline<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-key-concepts\/#testvsproduction\">Test environment vs. Production environment<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-key-concepts\/#supportedformats\">Supported Formats<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-key-concepts\/#coreandextendeddrmfunctions\">Core and Extended Digital Rights Management (DRM) Functions<\/a><\/li>\n<\/ul>\n<\/div>\n<p><!-- keyconcepts --><\/p>\n<div id=\"sdkusageguidelines\" class=\"anchorlinks-dev\">\n<h3>SDK Usage Guidelines<\/h3>\n<p>In addition to the key concepts above, the ExpressPlay SDK Usage Guidelines is an overview of best practices when using the ExpressPlay SDK. The major sections of the guidelines are listed below for convenience.<\/p>\n<ul>\n<li><a href=\"\/ko\/developers\/sdk-usage-guidelines\/#objectmodel\">Object Model<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-usage-guidelines\/#runtimeengine\">Runtime Engine<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-usage-guidelines\/#threading\">Threading<\/a><\/li>\n<li><a href=\"\/ko\/developers\/sdk-usage-guidelines\/#obtaininghelpforhandlingerrors\">Error Handling<\/a><\/li>\n<\/ul>\n<\/div>\n<p><!-- sdkusageguidelines --><\/p>\n<div id=\"personalization\" class=\"anchorlinks-dev\">\n<h2>Personalization<\/h2>\n<p>Personalization is a Marlin term for device initialization. When an app requests to be personalized by ExpressPlay, it provides a unique fingerprint. The ExpressPlay service, responds by providing the client a credential which is unique to that application copy running on a given device. Without this unique Marlin credential, the device will not be able to request tokens for playback.<\/p>\n<p>For additional information on Personalization click <a href=\"\/ko\/developers\/sdk-key-concepts\/#overlay-context=developer\/content\/sdk-overview-source#whatispersonalization\">here.<\/a><\/p>\n<\/div>\n<p><!-- personalization--><\/p>\n<div id=\"contentlicenseacquisition\" class=\"anchorlinks-dev\">\n<h2>Content License Acquisition<\/h2>\n<p>There are two ways to obtain a Marlin content license, using SAS (via MS3) or using a Marlin Broadband (BB) license. Either may be obtained from the ExpressPlay service. You can obtain additional information for MS3 and Marlin BroadBand licenses<br \/>\n<a href=\"\/ko\/developers\/sdk-key-concepts\/#overlay-context=developer\/sdk-usage-guidelines\">here.<\/a><\/p>\n<\/div>\n<p><!-- contentlicenseacquisition--><\/p>\n<div id=\"mediaplayerfordesktop\" class=\"anchorlinks-dev\">\n<h2>Media Player for Desktop<\/h2>\n<p>ExpressPlay SDK for OS X and Windows contains:<\/p>\n<ul>\n<li>The ExpressPlay library\/framework for building downloadable A\/V Marlin-enabled media players on Microsoft Windows and Apple OS X.<\/li>\n<li>A sample application for media playback.<\/li>\n<\/ul>\n<h3>Binaries for Audio Visual Media Application Development<\/h3>\n<p>The functionality provided by the ExpressPlay binaries includes the following.<\/p>\n<ul>\n<li>Media Player Engine functionality for playback of Marlin protected media files and adaptive bit-rate streams. The player engine provides typical playback controls, accepts files or URLs as inputs, and produces decrypted and decoded output (decoding is only performed on the desktop version) to a video window provided by the application.<\/li>\n<li>Marlin DRM support for typical functions such as \u201cpersonalizing\u201d or credentialing an application, processing DRM triggers.<\/li>\n<li>Note that the above player\/DRM engine is also usable in a specially built browser enabling you to reference Marlin content in an HTML5 video tag.<\/li>\n<\/ul>\n<p>ExpressPlay binaries meet the Marlin Robustness Rules, namely, the requirements set forth by the Marlin Trust Management Organization (MTMO). You are not required to engage with the MTMO or sign any MTMO Agreement.<\/p>\n<h3>Built-in Access to Personalization and DRM Services<\/h3>\n<p>The ExpressPlay binary includes burnt-in credentials to access a Personalization Service (SPS). Also, it is configured to (only) use DRM triggers generated by ExpressPlay Service (for example, license triggers that are then redeemed into content licenses by the SDK binary).<\/p>\n<p>Access to the ExpressPlay Service DRM Services may be denied in certain special circumstances, such as when a mandatory software update to the ExpressPlay binaries has not been applied to the application. In general, the application should periodically check whether the version of the ExpressPlay binary requires an update.<\/p>\n<p>ExpressPlay version information is obtained via the WSB_GetComponentInfo() method of the WSB_Component Class.<\/p>\n<p>SPS access requires a token that the application provides to the SDK when attempting to personalize. SPS provides no user or application-level interface and no other information other than this token is required to use it.<\/p>\n<p>The value of the token is the string:<\/p>\n<div class=\"bg-grey-100 p-8\"><code>&lt;PersonalizationToken xmlns='https:\/\/www.expressplay.com\/sushi\/schemas\/personalization\/2'&gt;<br \/>\n&lt;ServiceUrl&gt;https:\/\/perserv-test.seacert.com&lt;\/ServiceUrl&gt;<br \/>\n&lt;BusinessToken&gt;qgih&lt;\/BusinessToken&gt;<br \/>\n&lt;\/PersonalizationToken&gt;<\/code><\/div>\n<div id=\"msforebooks\" class=\"anchorlinks-dev\">\n<h2>MediaStream (MS) for ebooks<\/h2>\n<p>MediaStream interface supports decryption of HTTP or file based encrypted data other than the typical Marlin protected audio\/video media. Which could consist of the eBook media type, where many container formats exist, including a Marlin defined ePub container. In this scenario, either the whole eBook or specific elements of the ebook container can be encrypted and packaged into a type supported by this new interface. The application then parses the container, and uses the interface combined with a Marlin license to decrypt the content.<\/p>\n<p>Additional information for ebooks can be found <a href=\"\/ko\/developers\/sdk-ebooks\/#overlay-context=developer\/content\/sdk-overview-ios-and-android\">here.<\/a><\/p>\n<\/div>\n<p><!-- msforebooks--><\/p>\n<div id=\"otherdrmfunctions\" class=\"anchorlinks-dev\">\n<h2>Other DRM Functions<\/h2>\n<p>The Extended DRM functionality is accessible to applications using the source sdk. Including such functions as the ability to access content keys, or query the consequences of a license evaluation (to assess for instance if some form of output controls must be applied and do so as a result). This greater functionality however requires that these applications provide their own security and hardening mechanisms to prevent the loss of key and content material.<\/p>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>SDK Development Guide for OSX and Windows Jump to section What the SDK Can Do What Are the Steps to Play What Are the Steps for eBooks Key Concepts SDK Usage Guidelines Personalization Content License Acquisition Media Player for Desktop MediaStream for eBooks Other DRM Functions What the SDK can do The ExpressPlay SDK for [&hellip;]<\/p>\n","protected":false},"author":124,"featured_media":0,"parent":10924,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-expressplay-developer.php","meta":{"_acf_changed":false,"footnotes":""},"tax_page_type":[512],"coauthors":[621],"class_list":["post-11055","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/pages\/11055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/users\/124"}],"replies":[{"embeddable":true,"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/comments?post=11055"}],"version-history":[{"count":0,"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/pages\/11055\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/pages\/10924"}],"wp:attachment":[{"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/media?parent=11055"}],"wp:term":[{"taxonomy":"tax_page_type","embeddable":true,"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/tax_page_type?post=11055"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.expressplay.com\/ko\/wp-json\/wp\/v2\/coauthors?post=11055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}