


{"id":13937,"date":"2018-03-07T05:03:28","date_gmt":"2018-03-07T05:03:28","guid":{"rendered":"https:\/\/expressplay.local\/?page_id=13937"},"modified":"2021-01-29T10:16:39","modified_gmt":"2021-01-29T18:16:39","slug":"getting-started-legacy","status":"publish","type":"page","link":"https:\/\/www.expressplay.com\/ja\/developer\/getting-started-legacy\/","title":{"rendered":"Tutorial: Getting Started (Getting Started with ExpressPlay)(Legacy)"},"content":{"rendered":"<style type=\"text\/css\">\n    hr {\n        margin: 20px 0;\n    }\n<\/style>\n<div style=\" border: 1px solid #ddd; padding: 20px; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; -khtml-border-radius: 5px; margin-bottom: 20px;\">\n<div >\n<h3 style=\"margin-top: 5px;\">\n       <span style=\"font-weight: 600;\">NOTE:<\/span> We\u2019ve recently updated our service. <a href=\"\/ja\/developer\/portal-update\/\" class=\"link-arrow\" style=\"color: #1b589e;\">Learn more<\/a><br \/>\n      <\/h3>\n<p>\n        If we\u2019ve not yet migrated you to the new service, <a href=\"\/ja\/developer\/getting-started\/\">click here to see the <strong>Current<\/strong> Getting Started with ExpressPlay Tutorial<br \/>\n        <\/a>\n      <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div>\n<h2>Getting Started with ExpressPlay (Legacy)<\/h2>\n<h4>These tutorials take you through the step-by-step process on how to package the content and to use the ExpressPlay Service for streaming and download use cases.<\/h4>\n<hr>\n<\/div>\n<div class=\"flex flex-wrap -mx-6\">\n<div class=\"w-full lg:w-7\/12 px-6\">\n<div class=\"bg-grey-100 p-8 mb-12 mt-12\">\n<h4 style=\"\">Requirements<\/h4>\n<ul >\n<li>An MP4 file e.g. big_buck_bunny.mp4<\/li>\n<li>Download and install the Bento4 tools (available from <a href=\"http:\/\/www.bento4.com\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">bento4.com<\/a>)<\/li>\n<li>An HTTP server running on your computer<\/li>\n<li>An Android or IOS device connected to the same WiFi and subnet of your HTTP Server e.g. your mobile device can reach your HTTP Server <\/li>\n<li>Download the ExpressPlayer applicant for either iOS, Android or both<\/li>\n<li>An ExpressPlay account (can be obtained from <a href=\"https:\/\/admin.expressplay.com\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">https:\/\/admin.expressplay.com\/<\/a>)<\/li>\n<li>The ExpressPlay client evaluation SDK for either iOS or Android or for both<\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<div class=\"w-full lg:w-5\/12\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/developer-packager.png\" alt=\"\"\/>\n    <\/div>\n<\/div>\n<div>\n<div class=\"\">\n<div class=\"bg-grey-100 p-4 font-avenirBold mb-12 mb-12\">\n<h4>Part A: Play DASH content using the ExpressPlayer app with MS3 token<\/h4>\n<\/p><\/div>\n<div class=\"\">\n<div class=\"\">\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 1 &#8211; Fragment your MP4 file<\/p>\n<\/p><\/div>\n<ul>\n<li>MPEG DASH format requires the MP4 files to be fragmented<\/li>\n<li>Open the terminal to the folder that has the MP4 file <\/li>\n<li>Use the bento4 tool \u2018mp4fragment,\u2019 type the name of your MP4 file and the name of the output fragmented MP4 file.<\/li>\n<li>For example:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\">\n    <code>mp4fragment big_buck_bunny.mp4  big_buck_bunny.mf4<\/code>\n<\/div>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 2 &#8211; Package and encrypt your content into DASH format<\/p>\n<\/div>\n<ul>\n<li>Always use the Bento4 tool MP4DASH to encrypt and package your content into DASH format. <\/li>\n<li>You can do by typing the following:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mp4dash --encryption-key=43215678123412341234123412341234:12341234123412341234123412341234 --marlin\u00a0big_buck_bunny.mf4<\/code><\/div>\n<\/li>\n<li>\n  <strong>Note:<\/strong><\/p>\n<ul style=\"list-style:none;\">\n<li>&#8211; The command option \u2014encryption-key indicates the content encryption key (CK) to use and it is followed by the key-id (KID) . In this case the value of the KID is equal to: 43215678123412341234123412341234 while the KEY is equal to: 12341234123412341234123412341234<\/li>\n<li>&#8211; The command option \u2014marlin indicates that you want to use Marlin DRM. As MPEG-DASH is a streaming format supported by other DRMs like PlayReady and Widevine, it is possible to use the same MP4DASH tool to signal the use of different DRMs schema within the same stream.  For now, we will focus on Marlin. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 3 &#8211; Copy the whole \u201coutput\u201d folder to your HTTP Server working folder<\/p>\n<\/div>\n<ul>\n<li>Create a folder in your HTTP Web Server working directory.\n<ul style=\"list-style:none;\">\n<li>&#8211; For example on a Mac:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mkdir \/Library\/WebServer\/Documents\/video\/expressplay<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>Copy the content of the output folder into the newly created folder.\n<ul style=\"list-style:none;\">\n<li>&#8211; For example on a Mac:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>cp -R output\/ \/Library\/WebServer\/Documents\/video\/expressplay<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Note:<\/strong>\n<ul style=\"list-style:none;\">\n<li>&#8211; The commands above are just an example, your HTTP Server may have a different folder structure and therefore the folder path may differ from the one provided above.<\/li>\n<li>&#8211; You must configure the MIME-TYPE of your HTTP Server to handle the mime-type for the DASH manifest descriptor file or mpd files. The mime-type for the mpd file needs to be set to application\/DASH+xml <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 4 &#8211; Create an MS3 URL by using the web interface<\/p>\n<\/div>\n<div class=\"\">\n<p>      <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streamingA-4.jpg\" class=\"mydrop\"><\/p><\/div>\n<div class=\"\">\n<ol style=\"padding-left: 15px; padding-top:20px;\">\n<li>Log into your ExpressPlay account<\/li>\n<li>Click on \u201cTOKENS\u201d<\/li>\n<li>Click on \u201cMarlin MS3\u201d<\/li>\n<li>Select Service Mode \u201cTest\u201d<\/li>\n<li>\n        Enter the Content ID, this is derived from the KID in step 2<\/p>\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>urn:marlin:kid:43215678123412341234123412341234<\/code><\/div>\n<\/li>\n<li>\n        Enter the Content Encryption Key as in step 2<\/p>\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>12341234123412341234123412341234<\/code><\/div>\n<\/li>\n<li>Enter the Content URL, the location of the MPD on your HTTP Server as in Step 3\n<ul>\n<li><i><a href=\"http:\/\/192.168.1.243\/video\/expressplay\/stream.mpd\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">http:\/\/video\/expressplay\/stream.mpd<\/a><\/i><\/li>\n<li><i>Notice: you need to specify the name of IP address of your HTTP Server <\/i><\/li>\n<\/ul>\n<\/li>\n<li>Click on \u201cGet Token\u201d<\/li>\n<\/ol><\/div>\n<hr \/>\n<p><a name=\"part_a-step_5\"><\/a><\/p>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 5 &#8211; The MS3 token<\/p>\n<\/div>\n<ul>\n<li>The ExpressPlay web interface will create the token for you. Save the MS3 token so that you can re-use it later.<\/li>\n<li>When using the MS3 token in the later part of this tutorial, make sure to set the protocol to <strong>ms3:\/\/<\/strong> instead of https:\/\/\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\">\n      <code>ms3:\/\/ms3.test.expressplay.com:8443\/hms\/ms3\/rights\/?b=AA8ABAADDekABVFHLURTZjwAEEsqWZC9-z6jx6rrAatY-H8AcCg-e25s2L4PQebvqBkAcuIrc5bNX6NzqDZC7X1_9eQJFfGLg0dFFOX-hrCq7w4GKEI1smeztFvpOmpHaZ0bGz7XoqP_6R7_Zw1tFDGtqJHEmhBCz9Aleth8vCXrL76dDHzu6CnKB7o0rttIJO3WMQ8AAAAUeWZFHNJ7jesRYMtgkO7FQ25JxOQ#http%3A%2F%2F192.168.1.243%2Fvideo%2Fexpressplay%2Fstream.mpd<\/code>\n    <\/div>\n<\/li>\n<li>\n    In a real deployment scenario, your Front-end service will request the token to the ExpressPlay Service using the REST API. The token is then passed to the device and processed immediately by the ExpressPlay client SDK\n  <\/li>\n<li>\n    In the next step we will see how the client SDK processes the token to access the protected content\n  <\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 6 &#8211; Play Content using the ExpressPlayer App<\/p>\n<\/div>\n<div class=\"\">\n<p>      <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streaming5-4.jpg\" class=\"mydrop\"><\/p><\/div>\n<div class=\"\">\n<ol style=\"padding-left: 15px; padding-top: 20px;\">\n<li><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.intertrust.ExpressPlayer\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Download the ExpressPlayer App from the Google Play Store<\/a><\/li>\n<li>Open the ExpressPlayer App <\/li>\n<li>Click on \u201cVideo\u201d<\/li>\n<li>Select DASH<\/li>\n<li>Paste the MS3 URL obtained from Step 5<\/li>\n<li>Select MS3 <\/li>\n<li>Click \u201cPlay\u201d<\/li>\n<\/ol><\/div>\n<\/p><\/div>\n<p>  <!-- \/ -->\n    <\/div>\n<p> <!-- \/One -->\n  <\/div>\n<p> <!-- \/ --><\/p>\n<div class=\"\">\n<div class=\"bg-grey-100 p-4 font-avenirBold mb-12 mb-12\">\n<h4>Part B: Play DASH content using your own iOS app, with MS3 token<\/h4>\n<\/p><\/div>\n<div id=\"Two\" class=\"\">\n<div class=\"\">\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<div>\n<p>STEP 1 &#8211; Fragment your MP4 file\n          <\/p><\/div>\n<\/p><\/div>\n<ul>\n<li>MPEG DASH format requires the MP4 files to be fragmented<\/li>\n<li>Open the terminal to the folder that has the MP4 file <\/li>\n<li>Use the bento4 tool \u2018mp4fragment,\u2019 type the name of your MP4 file and the name of the output fragmented MP4 file.<\/li>\n<li>For example:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mp4fragment big_buck_bunny.mp4  big_buck_bunny.mf4<\/code><\/div>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 2 &#8211; Package and encrypt your content into DASH format<\/p>\n<\/div>\n<ul>\n<li>Always use the Bento4 tool MP4DASH to encrypt and package your content into DASH format. <\/li>\n<li>You can do by typing the following:<br \/>\n  <\/p>\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mp4dash --encryption-key=43215678123412341234123412341234:12341234123412341234123412341234 --marlin\u00a0big_buck_bunny.mf4<\/code><\/div>\n<\/li>\n<li>\n  <strong>Note: <\/strong><\/p>\n<ul style=\"list-style:none;\">\n<li>&#8211; The command option \u2014encryption-key indicates the content encryption key (CK) to use and it is followed by the key-id (KID) . In this case the value of the KID is equal to: 43215678123412341234123412341234 while the KEY is equal to: 12341234123412341234123412341234<\/li>\n<li>&#8211; The command option \u2014marlin indicates that you want to use Marlin DRM. As MPEG-DASH is a streaming format supported by other DRMs like PlayReady and Widevine, it is possible to use the same MP4DASH tool to signal the use of different DRMs schema within the same stream.  For now, we will focus on Marlin. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 3 &#8211; Copy the whole \u201coutput\u201d folder to your HTTP Server working folder<\/p>\n<\/div>\n<ul>\n<li>Create a folder in your HTTP Web Server working directory.\n<ul style=\"list-style:none;\">\n<li>&#8211; For example on a Mac:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mkdir \/Library\/WebServer\/Documents\/video\/expressplay<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>Copy the content of the output folder into the newly created folder.\n<ul style=\"list-style:none;\">\n<li>&#8211; For example on a Mac:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>cp -R output\/ \/Library\/WebServer\/Documents\/video\/expressplay<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Note:<\/strong>\n<ul style=\"list-style:none;\">\n<li>&#8211; The commands above are just an example, your HTTP Server may have a different folder structure and therefore the folder path may differ from the one provided above.<\/li>\n<li>&#8211; You must configure the MIME-TYPE of your HTTP Server to handle the mime-type for the DASH manifest descriptor file or mpd files. The mime-type for the mpd file needs to be set to application\/DASH+xml <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 4 &#8211; Create an MS3 URL by using the web interface<\/p>\n<\/div>\n<div class=\"\">\n<p>    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streamingA-4.jpg\" class=\"mydrop\"><\/p>\n<\/div>\n<div class=\"\">\n<ol style=\"padding-left: 15px; padding-top: 20px;\">\n<li>Log into your ExpressPlay account<\/li>\n<li>Click on \u201cTOKENS\u201d<\/li>\n<li>Click on \u201cMarlin MS3\u201d<\/li>\n<li>Select Service Mode \u201cTest\u201d<\/li>\n<li>Enter the Content ID, this is derived from the KID in step 2\n<ul>\n<li><i>urn:marlin:kid:43215678123412341234123412341234<\/i><\/li>\n<\/ul>\n<\/li>\n<li>Enter the Content Encryption Key as in step 2\n<ul>\n<li><i>12341234123412341234123412341234<\/i><\/li>\n<\/ul>\n<\/li>\n<li>Enter the Content URL, the location of the MPD on your HTTP Server as in Step 3\n<ul>\n<li><i>http:\/\/video\/expressplay\/stream.mpd<\/i><\/li>\n<li><i>Notice: you need to specify the name of IP address of your HTTP Server <\/i><\/li>\n<\/ul>\n<\/li>\n<li>Click on \u201cGet Token\u201d <\/li>\n<\/ol>\n<\/div>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 5 &#8211; The MS3 token<\/p>\n<\/div>\n<ul>\n<li>The ExpressPlay web interface will create the token for you. Save the MS3 token so that you can re-use it later.<\/li>\n<li>When using the MS3 token in the later part of this tutorial, make sure to set the protocol to <strong>ms3:\/\/<\/strong> instead of https:\/\/\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\">\n  <code>ms3:\/\/ms3.test.expressplay.com:8443\/hms\/ms3\/rights\/?b=AA8ABAADDekABVFHLURTZjwAEEsqWZC9-z6jx6rrAatY-H8AcCg-e25s2L4PQebvqBkAcuIrc5bNX6NzqDZC7X1_9eQJFfGLg0dFFOX-hrCq7w4GKEI1smeztFvpOmpHaZ0bGz7XoqP_6R7_Zw1tFDGtqJHEmhBCz9Aleth8vCXrL76dDHzu6CnKB7o0rttIJO3WMQ8AAAAUeWZFHNJ7jesRYMtgkO7FQ25JxOQ#http%3A%2F%2F192.168.1.243%2Fvideo%2Fexpressplay%2Fstream.mpd<\/code>\n<\/div>\n<\/li>\n<li>In a real deployment scenario, your Front-end service will request the token to the ExpressPlay Service using the REST API. The token is then passed to the device and processed immediately by the ExpressPlay client SDK<\/li>\n<li>In the next step we will see how the client SDK processes the token to access the protected content <\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 6 &#8211; SDK Download<\/p>\n<\/div>\n<div class=\"\">\n<p>  <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streamingB-6-2.jpg\" class=\"mydrop\"><\/p>\n<\/div>\n<div class=\"\">\n<ol style=\"padding-left:15px; padding-top: 20px;\">\n<li>Log in to your ExpressPlay account <\/li>\n<li>Select DRM Services<\/li>\n<li>Download the <strong>test<\/strong> iOS SDK<\/li>\n<\/ol>\n<p><strong>Note:<\/strong> ExpressPlay provides test and production SDKs and associated cloud service. Development and testing should be done using the test SDK while production SDKs must be used with a commercial service<\/p>\n<\/div>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 7a &#8211; iOS Sample<\/p>\n<\/div>\n<div class=\"\">\n<p>  <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streamingB2.jpg\" class=\"mydrop\"><\/p>\n<\/div>\n<div class=\"\">\n<ol style=\"padding-left:15px; padding-top: 20px;\">\n<li>Open the ExpressPlayExample project in Xcode <\/li>\n<li>Open the ViewController.m file within the project<\/li>\n<li>Replace the value of the MS3URL variable with the one obtained in step 5<\/li>\n<li>Set the media stream type to WSB_PPMST_DASH<\/li>\n<li>Run your code (you can choose to run it on an emulator or an iOS device)<\/li>\n<\/ol>\n<\/div><\/div>\n<p>  <!-- \/ -->\n    <\/div>\n<p> <!-- \/ -->\n  <\/div>\n<div class=\"\">\n<div class=\"bg-grey-100 p-4 font-avenirBold mb-12 mb-12\" >\n<h4>Part C: Play DASH content, get the MS3 token programmatically from ExpressPlay service<\/h4>\n<\/p><\/div>\n<div id=\"Four\" class=\"\">\n<div class=\"\">\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 1 &#8211; Fragment your MP4 file<\/p>\n<\/div>\n<ul>\n<li>MPEG DASH format requires the MP4 files to be fragmented<\/li>\n<li>Open the terminal to the folder that has the MP4 file <\/li>\n<li>Use the bento4 tool \u2018mp4fragment,\u2019 type the name of your MP4 file and the name of the output fragmented MP4 file.<\/li>\n<li>For example:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mp4fragment big_buck_bunny.mp4  big_buck_bunny.mf4<\/code><\/div>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 2 &#8211; Package and encrypt your content into DASH format<\/p>\n<\/div>\n<ul>\n<li>Always use the Bento4 tool MP4DASH to encrypt and package your content into DASH format. <\/li>\n<li>You can do by typing the following:<br \/>\n  <\/p>\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mp4dash --encryption-key=43215678123412341234123412341234:12341234123412341234123412341234 --marlin\u00a0big_buck_bunny.mf4<\/code><\/div>\n<\/li>\n<li>\n  <strong>Notice: <\/strong><\/p>\n<ul style=\"list-style:none;\">\n<li>&#8211; The command option \u2014encryption-key indicates the content encryption key (CK) to use and it is followed by the key-id (KID) . In this case the value of the KID is equal to: 43215678123412341234123412341234 while the KEY is equal to: 12341234123412341234123412341234<\/li>\n<li>&#8211; The command option \u2014marlin indicates that you want to use Marlin DRM. As MPEG-DASH is a streaming format supported by other DRMs like PlayReady and Widevine, it is possible to use the same MP4DASH tool to signal the use of different DRMs schema within the same stream.  For now, we will focus on Marlin. <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 3 &#8211; Copy the whole \u201coutput\u201d folder to your HTTP Server working folder<\/p>\n<\/div>\n<ul>\n<li>Create a folder in your HTTP Web Server working directory.\n<ul style=\"list-style:none;\">\n<li>&#8211; For example on a Mac:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mkdir \/Library\/WebServer\/Documents\/video\/expressplay<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>Copy the content of the output folder into the newly created folder.\n<ul style=\"list-style:none;\">\n<li>&#8211; For example on a Mac:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>cp -R output\/ \/Library\/WebServer\/Documents\/video\/expressplay<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li><strong>Note:<\/strong>\n<ul style=\"list-style:none;\">\n<li>&#8211; The commands above are just an example, your HTTP Server may have a different folder structure and therefore the folder path may differ from the one provided above.<\/li>\n<li>&#8211; You must configure the MIME-TYPE of your HTTP Server to handle the mime-type for the DASH manifest descriptor file or mpd files. The mime-type for the mpd file needs to be set to application\/DASH+xml <\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 4 &#8211; Get the required information<\/p>\n<\/div>\n<p>In a real deployment, one wants to generate tokens programmatically, not using a web interface. ExpressPlay service provides an API to do so.<\/p>\n<p>The API documentation for generating MS3 tokens is located here: <a href=\"http:\/\/www.expressplay.com\/ja\/developer\/restapi\/#ms3-token-request\">http:\/\/www.expressplay.com\/developer\/restapi#ms3-token-request<\/a><\/p>\n<div class=\"\">\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streamingD-4.jpg\" class=\"mydrop\">\n<\/div>\n<div class=\"\">\n<p>To use the API, you need to know the API URL and your API key.<\/p>\n<p>You can find this information in your ExpressPlay dashboard:<\/p>\n<ol style=\"padding-left: 15px;\">\n<li>Log in to your ExpressPlay account<\/li>\n<li>Find your Test Customer Authenticator (API key)<\/li>\n<li>Get the Test Service URL for making Test MS3 Token Requests<\/li>\n<\/ol>\n<\/div>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 5 &#8211; Request an MS3 token using the service API <\/p>\n<\/div>\n<p>Now that we have the required information, let\u2019s build the request with the required arguments:<\/p>\n<ul>\n<li>URL = https:\/\/ms3-gen.test.expressplay.com + \/hms\/ms3\/token (see documentation for more details)<\/li>\n<li>customerAuthenticator = <span style=\"color:red;\">USE YOUR CUSTOMER AUTHENTICATOR<\/span><\/li>\n<li>contentId = urn:marlin:kid:43215678123412341234123412341234<\/li>\n<li>contentKey = 12341234123412341234123412341234<\/li>\n<li>contentURL = www.test1234.com\/test\/test\/test.mp4<\/li>\n<li>wudo param (to allow HD content playbackl): ms3Extension=wudo,false,AAAAAA==<\/li>\n<\/ul>\n<p>Here is the complete request:<\/p>\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>GET https:\/\/ms3-gen.test.expressplay.com\/hms\/ms3\/token?customerAuthenticator= USE YOUR CUSTOMER AUTH.CODE&contentId=urn:marlin:kid:43215678123412341234123412341234&contentKey=12341234123412341234123412341234&ms3Extension=wudo,false,AAAAAA==&contentURL=https:\/\/192.168.1.243\/video\/expressplay\/stream.mpd<br \/>\n<\/code><\/div>\n<\/p>\n<p>In this example, we execute the request with curl (see screenshot). We receive the MS3 URL as a response.<\/p>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 6 &#8211; Test the token in the OS sample<\/p>\n<\/div>\n<div class=\"\">\n<p>    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streamingD3.jpg\" class=\"mydrop\"><\/p>\n<\/div>\n<div class=\"\">\n<ol style=\"padding-left: 15px; padding-top: 20px;\">\n<li>Open the ExpressPlayExample project in Xcode<\/li>\n<li>Open the ViewController.m file within the project<\/li>\n<li>Replace the value of the <i>MS3URL<\/i> variable with the one obtained in the 5<\/li>\n<li>Set the media stream type to <i>WSB_PPMST_DASH<\/i> <\/li>\n<li>Run your code (you can choose to run it on an emulator or an iOS device)<\/li>\n<\/ol>\n<\/div>\n<hr \/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 7 &#8211; Compile &amp; Run<\/p>\n<\/div>\n<div class=\"\">\n<img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/DASH-streamingC5.jpg\" class=\"mydrop\">\n<\/div>\n<p><!--  -->\n      <\/div>\n<p>  <!-- \/ -->\n    <\/div>\n<p> <!-- \/ -->\n  <\/div>\n<p> <!-- \/ --><\/p>\n<div class=\"\">\n<div class=\"bg-grey-100 p-4 font-avenirBold mb-12 mb-12\" >\n<p><a name=\"part_d\"><\/a><\/p>\n<h4>Part D: How to package and to play your own protected DASH content on a browser with Widevine<\/h4>\n<\/p><\/div>\n<p> <!-- \/bg-grey-100 p-4 font-avenirBold mb-12 mb-12 --><\/p>\n<div id=\"Five\" class=\"\">\n<div class=\"\">\n<div class=\"\">\n<h4>Overview<\/h4>\n<ul>\n<li>This tutorial will cover the following:<\/li>\n<li>To package of a video into DASH format with PlayReady, Widevine and Marlin signaling.<\/li>\n<li>To request a PlayReady and a Widevine token via command line<\/li>\n<li>To play the content from a web browser<\/li>\n<\/ul>\n<\/div>\n<div class=\"\">\n<h4>Assumptions<\/h4>\n<ul>\n<li>This tutorial follows assumes the following<\/li>\n<li>You have a fragmented  MP4 file e.g. video_mango.mp4<\/li>\n<li>You have downloaded and installed the Bento4 tools (available from <a href=\"https:\/\/www.bento4.com\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">bento4.com<\/a>)<\/li>\n<li>You have an ExpressPlay account (can be obtained from <a href=\"https:\/\/admin.expressplay.com\/\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/admin.expressplay.com\/<\/a>)<\/li>\n<li>You have an Amazon AWS S3 account (<a href=\"https:\/\/aws.amazon.com\/s3\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">https:\/\/aws.amazon.com\/s3\/<\/a>)<\/li>\n<\/ul>\n<\/div>\n<hr>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 1 &#8211; Fragment your MP4 file<\/p>\n<\/p><\/div>\n<ul>\n<li>MPEG DASH format requires the MP4 files to be fragmented<\/li>\n<li>Open the terminal to the folder that has the MP4 file <\/li>\n<li>Use the bento4 tool \u2018mp4fragment,\u2019 type the name of your MP4 file and the name of the output fragmented MP4 file.<\/li>\n<li>For example:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\">\n     <code>mp4fragment video_mango.mp4 video_mango.mf4<\/code>\n     <\/div>\n<\/li>\n<\/ul>\n<hr\/>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 2 &#8211; Create the DASH content <\/p>\n<\/div>\n<ul>\n<li>Open the terminal to the folder where you have you MP4 file\n<li>Use the bento4 tool mp4dash and type the following:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>mp4dash --encryption-key=12341234123412341234123412341234:43215678123412341234123412341234 --marlin --widevine --widevine-header=provider:intertrust#content_id:2a --playready --playready-header= https:\/\/pr.service.expressplay.com\/playready\/RightsManager.asmx video_mango.mf4<\/code><\/div>\n<\/li>\n<li>We do suggest to study documentation of each of the bento4 tool<\/li>\n<\/ul>\n<hr>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 3 &#8211; Copy the \u201coutput\u201d folder  to your S3 bucket<\/p>\n<\/div>\n<div\">\n<p>  <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/step2.jpg\" class=\"mydrop\"><\/p>\n<ul>\n<li>Copy the \u201coutput\u201d folder obtained from the previous step into a S3 bucket <\/li>\n<li>Ensure that the mime-type of the .mpd file is set to: <strong>application\/dash+xml<\/strong><\/li>\n<li>Ensure that all the files within the buckets output folder are <strong>\u201cmade public\u201d<\/strong><\/li>\n<\/ul>\n<\/div>\n<hr>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 4 &#8211; Setting CORS Configurations<\/p>\n<\/div>\n<div class=\"\">\n<p>      <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/step3.jpg\" class=\"mydrop\"><\/p>\n<\/div>\n<ul>\n<li>Set the CORS of your S3 bucket as following:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\">\n<code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<br \/>\n&lt;CORSConfiguration xmlns=\"http:\/\/s3.amazonaws.com\/doc\/2006-03-01\/\"&gt;<br \/>\n    &lt;CORSRule&gt;<br \/>\n        &lt;AllowedOrigin&gt;*&lt;\/AllowedOrigin&gt;<br \/>\n        &lt;AllowedMethod&gt;GET&lt;\/AllowedMethod&gt;<br \/>\n        &lt;AllowedMethod&gt;POST&lt;\/AllowedMethod&gt;<br \/>\n        &lt;MaxAgeSeconds&gt;3500&lt;\/MaxAgeSeconds&gt;<br \/>\n        &lt;AllowedHeader&gt;*&lt;\/AllowedHeader&gt;<br \/>\n    &lt;\/CORSRule&gt;<br \/>\n&lt;\/CORSConfiguration&gt;<br \/><\/code>\n<\/div>\n<\/li>\n<\/ul>\n<hr>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 5 &#8211; Request content licenses<\/p>\n<\/div>\n<ul>\n<li>Using the command line:<\/li>\n<li>Widevine token request:\n<div class=\"bg-grey-100 p-8 mt-12 mb-12\"><code>curl -k 'https:\/\/wv-gen.test.expressplay.com\/hms\/wv\/token?customerAuthenticator=YOUR_CUSTOMER_AUTHENTICATOR_CODE&errorFormat=json&kid=12341234123412341234123412341234&contentKey=43215678123412341234123412341234&securityLevel=1&hdcpOutputControl=0'<\/code><\/div>\n<\/li>\n<li>\n    Please refer to the ExpressPlay Service API documentation for: <a href=\"https:\/\/www.expressplay.com\/ja\/developer\/restapi\/\">https:\/\/www.expressplay.com\/developer\/restapi\/<\/a>\n  <\/li>\n<\/ul>\n<hr>\n<div class=\"mt-12 mb-12 font-avenirBold\">\n<p>STEP 6 &#8211; Playback on Chrome \/ Shakaplayer and Widevine<\/p>\n<\/div>\n<div class=\"\">\n<ul style=\"margin-bottom: 20px;\">\n<li>Using the Shaka Player player from: <a href=\"http:\/\/shaka-player-demo.appspot.com\/demo\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">http:\/\/shaka-player-demo.appspot.com\/demo\/<\/a><\/li>\n<li>Select \u201ccustom asset\u201d<\/li>\n<li>Copy the URL of the .mpd file to the first input filed<\/li>\n<li>Copy the License Acquisition URL including the token, from the Widevine token request, to second input field.<\/li>\n<\/ul>\n<p>      <img decoding=\"async\" src=\"\/wp-content\/uploads\/2017\/08\/step5.jpg\" class=\"mydrop\"><\/p>\n<\/div>\n<hr><\/div>\n<\/p><\/div>\n<\/p><\/div>","protected":false},"excerpt":{"rendered":"<p>NOTE: We\u2019ve recently updated our service. Learn more If we\u2019ve not yet migrated you to the new service, click here to see the Current Getting Started with ExpressPlay Tutorial Getting Started with ExpressPlay (Legacy) These tutorials take you through the step-by-step process on how to package the content and to use the ExpressPlay Service for streaming and download use cases. Requirements An MP4 file e.g. big_buck_bunny.mp4 Download and install the Bento4 tools (available from bento4.com) An HTTP server running on your computer An Android or IOS device connected to the same WiFi and subnet of your HTTP Server e.g. your mobile device can reach your HTTP Server Download the ExpressPlayer [&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-13937","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/pages\/13937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/users\/124"}],"replies":[{"embeddable":true,"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/comments?post=13937"}],"version-history":[{"count":0,"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/pages\/13937\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/pages\/10924"}],"wp:attachment":[{"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/media?parent=13937"}],"wp:term":[{"taxonomy":"tax_page_type","embeddable":true,"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/tax_page_type?post=13937"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.expressplay.com\/ja\/wp-json\/wp\/v2\/coauthors?post=13937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}