คณะกรรมการโครงการ Amazon Chime SDK
ส่วนประกอบการตอบสนองของ Amazon Chime SDK
Amazon Chime SDK คือชุดส่วนประกอบการสื่อสารแบบเรียลไทม์ที่นักพัฒนาสามารถใช้เพื่อเพิ่มความสามารถในการรับส่งข้อความ เสียง วิดีโอ และการแชร์หน้าจอไปยังเว็บหรือแอปพลิเคชันมือถือได้อย่างรวดเร็ว
นักพัฒนาสามารถสร้างบนโครงสร้างพื้นฐานการสื่อสารระดับโลกของ AWS เพื่อมอบประสบการณ์ที่น่าสนใจในแอปพลิเคชันของตน ตัวอย่างเช่น สามารถเพิ่มวิดีโอลงในแอปพลิเคชันด้านสุขภาพ เพื่อให้ผู้ป่วยสามารถปรึกษาแพทย์เกี่ยวกับปัญหาสุขภาพจากระยะไกลกับแพทย์ หรือสร้างเสียงเตือนที่ปรับแต่งเองเพื่อใช้งานร่วมกับเครือข่ายโทรศัพท์สาธารณะได้
Amazon Chime SDK สำหรับ JavaScript ทำงานโดยเชื่อมต่อกับทรัพยากรเซสชันการประชุมที่คุณสร้างในบัญชี AWS ของคุณ SDK มีทุกสิ่งที่คุณต้องการเพื่อสร้างประสบการณ์การโทรและการทำงานร่วมกันแบบกำหนดเองในเว็บแอปพลิเคชันของคุณ รวมถึงวิธีกำหนดค่าเซสชันการประชุม แสดงรายการและเลือกอุปกรณ์เสียงและวิดีโอ เริ่มและหยุดการแชร์หน้าจอและการดูการแชร์หน้าจอ รับการโทรกลับเมื่อมีกิจกรรมสื่อ เช่น การเปลี่ยนแปลงระดับเสียงเกิดขึ้น และควบคุมคุณสมบัติการประชุม เช่น การปิดเสียงและการผูกไทล์วิดีโอ
หากคุณกำลังสร้างแอปพลิเคชัน React ให้ลองใช้ Amazon Chime SDK React Component Library ที่ให้การจัดการสถานะฝั่งไคลเอ็นต์และส่วนประกอบ UI ที่นำมาใช้ซ้ำได้สำหรับอินเทอร์เฟซเว็บทั่วไปที่ใช้ในแอปพลิเคชันการประชุมทางเสียงและวิดีโอ Amazon Chime ยังมี Amazon Chime SDK สำหรับ iOS และ Amazon Chime SDK สำหรับ Android สำหรับการพัฒนาแอปพลิเคชันมือถือแบบเนทีฟ
คณะกรรมการโครงการ Amazon Chime SDK จะบันทึกสถานะของคำขอคุณลักษณะของชุมชนทั่วทั้งพื้นที่เก็บข้อมูลของเรา คำอธิบายของคอลัมน์บนกระดานมีอยู่ในคู่มือนี้
นอกเหนือจากด้านล่างนี้ นี่คือรายการบล็อกโพสต์ทั้งหมดเกี่ยวกับ Amazon Chime SDK
คู่มือนักพัฒนาต่อไปนี้ครอบคลุมหัวข้อเฉพาะสำหรับผู้ชมทางเทคนิค
คู่มือนักพัฒนาต่อไปนี้ครอบคลุม Amazon Chime SDK ในวงกว้างมากขึ้น
.js
ไฟล์เดียวตรวจสอบทรัพยากรที่ให้ไว้ใน README และใช้เอกสารประกอบลูกค้าของเราเพื่อเป็นแนวทางในการพัฒนา Chime SDK สำหรับ JavaScript นอกจากนี้ ให้ค้นหาฐานข้อมูลปัญหาและคำถามที่พบบ่อยของเราเพื่อดูว่าปัญหาของคุณได้รับการแก้ไขแล้วหรือไม่ ถ้าไม่โปรดตัดปัญหาให้เราโดยใช้เทมเพลตที่ให้มา
โพสต์ในบล็อก การตรวจสอบและการแก้ไขปัญหาด้วยกิจกรรมการประชุม Amazon Chime SDK มีรายละเอียดเกี่ยวกับวิธีการใช้กิจกรรมการประชุมเพื่อแก้ไขปัญหาแอปพลิเคชันของคุณโดยเข้าสู่ระบบ Amazon CloudWatch
หากคุณมีคำถามเพิ่มเติมหรือต้องการการสนับสนุนสำหรับธุรกิจของคุณ โปรดติดต่อฝ่ายสนับสนุนลูกค้า AWS คุณสามารถตรวจสอบแผนการสนับสนุนของเราได้ที่นี่
Amazon Chime SDK สำหรับ JavaScript ใช้ WebRTC ซึ่งเป็น API การสื่อสารแบบเรียลไทม์ที่รองรับในเบราว์เซอร์สมัยใหม่ส่วนใหญ่ ต่อไปนี้เป็นแหล่งข้อมูลทั่วไปบางส่วนเกี่ยวกับ WebRTC
ตรวจสอบให้แน่ใจว่าคุณมี Node.js เวอร์ชัน 18 ขึ้นไป แนะนำและรองรับโหนด 20
หากต้องการเพิ่ม Amazon Chime SDK สำหรับ JavaScript ลงในแอปพลิเคชันที่มีอยู่ ให้ติดตั้งแพ็คเกจโดยตรงจาก npm:
npm install amazon-chime-sdk-js --save
โปรดทราบว่า Amazon Chime SDK สำหรับ JavaScript กำหนดเป้าหมายไปที่ ES2015 ซึ่งเข้ากันได้อย่างสมบูรณ์กับเบราว์เซอร์ที่รองรับทั้งหมด
สร้างเซสชันการประชุมในแอปพลิเคชันไคลเอ็นต์ของคุณ
import {
ConsoleLogger ,
DefaultDeviceController ,
DefaultMeetingSession ,
LogLevel ,
MeetingSessionConfiguration
} from 'amazon-chime-sdk-js' ;
const logger = new ConsoleLogger ( 'MyLogger' , LogLevel . INFO ) ;
const deviceController = new DefaultDeviceController ( logger ) ;
// You need responses from server-side Chime API. See below for details.
const meetingResponse = /* The response from the CreateMeeting API action */ ;
const attendeeResponse = /* The response from the CreateAttendee or BatchCreateAttendee API action */ ;
const configuration = new MeetingSessionConfiguration ( meetingResponse , attendeeResponse ) ;
// In the usage examples below, you will use this meetingSession object.
const meetingSession = new DefaultMeetingSession (
configuration ,
logger ,
deviceController
) ;
คุณสามารถใช้ AWS SDK, AWS Command Line Interface (AWS CLI) หรือ REST API เพื่อทำการเรียก API ในส่วนนี้ คุณจะใช้ AWS SDK สำหรับ JavaScript ในแอปพลิเคชันเซิร์ฟเวอร์ของคุณ เช่น Node.js ดูการอ้างอิง Amazon Chime SDK API สำหรับข้อมูลเพิ่มเติม
แอปพลิเคชันเซิร์ฟเวอร์ไม่จำเป็นต้องใช้ Amazon Chime SDK สำหรับ JavaScript
const AWS = require ( 'aws-sdk' ) ;
const { v4 : uuid } = require ( 'uuid' ) ;
// You must use "us-east-1" as the region for Chime API and set the endpoint.
const chime = new AWS . ChimeSDKMeetings ( { region : 'us-east-1' } ) ;
const meetingResponse = await chime
. createMeeting ( {
ClientRequestToken : uuid ( ) ,
MediaRegion : 'us-west-2' , // Specify the region in which to create the meeting.
} )
. promise ( ) ;
const attendeeResponse = await chime
. createAttendee ( {
MeetingId : meetingResponse . Meeting . MeetingId ,
ExternalUserId : uuid ( ) , // Link the attendee to an identity managed by your application.
} )
. promise ( ) ;
ตอนนี้ถ่ายโอนออบเจ็กต์ meetingResponse
และ attendeeResponse
ไปยังแอปพลิเคชันไคลเอ็นต์ของคุณอย่างปลอดภัยแล้ว ออบเจ็กต์เหล่านี้มีข้อมูลทั้งหมดที่จำเป็นสำหรับแอปพลิเคชันไคลเอนต์ที่ใช้ Amazon Chime SDK สำหรับ JavaScript เพื่อเข้าร่วมการประชุม
ค่าของพารามิเตอร์ MediaRegion ใน createMeeting() ควรตั้งค่าเป็นขอบเขตสื่อหนึ่งซึ่งใกล้กับผู้ใช้ที่สร้างการประชุมมากที่สุด คุณสามารถดูการใช้งานได้ในหัวข้อ 'การเลือกภูมิภาคสื่อที่ใกล้ที่สุด' ในเอกสารประกอบภูมิภาคสื่อของ Amazon Chime SDK
สร้างเซสชันการรับส่งข้อความในแอปพลิเคชันไคลเอ็นต์ของคุณเพื่อรับข้อความจาก Amazon Chime SDK for Messaging
import { ChimeSDKMessagingClient } from '@aws-sdk/client-chime-sdk-messaging' ;
import {
ConsoleLogger ,
DefaultMessagingSession ,
LogLevel ,
MessagingSessionConfiguration ,
} from 'amazon-chime-sdk-js' ;
const logger = new ConsoleLogger ( 'SDK' , LogLevel . INFO ) ;
// You will need AWS credentials configured before calling AWS or Amazon Chime APIs.
const chime = new ChimeSDKMessagingClient ( { region : 'us-east-1' } ) ;
const userArn = /* The userArn */ ;
const sessionId = /* The sessionId */ ;
const configuration = new MessagingSessionConfiguration ( userArn , sessionId , undefined , chime ) ;
const messagingSession = new DefaultMessagingSession ( configuration , logger ) ;
หากคุณต้องการเปิดใช้งานคุณสมบัติการดึงข้อมูลล่วงหน้าเมื่อเชื่อมต่อกับเซสชันการรับส่งข้อความ คุณสามารถทำตามโค้ดด้านล่างนี้ คุณสมบัติการดึงข้อมูลล่วงหน้าจะส่งเหตุการณ์ CHANNEL_DETAILS ออกไปเมื่อเชื่อมต่อ websocket ซึ่งรวมถึงข้อมูลเกี่ยวกับช่อง ข้อความของช่อง ความเป็นสมาชิกของช่อง ฯลฯ ลำดับการดึงข้อมูลล่วงหน้าสามารถปรับได้ด้วย prefetchSortBy
โดยตั้งค่าเป็นยัง unread
(ค่าเริ่มต้น หากไม่ได้ตั้งค่า) หรือ lastMessageTimestamp
configuration . prefetchOn = Prefetch . Connect ;
configuration . prefetchSortBy = PrefetchSortBy . Unread ;
git fetch --tags https://github.com/aws/amazon-chime-sdk-js
npm run build
npm run test
หลังจากรัน npm run test
ในครั้งแรก คุณสามารถใช้ npm run test:fast
เพื่อเร่งความเร็วชุดการทดสอบ
แท็กจะถูกดึงเพื่อสร้างข้อมูลเมตาการกำหนดเวอร์ชันอย่างถูกต้อง
หากต้องการดูผลลัพธ์การครอบคลุมโค้ด ให้เปิด coverage/index.html
ในเบราว์เซอร์ของคุณหลังจากรัน npm run test
หากคุณรัน npm run test
และการทดสอบกำลังทำงานอยู่ แต่ไม่ได้สร้างรายงานความครอบคลุม คุณอาจประสบปัญหาการล้างข้อมูลทรัพยากร ใน Mocha v4.0.0 หรือใหม่กว่า การใช้งานมีการเปลี่ยนแปลงเพื่อให้กระบวนการ Mocha จะไม่บังคับให้ออกเมื่อการทดสอบดำเนินการเสร็จสมบูรณ์
ตัวอย่างเช่น หากคุณมี DefaultVideoTransformDevice
ในการทดสอบหน่วย คุณต้องเรียก await device.stop();
เพื่อล้างทรัพยากรและไม่ให้เกิดปัญหานี้ คุณสามารถดูการใช้งานของ done();
ในเอกสาร Mocha
หากต้องการสร้างเอกสารอ้างอิง JavaScript API ให้รัน:
npm run build
npm run doc
จากนั้นเปิด docs/index.html
ในเบราว์เซอร์ของคุณ
หากคุณพบปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นในโปรเจ็กต์นี้ เราขอให้คุณแจ้ง AWS/Amazon Security ผ่านทางหน้าการรายงานช่องโหว่ของเรา กรุณา อย่า สร้างปัญหา GitHub สาธารณะ
หมายเหตุ: ก่อนเริ่มเซสชั่น คุณต้องเลือกไมโครโฟน ลำโพง และกล้องของคุณ
กรณีการใช้งาน 1. แสดงรายการอุปกรณ์อินพุตเสียง เอาต์พุตเสียง และอุปกรณ์อินพุตวิดีโอ เบราว์เซอร์จะขอสิทธิ์ไมโครโฟนและกล้อง
เมื่อตั้งค่าพารามิเตอร์ forceUpdate
เป็นจริง ข้อมูลอุปกรณ์ที่แคชไว้จะถูกยกเลิกและอัปเดตหลังจากเรียกทริกเกอร์ป้ายกำกับอุปกรณ์ ในบางกรณี ผู้สร้างจำเป็นต้องชะลอการเรียกใช้กล่องโต้ตอบสิทธิ์ เช่น เมื่อเข้าร่วมการประชุมในโหมดดูอย่างเดียว จากนั้นจึงจะสามารถเรียกใช้พร้อมท์สิทธิ์เพื่อแสดงป้ายกำกับอุปกรณ์ได้ในภายหลัง การระบุ forceUpdate
อนุญาตให้สิ่งนี้เกิดขึ้น
const audioInputDevices = await meetingSession . audioVideo . listAudioInputDevices ( ) ;
const audioOutputDevices = await meetingSession . audioVideo . listAudioOutputDevices ( ) ;
const videoInputDevices = await meetingSession . audioVideo . listVideoInputDevices ( ) ;
// An array of MediaDeviceInfo objects
audioInputDevices . forEach ( mediaDeviceInfo => {
console . log ( `Device ID: ${ mediaDeviceInfo . deviceId } Microphone: ${ mediaDeviceInfo . label } ` ) ;
} ) ;
ใช้กรณีที่ 2 เลือกอุปกรณ์อินพุตเสียงและเอาต์พุตเสียงโดยส่ง deviceId
ของออบเจ็กต์ MediaDeviceInfo
โปรดทราบว่าคุณต้องเรียก listAudioInputDevices
และ listAudioOutputDevices
ก่อน
const audioInputDeviceInfo = /* An array item from meetingSession.audioVideo.listAudioInputDevices */ ;
await meetingSession . audioVideo . startAudioInput ( audioInputDeviceInfo . deviceId ) ;
const audioOutputDeviceInfo = /* An array item from meetingSession.audioVideo.listAudioOutputDevices */ ;
await meetingSession . audioVideo . chooseAudioOutput ( audioOutputDeviceInfo . deviceId ) ;
ใช้กรณีที่ 3 เลือกอุปกรณ์อินพุตวิดีโอโดยส่ง deviceId
ของออบเจ็กต์ MediaDeviceInfo
โปรดทราบว่าคุณต้องเรียก listVideoInputDevices
ก่อน
หากมีไฟ LED อยู่ข้างกล้องของผู้เข้าร่วม ไฟจะเปิดขึ้นเพื่อระบุว่าขณะนี้กำลังจับภาพจากกล้อง คุณอาจต้องการเลือกอุปกรณ์อินพุตวิดีโอเมื่อคุณเริ่มแชร์วิดีโอ
const videoInputDeviceInfo = /* An array item from meetingSession.audioVideo.listVideoInputDevices */ ;
await meetingSession . audioVideo . startVideoInput ( videoInputDeviceInfo . deviceId ) ;
// Stop video input. If the previously chosen camera has an LED light on,
// it will turn off indicating the camera is no longer capturing.
await meetingSession . audioVideo . stopVideoInput ( ) ;
ใช้กรณีที่ 4 เพิ่มผู้สังเกตการณ์การเปลี่ยนแปลงอุปกรณ์เพื่อรับรายการอุปกรณ์ที่อัปเดต ตัวอย่างเช่น เมื่อคุณจับคู่ชุดหูฟัง Bluetooth กับคอมพิวเตอร์ของคุณ ระบบจะเรียก audioInputsChanged
และ audioOutputsChanged
พร้อมกับรายการอุปกรณ์ซึ่งรวมถึงชุดหูฟังด้วย
คุณสามารถใช้การเรียกกลับ audioInputMuteStateChanged
เพื่อติดตามสถานะการปิดเสียงฮาร์ดแวร์พื้นฐานบนเบราว์เซอร์และระบบปฏิบัติการที่รองรับสิ่งนั้น
const observer = {
audioInputsChanged : freshAudioInputDeviceList => {
// An array of MediaDeviceInfo objects
freshAudioInputDeviceList . forEach ( mediaDeviceInfo => {
console . log ( `Device ID: ${ mediaDeviceInfo . deviceId } Microphone: ${ mediaDeviceInfo . label } ` ) ;
} ) ;
} ,
audioOutputsChanged : freshAudioOutputDeviceList => {
console . log ( 'Audio outputs updated: ' , freshAudioOutputDeviceList ) ;
} ,
videoInputsChanged : freshVideoInputDeviceList => {
console . log ( 'Video inputs updated: ' , freshVideoInputDeviceList ) ;
} ,
audioInputMuteStateChanged : ( device , muted ) => {
console . log ( 'Device' , device , muted ? 'is muted in hardware' : 'is not muted' ) ;
} ,
} ;
meetingSession . audioVideo . addDeviceChangeObserver ( observer ) ;
ใช้กรณีที่ 5 เริ่มเซสชัน หากต้องการฟังเสียง คุณต้องผูกอุปกรณ์และสตรีมไปยังองค์ประกอบ <audio>
เมื่อเซสชั่นเริ่มต้นแล้ว คุณสามารถพูดคุยและฟังผู้เข้าร่วมประชุมได้ ตรวจสอบให้แน่ใจว่าคุณได้เลือกไมโครโฟนและลำโพงของคุณแล้ว (ดูส่วน "อุปกรณ์") และมีผู้เข้าร่วมอย่างน้อยหนึ่งคนเข้าร่วมเซสชั่น
const audioElement = /* HTMLAudioElement object e.g. document.getElementById('audio-element-id') */ ;
meetingSession . audioVideo . bindAudioElement ( audioElement ) ;
const observer = {
audioVideoDidStart : ( ) => {
console . log ( 'Started' ) ;
}
} ;
meetingSession . audioVideo . addObserver ( observer ) ;
meetingSession . audioVideo . start ( ) ;
ใช้กรณีที่ 6 เพิ่มผู้สังเกตการณ์เพื่อรับเหตุการณ์วงจรการใช้งานเซสชัน: การเชื่อมต่อ เริ่มต้น และหยุด
หมายเหตุ: คุณสามารถลบผู้สังเกตการณ์ได้โดยการเรียก
meetingSession.audioVideo.removeObserver(observer)
ในสถาปัตยกรรมแบบอิงส่วนประกอบ (เช่น React, Vue และ Angular) คุณอาจต้องเพิ่มผู้สังเกตการณ์เมื่อประกอบส่วนประกอบ และถอดออกเมื่อยกเลิกการต่อเชื่อม
const observer = {
audioVideoDidStart : ( ) => {
console . log ( 'Started' ) ;
} ,
audioVideoDidStop : sessionStatus => {
// See the "Stopping a session" section for details.
console . log ( 'Stopped with a session status code: ' , sessionStatus . statusCode ( ) ) ;
} ,
audioVideoDidStartConnecting : reconnecting => {
if ( reconnecting ) {
// e.g. the WiFi connection is dropped.
console . log ( 'Attempting to reconnect' ) ;
}
} ,
} ;
meetingSession . audioVideo . addObserver ( observer ) ;
หมายเหตุ: จนถึงขณะนี้ คุณได้เพิ่มผู้สังเกตการณ์เพื่อรับเหตุการณ์วงจรการใช้งานอุปกรณ์และเซสชัน ในกรณีการใช้งานต่อไปนี้ คุณจะใช้วิธีการ API แบบเรียลไทม์เพื่อส่งและรับตัวบ่งชี้ระดับเสียงและควบคุมสถานะการปิดเสียง
ใช้กรณีที่ 7 ปิดและเปิดเสียงอินพุตเสียง
// Mute
meetingSession . audioVideo . realtimeMuteLocalAudio ( ) ;
// Unmute
const unmuted = meetingSession . audioVideo . realtimeUnmuteLocalAudio ( ) ;
if ( unmuted ) {
console . log ( 'Other attendees can hear your audio' ) ;
} else {
// See the realtimeSetCanUnmuteLocalAudio use case below.
console . log ( 'You cannot unmute yourself' ) ;
}
ใช้กรณีที่ 8 หากต้องการตรวจสอบว่าไมโครโฟนในเครื่องปิดอยู่หรือไม่ ให้ใช้วิธีนี้แทนที่จะติดตามสถานะการปิดเสียงของคุณเอง
const muted = meetingSession . audioVideo . realtimeIsLocalAudioMuted ( ) ;
if ( muted ) {
console . log ( 'You are muted' ) ;
} else {
console . log ( 'Other attendees can hear your audio' ) ;
}
ใช้กรณีที่ 9 ปิดใช้งานการเปิดเสียง หากคุณต้องการป้องกันไม่ให้ผู้ใช้เปิดเสียงตนเอง (เช่น ระหว่างการนำเสนอ) ให้ใช้วิธีการเหล่านี้แทนที่จะติดตามสถานะเปิดเสียงของคุณเอง
meetingSession . audioVideo . realtimeSetCanUnmuteLocalAudio ( false ) ;
// Optional: Force mute.
meetingSession . audioVideo . realtimeMuteLocalAudio ( ) ;
const unmuted = meetingSession . audioVideo . realtimeUnmuteLocalAudio ( ) ;
console . log ( ` ${ unmuted } is false. You cannot unmute yourself` ) ;
ใช้กรณีที่ 10 สมัครรับข้อมูลการเปลี่ยนแปลงปริมาณของผู้เข้าร่วมรายใดรายหนึ่ง คุณสามารถใช้สิ่งนี้เพื่อสร้าง UI ตัวบ่งชี้ปริมาณแบบเรียลไทม์
import { DefaultModality } from 'amazon-chime-sdk-js' ;
// This is your attendee ID. You can also subscribe to another attendee's ID.
// See the "Attendees" section for an example on how to retrieve other attendee IDs
// in a session.
const presentAttendeeId = meetingSession . configuration . credentials . attendeeId ;
meetingSession . audioVideo . realtimeSubscribeToVolumeIndicator (
presentAttendeeId ,
( attendeeId , volume , muted , signalStrength ) => {
const baseAttendeeId = new DefaultModality ( attendeeId ) . base ( ) ;
if ( baseAttendeeId !== attendeeId ) {
// See the "Screen and content share" section for details.
console . log ( `The volume of ${ baseAttendeeId } 's content changes` ) ;
}
// A null value for any field means that it has not changed.
console . log ( ` ${ attendeeId } 's volume data: ` , {
volume , // a fraction between 0 and 1
muted , // a boolean
signalStrength , // 0 (no signal), 0.5 (weak), 1 (strong)
} ) ;
}
) ;
ใช้กรณีที่ 11 สมัครสมาชิกเพื่อปิดเสียงหรือการเปลี่ยนแปลงความแรงของสัญญาณของผู้เข้าร่วมที่ระบุ คุณสามารถใช้สิ่งนี้เพื่อสร้าง UI สำหรับการปิดเสียงเท่านั้นหรือการเปลี่ยนแปลงความแรงของสัญญาณเท่านั้น
// This is your attendee ID. You can also subscribe to another attendee's ID.
// See the "Attendees" section for an example on how to retrieve other attendee IDs
// in a session.
const presentAttendeeId = meetingSession . configuration . credentials . attendeeId ;
// To track mute changes
meetingSession . audioVideo . realtimeSubscribeToVolumeIndicator (
presentAttendeeId ,
( attendeeId , volume , muted , signalStrength ) => {
// A null value for volume, muted and signalStrength field means that it has not changed.
if ( muted === null ) {
// muted state has not changed, ignore volume and signalStrength changes
return ;
}
// mute state changed
console . log ( ` ${ attendeeId } 's mute state changed: ` , {
muted , // a boolean
} ) ;
}
) ;
// To track signal strength changes
meetingSession . audioVideo . realtimeSubscribeToVolumeIndicator (
presentAttendeeId ,
( attendeeId , volume , muted , signalStrength ) => {
// A null value for volume, muted and signalStrength field means that it has not changed.
if ( signalStrength === null ) {
// signalStrength has not changed, ignore volume and muted changes
return ;
}
// signal strength changed
console . log ( ` ${ attendeeId } 's signal strength changed: ` , {
signalStrength , // 0 (no signal), 0.5 (weak), 1 (strong)
} ) ;
}
) ;
ใช้กรณีที่ 12 ตรวจหาผู้พูดที่ใช้งานมากที่สุด ตัวอย่างเช่น คุณสามารถขยายองค์ประกอบวิดีโอของผู้พูดที่ใช้งานอยู่ได้ หากมี
import { DefaultActiveSpeakerPolicy } from 'amazon-chime-sdk-js' ;
const activeSpeakerCallback = attendeeIds => {
if ( attendeeIds . length ) {
console . log ( ` ${ attendeeIds [ 0 ] } is the most active speaker` ) ;
}
} ;
meetingSession . audioVideo . subscribeToActiveSpeakerDetector (
new DefaultActiveSpeakerPolicy ( ) ,
activeSpeakerCallback
) ;
หมายเหตุ: ในแง่ Chime SDK ไทล์วิดีโอจะเป็น o