# 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
# 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: 'https://byteark-playertzxedwv.stream-playlist.byteark.com/streams/TZyZheqEJUwC/playlist.m3u8',
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
2
3
4
5
6
7
8
9
10
# ตัวอย่างการตั้งค่าเพื่อส่ง Authorization Header
{
src: 'https://byteark-playertzxedwv.stream-playlist.byteark.com/streams/TZyZheqEJUwC/playlist.m3u8',
type: 'application/x-mpegURL',
drm: {
fairplay: {
certificateUrl: '<URL_TO_CERTIFICATE>',
processSpcUrl: '<URL_TO_FAIRPLAY_LICENSE_SERVER>',
licenseRequestHeaders: [
{
name: 'Authorization',
value: '<YOUR_AUTHORIZATION_HEADER>'
}
]
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ตัวอย่างการใช้งาน extractContentId
{
src: 'https://byteark-playertzxedwv.stream-playlist.byteark.com/streams/TZyZheqEJUwC/playlist.m3u8',
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
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: 'https://byteark-playertzxedwv.stream-playlist.byteark.com/streams/TZyZheqEJUwC/playlist.m3u8',
type: 'application/x-mpegURL',
drm: {
fairplay: {
certificateUrl: '<URL_TO_CERTIFICATE>',
processSpcUrl: '<URL_TO_FAIRPLAY_LICENSE_SERVER>',
licenseRequestHeaders: [
{
name: 'Authorization',
value: '<YOUR_AUTHORIZATION_HEADER>'
}
]
}
}
}
],
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
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