ในบทความนี้ เราจะพูดถึงฟีเจอร์สื่อใหม่ของ Chrome 73 ซึ่งได้แก่
- ตอนนี้ระบบรองรับปุ่มสื่อของฮาร์ดแวร์เพื่อควบคุมการเล่นสื่อบนเดสก์ท็อปแล้ว
- นักพัฒนาเว็บสามารถสอบถามว่าบังคับใช้นโยบาย HDCP บางรายการได้หรือไม่
- การแสดงภาพซ้อนภาพอัตโนมัติใน PWA บนเดสก์ท็อปและ"ข้ามโฆษณา" ในการแสดงภาพซ้อนภาพจะพร้อมใช้งานในการทดลองใช้แหล่งที่มา
- PWA บนเดสก์ท็อปจะได้รับสิทธิ์เล่นอัตโนมัติพร้อมเสียง
การรองรับคีย์สื่อของฮาร์ดแวร์
ปัจจุบันแป้นพิมพ์หลายรุ่นมีปุ่มสำหรับควบคุมฟังก์ชันการเล่นสื่อพื้นฐาน เช่น เล่น/หยุดชั่วคราว แทร็กก่อนหน้า และแทร็กถัดไป ชุดหูฟังก็มีเช่นกัน ก่อนหน้านี้ ผู้ใช้เดสก์ท็อปจะใช้แป้นสื่อเหล่านี้เพื่อควบคุมการเล่นเสียงและวิดีโอใน Chrome ไม่ได้ ซึ่งเราจะเปลี่ยนแปลงเรื่องนี้ในวันนี้
หากผู้ใช้กดแป้นหยุดชั่วคราว องค์ประกอบสื่อที่ใช้งานอยู่ซึ่งเล่นใน Chrome จะหยุดชั่วคราวและได้รับเหตุการณ์สื่อ "หยุดชั่วคราว" หากกดแป้นเล่น องค์ประกอบสื่อที่หยุดชั่วคราวก่อนหน้านี้จะเล่นต่อและได้รับเหตุการณ์สื่อ "เล่น" โดยจะใช้ได้ไม่ว่า Chrome จะทำงานอยู่เบื้องหน้าหรือเบื้องหลัง
ใน ChromeOS ตอนนี้แอป Android ที่ใช้โฟกัสเสียงจะบอกให้ Chrome หยุดเสียงชั่วคราวและเล่นเสียงต่อเพื่อสร้างประสบการณ์การรับชมสื่อที่ราบรื่นระหว่างเว็บไซต์ใน Chrome, แอป Chrome และแอป Android ปัจจุบันการดำเนินการนี้มีการสนับสนุนเฉพาะในอุปกรณ์ ChromeOS ที่ใช้ Android P เท่านั้น
กล่าวโดยย่อคือ แนวทางปฏิบัติที่ดีคือคอยฟังเหตุการณ์สื่อเหล่านี้อยู่เสมอและดำเนินการตามความเหมาะสม
video.addEventListener('pause', function() {
// Video is now paused.
// TODO: Let's update UI accordingly.
});
video.addEventListener('play', function() {
// Video is now playing.
// TODO: Let's update UI accordingly.
});
แต่ยังไม่หมดเท่านี้! ตอนนี้ Media Session API พร้อมใช้งานบนเดสก์ท็อปแล้ว (ก่อนหน้านี้รองรับเฉพาะบนอุปกรณ์เคลื่อนที่) นักพัฒนาเว็บจึงจัดการเหตุการณ์ที่เกี่ยวข้องกับสื่อได้ เช่น การเปลี่ยนแทร็กซึ่งเกิดจากปุ่มสื่อ ปัจจุบันระบบรองรับเหตุการณ์ previoustrack
และ nexttrack
navigator.mediaSession.setActionHandler('previoustrack', function() {
// User hit "Previous Track" key.
});
navigator.mediaSession.setActionHandler('nexttrack', function() {
// User hit "Next Track" key.
});
Chrome จะจัดการแป้นเล่นและหยุดชั่วคราวโดยอัตโนมัติ อย่างไรก็ตาม หากลักษณะการทํางานเริ่มต้นไม่เหมาะกับคุณ คุณยังคงตั้งค่าตัวแฮนเดิลการดําเนินการบางอย่างสําหรับ "เล่น" และ "หยุดชั่วคราว" เพื่อป้องกันไม่ให้เกิดเหตุการณ์นี้
navigator.mediaSession.setActionHandler('play', function() {
// User hit "Play" key.
});
navigator.mediaSession.setActionHandler('pause', function() {
// User hit "Pause" key.
});
การรองรับแป้นสื่อของฮาร์ดแวร์พร้อมใช้งานใน ChromeOS, macOS และ Windows Linux จะพร้อมให้บริการในภายหลัง
โปรดดูเอกสารประกอบสําหรับนักพัฒนาซอฟต์แวร์ที่มีอยู่ของเราและลองใช้ตัวอย่าง Media Session อย่างเป็นทางการ
เครื่องมือติดตามสถานะ Chrome | ข้อบกพร่องของ Chromium
สื่อที่เข้ารหัส: การตรวจสอบนโยบาย HDCP
HDCP Policy Check API ช่วยให้นักพัฒนาเว็บสามารถสอบถามได้ว่าสามารถบังคับใช้นโยบายที่เฉพาะเจาะจง เช่น ข้อกำหนด HDCP ได้หรือไม่ก่อนขอใบอนุญาต Widevine และโหลดสื่อ
const status = await video.mediaKeys.getStatusForPolicy({ minHdcpVersion: '2.2' });
if (status == 'usable')
console.log('HDCP 2.2 can be enforced.');
API พร้อมใช้งานในทุกแพลตฟอร์ม อย่างไรก็ตาม การตรวจสอบนโยบายจริงอาจไม่พร้อมให้บริการในบางแพลตฟอร์ม ตัวอย่างเช่น สัญญาการตรวจสอบนโยบาย HDCP จะปฏิเสธด้วย NotSupportedError
ใน Android และ Android WebView
โปรดดูเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ฉบับก่อนหน้าและลองใช้ตัวอย่างอย่างเป็นทางการเพื่อดู HDCP ทุกเวอร์ชันที่รองรับ
Intent to Ship | เครื่องมือติดตามสถานะ Chrome | ข้อบกพร่องของ Chromium
ช่วงทดลองใช้ Origin สำหรับฟีเจอร์การแสดงภาพซ้อนภาพอัตโนมัติสำหรับ PWA ที่ติดตั้ง
หน้าเว็บบางหน้าอาจต้องการเข้าสู่และออกจากการแสดงภาพซ้อนภาพโดยอัตโนมัติสำหรับองค์ประกอบวิดีโอ เช่น เว็บแอปการประชุมทางวิดีโอจะใช้ประโยชน์จากลักษณะการทำงานบางอย่างของการแสดงภาพซ้อนภาพอัตโนมัติได้เมื่อผู้ใช้สลับไปมาระหว่างเว็บแอปกับแอปพลิเคชันหรือแท็บอื่นๆ แต่น่าเสียดายที่ข้อกำหนดเกี่ยวกับท่าทางสัมผัสของผู้ใช้ไม่อนุญาตให้ดำเนินการดังกล่าว เราจึงขอแนะนำฟีเจอร์การแสดงภาพซ้อนภาพอัตโนมัติ
ระบบจะเพิ่มแอตทริบิวต์ autopictureinpicture
ใหม่ลงในองค์ประกอบ <video>
เพื่อรองรับการสลับแท็บและแอป
<video autopictureinpicture></video>
วิธีการคร่าวๆ มีดังนี้
- เมื่อเอกสารซ่อนอยู่ องค์ประกอบวิดีโอที่มี
autopictureinpicture
การกำหนดแอตทริบิวต์ล่าสุดจะเข้าสู่โหมดภาพซ้อนภาพโดยอัตโนมัติ หากได้รับอนุญาต - เมื่อเอกสารปรากฏขึ้น องค์ประกอบวิดีโอในโหมดภาพในภาพจะออกจากโหมดนั้นโดยอัตโนมัติ
เพียงเท่านี้ก็เรียบร้อยแล้ว โปรดทราบว่าฟีเจอร์ภาพในภาพอัตโนมัติใช้ได้กับProgressive Web App เท่านั้นที่ผู้ใช้ติดตั้งไว้ในเดสก์ท็อป
ดูรายละเอียดเพิ่มเติมในข้อกําหนดและลองใช้ตัวอย่าง PWA อย่างเป็นทางการ
ความตั้งใจที่จะทดสอบ | เครื่องมือติดตามสถานะ Chrome | ข้อบกพร่องของ Chromium
ช่วงทดลองใช้จากต้นทางสําหรับการข้ามโฆษณาในหน้าต่างการแสดงภาพซ้อนภาพ
รูปแบบโฆษณาวิดีโอมักจะประกอบด้วยโฆษณาตอนต้น ผู้ให้บริการเนื้อหามักจะอนุญาตให้ข้ามโฆษณาได้หลังจากผ่านไป 2-3 วินาที แต่น่าเสียดายที่ผู้ใช้ที่ดูวิดีโอในโหมดภาพในภาพจะทำสิ่งเหล่านี้ไม่ได้ในตอนนี้ เนื่องจากหน้าต่างภาพในภาพเป็นแบบไม่โต้ตอบ
ตอนนี้ Media Session API พร้อมใช้งานบนเดสก์ท็อปแล้ว (ก่อนหน้านี้รองรับเฉพาะบนอุปกรณ์เคลื่อนที่) จึงอาจใช้การดำเนินการของเซสชันสื่อ skipad
ใหม่เพื่อเสนอตัวเลือกนี้ในโหมดภาพในภาพ
หากต้องการใช้ฟีเจอร์นี้ ให้ส่งฟังก์ชันที่มี skipad
เมื่อเรียกใช้
setActionHandler()
หากต้องการซ่อน ให้ปัด null
ดังที่คุณอ่านได้ด้านล่าง การดำเนินการนี้ค่อนข้างตรงไปตรงมา
try {
navigator.mediaSession.setActionHandler('skipad', null);
showSkipAdButton();
} catch(error) {
// The "Skip Ad" media session action is not supported.
}
function showSkipAdButton() {
// The Picture-in-Picture window will show a "Skip Ad" button.
navigator.mediaSession.setActionHandler('skipad', onSkipAdButtonClick);
}
function onSkipAdButtonClick() {
// User clicked "Skip Ad" button, let's hide it now.
navigator.mediaSession.setActionHandler('skipad', null);
// TODO: Stop ad and play video.
}
ลองใช้ตัวอย่าง "ข้ามโฆษณา" อย่างเป็นทางการและแจ้งให้เราทราบว่าควรปรับปรุงฟีเจอร์นี้อย่างไร
ความตั้งใจที่จะทดสอบ | เครื่องมือติดตามสถานะ Chrome | ข้อบกพร่องของ Chromium
เล่นอัตโนมัติที่ได้รับอนุญาตสำหรับ PWA บนเดสก์ท็อป
เนื่องจากตอนนี้ Progressive Web App พร้อมให้บริการบนแพลตฟอร์มเดสก์ท็อปทั้งหมดแล้ว เราจึงขยายกฎที่มีในอุปกรณ์เคลื่อนที่ไปยังเดสก์ท็อปด้วย โดยตอนนี้เราอนุญาตให้ PWA ที่ติดตั้งไว้เล่นอัตโนมัติพร้อมเสียง โปรดทราบว่าจะมีผลกับหน้าในขอบเขตของไฟล์ Manifest ของเว็บแอปเท่านั้น