เบลอพื้นหลังของกล้อง

François Beaufort
François Beaufort

การเบลอพื้นหลังเป็นฟังก์ชันยอดนิยมในแอปพลิเคชันการประชุมทางวิดีโอสมัยใหม่ โดยระบบจะแยกพื้นหลังออกจากบุคคลที่อยู่หน้ากล้องโดยอัตโนมัติ ทำให้สภาพแวดล้อมเบลอไปขณะที่ยังคงโฟกัสที่บุคคลนั้น

Background Blur API ช่วยให้เว็บสามารถปกปิดพื้นหลังได้ API นี้ช่วยให้เว็บแอปสามารถขอให้ระบบปฏิบัติการใช้เอฟเฟกต์เบลอพื้นหลังกับฟีดวิดีโอของกล้องได้อย่างมีประสิทธิภาพ วิธีนี้ช่วยประหยัดค่าใช้จ่ายในการใช้เอฟเฟกต์ด้วยตนเองผ่านเฟรมเวิร์กแมชชีนเลิร์นนิง เช่น TensorFlow.js, Mediapipe หรือโซลูชันที่ทำงานบนระบบคลาวด์ ซึ่งต้องประมวลผลเฟรมวิดีโอแต่ละเฟรมแยกกัน

รูปภาพที่มีการเบลอพื้นหลังเปิดและปิด
รูปภาพที่มีการเบลอพื้นหลังปิดอยู่ (ซ้าย) และเปิดอยู่ (ขวา)

เปิดใช้ Background Blur API

โดยค่าเริ่มต้น Chrome จะไม่เปิดใช้ Background Blur API แต่คุณสามารถทดลองใช้ API นี้ได้ใน Chrome 114 โดยเปิดใช้ฟังก์ชันดังกล่าวอย่างชัดเจน คุณสามารถเปิดใช้งานในเครื่องได้โดยเปิดใช้Flag "ฟีเจอร์แพลตฟอร์มเว็บเวอร์ชันทดลอง" ที่ chrome://flags/#enable-experimental-web-platform-features

หากต้องการเปิดใช้ฟีเจอร์นี้สำหรับผู้เข้าชมแอปทุกคน การทดลองใช้เวอร์ชันต้นทางกำลังดำเนินอยู่และจะสิ้นสุดใน Chrome 117 (3 พฤศจิกายน 2023) หากต้องการเข้าร่วมช่วงทดลองใช้ ให้ลงชื่อสมัครใช้และใส่องค์ประกอบเมตาที่มีโทเค็นช่วงทดลองใช้จากต้นทางในส่วนหัว HTML หรือ HTTP ดูข้อมูลเพิ่มเติมได้ที่เริ่มต้นใช้งานการทดสอบต้นทาง

ดูการเปลี่ยนแปลงการเบลอพื้นหลัง

การตั้งค่าบูลีน backgroundBlur ใน MediaStreamTrack ช่วยให้คุณทราบว่าระบบปฏิบัติการใช้การเบลอพื้นหลังในอุปกรณ์สื่อหรือไม่ นอกจากนี้ เมื่อผู้ใช้เปิดหรือปิดการเบลอพื้นหลังผ่านสิ่งอํานวยความสะดวกของระบบปฏิบัติการ ระบบจะเรียกเหตุการณ์ "configurationchange" ใน MediaStreamTrack

ข้อมูลโค้ดต่อไปนี้แสดงวิธีตรวจสอบการเปลี่ยนแปลงการเบลอพื้นหลังในอุปกรณ์สื่อที่ผู้ใช้ให้สิทธิ์เข้าถึง

// Prompt the user to grant access to a camera.
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
// Show camera video feed to the user (optional).
document.querySelector("video").srcObject = stream;

// Read current background blur value.
const [track] = stream.getVideoTracks();
let { backgroundBlur } = track.getSettings();
console.log(`Background blur is ${backgroundBlur ? "ON" : "OFF"}`);

// Listen to background blur changes.
track.addEventListener("configurationchange", () => {
  if (backgroundBlur !== track.getSettings().backgroundBlur) {
    backgroundBlur = track.getSettings().backgroundBlur;
    console.log(`Background blur is now ${backgroundBlur ? "ON" : "OFF"}`);
  }
});

เปิด/ปิดการเบลอพื้นหลัง

ความสามารถของอาร์เรย์ backgroundBlur ใน MediaStreamTrack ช่วยให้คุณทราบว่าคุณควบคุมการเบลอพื้นหลังในอุปกรณ์สื่อได้หรือไม่ หากไม่มีการกำหนดค่าหรือมีค่าเพียงค่าเดียว ([true] หรือ [false]) คุณจะควบคุมการเบลอพื้นหลังของกล้องไม่ได้ หากมี 2 ค่า คุณสามารถใช้เมธอด applyConstraints() ใน MediaStreamTrack เพื่อขอให้ระบบปฏิบัติการสลับเอฟเฟกต์เบลอพื้นหลังในฟีดวิดีโอของกล้อง Promise ที่แสดงผลจะแก้ไขเมื่อดำเนินการสำเร็จและปฏิเสธเมื่อเกิดข้อผิดพลาด

ข้อมูลโค้ดต่อไปนี้แสดงวิธีควบคุมการเบลอพื้นหลังของกล้องในอุปกรณ์สื่อที่ผู้ใช้ให้สิทธิ์เข้าถึง

// Prompt the user to grant access to a camera.
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
// Show camera video feed to the user (optional).
document.querySelector("video").srcObject = stream;

// Check whether the user can toggle background blur in the web app.
// If not, note that you may still want to apply it through a fallback
// software solution.
const [track] = stream.getVideoTracks();
if (track.getCapabilities().backgroundBlur?.length === 2) {
  const button = document.querySelector("button");
  button.addEventListener("click", toggleBackgroundBlurButtonClick);
  button.disabled = false;
}

async function toggleBackgroundBlurButtonClick() {
  const constraints = {
    backgroundBlur: !track.getSettings().backgroundBlur,
  };
  // Request operating system to toggle background blur.
  await track.applyConstraints(constraints);
  const newSettings = track.getSettings();
  log(`Background blur is now ${newSettings.backgroundBlur ? "ON" : "OFF"}`);
}

การรองรับแพลตฟอร์ม

Background Blur API พร้อมใช้งานใน Chrome 114 บน ChromeOS, macOS และ Windows

ปัจจุบัน ChromeOS และ macOS อนุญาตให้คุณดูการเปลี่ยนแปลงเบลอพื้นหลังที่ผู้ใช้ทำผ่าน UI ของระบบปฏิบัติการได้เท่านั้น เช่น ศูนย์ควบคุมใน macOS Windows ช่วยให้คุณสังเกตและควบคุมการเบลอพื้นหลังได้

สาธิต

คุณสลับการเปิด/ปิดการเบลอพื้นหลังและสังเกตการเปลี่ยนแปลงได้โดยเล่นกับตัวอย่างอย่างเป็นทางการ (ดังที่ได้กล่าวไว้ก่อนหน้านี้ ความพร้อมใช้งานของฟีเจอร์เหล่านี้ขึ้นอยู่กับการรองรับของแพลตฟอร์ม)

เว็บแอปที่สังเกตการเปลี่ยนแปลงการเบลอพื้นหลังของกล้อง

ความคิดเห็น

ความคิดเห็นของนักพัฒนาแอปมีความสำคัญอย่างยิ่งในขั้นตอนนี้ ดังนั้นโปรดแจ้งปัญหาใน GitHub พร้อมคำแนะนำและคำถาม

เราอยากทราบความคิดเห็นของคุณว่าการแสดงผลเบลอพื้นหลังเป็นค่าบูลีนตรงกับความต้องการของคุณหรือไม่ หรือแนวทางที่ละเอียดยิ่งขึ้น เช่น "อ่อน" "เข้ม" "ปิด" จะเหมาะสมกว่า แม้ว่าอาจใช้ไม่ได้กับสิ่งที่แสดงในระบบปฏิบัติการบางระบบก็ตาม