# Apple FairPlay

Note

ฟีเจอร์นี้ของ ByteArk Player รองรับเฉพาะผู้ใช้ ByteArk Video Cloud for Business หากคุณต้องการใช้งานกรุณาติดต่อ sales@byteark.com

ByteArk Player รองรับการเล่นวิดีโอที่ป้องกันด้วย Apple FairPlay Streaming (FPS) (opens new window) ซึ่งใช้ได้กับ Safari บน macOS, iOS และ iPadOS

Note

FairPlay ต้องใช้ source ในรูปแบบ HLS (.m3u8)

# DRM Source Object ของ FairPlay

Name Type Required Description
certificateUrl String Yes URL ของ FairPlay certificate
processSpcUrl String Yes URL ของ FairPlay license server
extractContentId Function No Callback function ที่รับ string initData Uri จาก needkey event ใช้เมื่อต้องการส่ง Custom Content ID ไปยัง License server
extractKey Function No Callback function ที่รับ response object (opens new window) เป็น parameter ใช้เพื่อแปลง response data เป็น key ในการเล่นวิดีโอ
licenseRequestHeaders Array<{name: String; value: String}> No Custom header ที่ส่งไปยัง license server

# ตัวอย่างการตั้งค่า

{
  src: '<HLS_M3U8_URL>',
  type: 'application/x-mpegURL',
  drm: {
    fairplay: {
      certificateUrl: '<URL_TO_CERTIFICATE>',
      processSpcUrl: '<URL_TO_FAIRPLAY_LICENSE_SERVER>'
    }
  }
}
1
2
3
4
5
6
7
8
9
10

# ตัวอย่างการตั้งค่าเพื่อส่ง Authorization Header

{
  src: '<HLS_M3U8_URL>',
  type: 'application/x-mpegURL',
  drm: {
    fairplay: {
      certificateUrl: '<URL_TO_CERTIFICATE>',
      processSpcUrl: '<URL_TO_FAIRPLAY_LICENSE_SERVER>',
      licenseRequestHeaders: [
        {
          name: 'Authorization',
          value: 'Bearer <YOUR_TOKEN>'
        }
      ]
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Note

หากใช้งาน ByteArk Multi-DRM สามารถดูวิธีสร้าง JWT Token สำหรับ Authorization header ได้ที่ ขั้นตอนการสร้าง Authorization Token สำหรับใช้งาน DRM License Server

# ตัวอย่างการใช้งาน extractContentId

{
  src: '<HLS_M3U8_URL>',
  type: 'application/x-mpegURL',
  drm: {
    fairplay: {
      certificateUrl: '<URL_TO_CERTIFICATE>',
      processSpcUrl: '<URL_TO_FAIRPLAY_LICENSE_SERVER>',
      extractContentId: function(initDataUri) {
        var uriParts = initDataUri.split('://', 1);
        var protocol = uriParts[0].slice(-3);
        uriParts = initDataUri.split(';', 2);
        var contentId = uriParts.length > 1 ? uriParts[1] : '';
        return protocol.toLowerCase() == 'skd' ? contentId : '';
      }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# ตัวอย่าง

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <div id="video-player"></div>
    <script src="https://byteark-sdk.cdn.byteark.com/player/v2/byteark-player.min.js"></script>
    <script>
      var player = bytearkPlayer('video-player', {
        fluid: true,
        poster: '/assets/samples/player/images/poster-big-buck-bunny.jpg',
        sources: [
          {
            title: 'FairPlay Source',
            src: '<HLS_M3U8_URL>',
            type: 'application/x-mpegURL',
            drm: {
              fairplay: {
                certificateUrl: '<URL_TO_CERTIFICATE>',
                processSpcUrl: '<URL_TO_FAIRPLAY_LICENSE_SERVER>',
                licenseRequestHeaders: [
                  {
                    name: 'Authorization',
                    value: 'Bearer <YOUR_TOKEN>'
                  }
                ]
              }
            }
          }
        ],
        plugins: {
          bytearkShaka: {}
        }
      });
      window.player = player;
    </script>
  </body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40