# ลายน้ำ (Watermark)
Note
ฟีเจอร์นี้ของ ByteArk Player รองรับเฉพาะผู้ใช้ ByteArk Video Cloud for Business หากคุณต้องการใช้งานกรุณาติดต่อ sales@byteark.com
ByteArk Player SDK for Web รองรับการแสดงลายน้ำแบบข้อความ (Watermark) ทับบนวิดีโอ เพื่อระบุตัวผู้ชมแต่ละคน โดยลายน้ำจะแสดงขึ้นเป็นช่วงๆ ที่ตำแหน่งสุ่มบนพื้นที่ของ Player ทำให้ภาพถ่ายหน้าจอหรือวิดีโอที่อัดหน้าจอมีข้อความนี้ติดอยู่ และสามารถใช้สืบย้อนกลับไปยังผู้ชมที่เป็นต้นทางของการรั่วไหลได้
ลายน้ำนี้เป็นมาตรการ ป้องปราม (Deterrent) ไม่ใช่ DRM เนื่องจากทำงานเป็น Overlay แสดงผลข้อความดังนั้นหากต้องการการป้องกันเนื้อหาในระดับการเข้ารหัสและควบคุมสิทธิ์ สามารถดูข้อมูลเกี่ยวกับ DRM เพิ่มเติมได้ที่หัวข้อ Google Widevine และ Apple FairPlay
# การแสดงผลลายน้ำ
Note
ตัวอย่างด้านบนตั้งค่า interval และ displayDuration ให้สั้นกว่าค่าเริ่มต้น เพื่อให้เห็นการแสดงลายน้ำได้เร็วขึ้น
ลายน้ำจะแสดงขึ้นช่วงสั้นๆ ที่ตำแหน่งสุ่มบนพื้นที่ของ Player แล้วซ่อนตัวลง และวนกลับมาแสดงใหม่ที่ตำแหน่งสุ่มใหม่เรื่อยๆ โดยกำหนดระยะเวลาที่แสดงและที่ซ่อนได้ด้วย displayDuration และ interval
เมื่อผู้ชมกดหยุดวิดีโอชั่วคราว (Pause) ระหว่างเล่น ลายน้ำจะ ค้างแสดงไว้ตลอดช่วงที่หยุด และจะกลับไปแสดงเป็นช่วงๆ ตามปกติเมื่อเล่นวิดีโอต่อ
# การเปิดใช้งานลายน้ำบน ByteArk Player
การเปิดใช้งานลายน้ำบน ByteArk Player สามารถทำได้โดยระบุ plugins.bytearkWatermark ใน options เมื่อทำการสร้าง video player พร้อมระบุ text ซึ่งเป็นข้อความที่ต้องการแสดง
var player = bytearkPlayer('video-player', {
sources: [
// source object
],
plugins: {
bytearkWatermark: {
text: '<YOUR_VIEWER_IDENTIFIER>'
}
}
});
2
3
4
5
6
7
8
9
10
ค่าทั้งหมดใน options รวมถึง text กำหนดได้เฉพาะตอนสร้าง Player และเปลี่ยนภายหลังไม่ได้ หากข้อความที่ใช้ระบุตัวผู้ชมต้องรอผลจากขั้นตอนอื่น เช่น การ Login ให้รอจนได้ค่าดังกล่าวก่อน แล้วจึงสร้าง Player
# การตั้งค่า
| Name | Type | Required | Default Value | Description |
|---|---|---|---|---|
| text | String | Yes | - | ข้อความที่ใช้เป็นลายน้ำ แสดงตามที่ระบุ ไม่รองรับการใช้ Template หรือตัวแปร |
| color | String | No | '#ffffff' | สีของข้อความ (CSS color) |
| opacity | Number | No | 0.35 | ความทึบแสงของลายน้ำ มีค่าระหว่าง 0 ถึง 1 |
| fontSize | Number | No | 48 | ขนาดตัวอักษรสูงสุดในหน่วย px โดยลายน้ำจะปรับขนาดตามความกว้างของ Player ไม่เกินค่านี้ |
| fontFamily | String | No | 'inherit' | ฟอนต์ของข้อความ (CSS font-family) |
| fontWeight | Number|String | No | 'inherit' | ความหนาของข้อความ (CSS font-weight) |
| textShadow | Boolean | No | true | ใส่เงาจางๆ ให้ข้อความ เพื่อให้อ่านออกบนภาพวิดีโอทุกแบบ |
| interval | Number | No | 30000 | ระยะเวลาที่ซ่อนลายน้ำระหว่างการแสดงแต่ละครั้ง ในหน่วยมิลลิวินาที |
| displayDuration | Number | No | 10000 | ระยะเวลาที่แสดงลายน้ำในแต่ละครั้ง ในหน่วยมิลลิวินาที |
| showWhenPaused | Boolean | No | true | ค้างแสดงลายน้ำไว้ตลอดช่วงที่ผู้ชมหยุดวิดีโอชั่วคราว ตั้งเป็น false เพื่อให้แสดงเป็นช่วงๆ ตามรอบเดิมโดยไม่สนใจการ Pause |
| maxWidthPercent | Number | No | 80 | ความกว้างสูงสุดของลายน้ำ คิดเป็นเปอร์เซ็นต์ของความกว้าง Player ก่อนที่ข้อความจะตัดขึ้นบรรทัดที่สอง มีค่ามากกว่า 0 และไม่เกิน 100 |
# ขนาดตัวอักษรและการตัดบรรทัด
ขนาดตัวอักษรของลายน้ำจะปรับตามความกว้างของ Player โดยไม่เกินค่า fontSize และไม่เล็กกว่าขนาดที่ยังอ่านออก ทำให้ลายน้ำอ่านได้บน Player ขนาดใหญ่ และไม่ใหญ่เกินไปบน Player ขนาดเล็ก ข้อความที่ยาว เช่น อีเมล จะถูกตัดขึ้นบรรทัดที่สองแทนการตัดข้อความทิ้ง เพื่อให้ข้อความที่ใช้ระบุตัวผู้ชมยังครบถ้วน
ในกรณีที่ Player มีขนาดเล็กมากจนไม่สามารถแสดงลายน้ำที่ขนาดอ่านออกได้ ลายน้ำจะถูกย่อให้เล็กกว่าขนาดดังกล่าว เพื่อให้ข้อความทั้งหมดยังอยู่ในกรอบของ Player
# ผลกระทบต่อ Picture-in-Picture และการแสดงผลเต็มจอ
เพื่อความปลอดภัย เมื่อเปิดใช้ Plugin ลายน้ำนี้ ByteArk Player จำเป็นต้องปรับพฤติกรรมต่อไปนี้ให้อัตโนมัติ
| พฤติกรรม | ผลที่เกิดขึ้น |
|---|---|
| Picture-in-Picture | ปิดการใช้งาน และซ่อนปุ่ม Picture-in-Picture บน Control Bar |
| การแสดงผลเต็มจอบน iOS และ iPadOS | ใช้การขยายเต็มหน้าต่างด้วย CSS (Full-window) แทน Native fullscreen เพื่อให้ลายน้ำยังแสดงอยู่ |
| การแสดงผลเต็มจอบน Desktop และ Android | ใช้ Native fullscreen ตามปกติ ลายน้ำยังแสดงอยู่ |
# ข้อจำกัด
| พื้นที่การแสดงผล | ลายน้ำ | หมายเหตุ |
|---|---|---|
| Desktop, Android, iPad แบบ inline | แสดง | กรณีใช้งานทั่วไป |
| Desktop, Android, iPad โหมดเต็มจอ | แสดง | Player ยังอยู่ในหน้าเว็บ |
| iPhone โหมดเต็มจอ | แสดง | ผ่านการขยายเต็มหน้าต่างด้วย CSS (Full-window) |
| Picture-in-Picture | ไม่แสดง | ระบบปฏิบัติการแสดงเฉพาะภาพวิดีโอ (ByteArk Player ปิดการใช้งานให้โดยค่าเริ่มต้น) |
| การแคสต์ผ่าน Google Chromecast หรือ Apple AirPlay | ไม่แสดง | อุปกรณ์ปลายทางเล่นไฟล์วิดีโอโดยตรง ไม่ได้รับข้อมูลจากหน้าเว็บต้นทาง |
# ข้อควรระวังด้านความปลอดภัยและความเป็นส่วนตัว
ข้อควรระวัง
ข้อความที่คุณตั้งใน text จะปรากฏบนหน้าจอให้ทุกคนที่อยู่หน้าจอนั้นมองเห็น และเป็นสิ่งแรกที่ผู้ที่ต้องการนำเนื้อหาไปเผยแพร่จะพยายามตัดออก จึงควรใช้ รหัสอ้างอิงของผู้ชมหรือของ Session ที่นำไปเทียบกลับเป็นบัญชีผู้ใช้ในระบบของคุณได้ แทนการใช้ข้อมูลส่วนบุคคลโดยตรง
การจัดเก็บความสัมพันธ์ระหว่าง Session กับข้อความลายน้ำ รวมถึงหน้าที่ตามกฎหมายคุ้มครองข้อมูลส่วนบุคคล (PDPA) จากการแสดงข้อความดังกล่าว เป็นความรับผิดชอบของผู้นำไปใช้งาน
# ตัวอย่าง
<!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: 'Big Buck Bunny',
src: 'https://byteark-playertzxedwv.stream-playlist.byteark.com/streams/TZyZheqEJUwC/playlist.m3u8',
type: 'application/x-mpegURL',
}],
plugins: {
bytearkWatermark: {
text: '<YOUR_VIEWER_IDENTIFIER>',
opacity: 0.4,
fontSize: 40,
interval: 30000,
displayDuration: 10000
}
}
});
</script>
</body>
</html>
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