videocalling

Participant

功能

A person who joins and attends a video meeting, with standard user permissions and capabilities

What is a Participant?

A participant (also called attendee or member) is anyone who joins a video conference meeting. Unlike the host, participants have standard user permissions and limited control over meeting settings. Participants can see and hear other attendees, communicate through audio/video, share content (if permitted), and use collaboration features, but cannot manage meeting-wide settings or moderate other participants.

The participant role is the default role for most users joining a meeting, with the host having the ability to promote participants to co-hosts or assign additional privileges as needed.

Participant Capabilities

Standard Permissions

Typical capabilities available to all participants:

  • Audio/Video Control: Mute/unmute their own microphone and turn their camera on/off
  • View Other Participants: See video feeds and participant list
  • Screen Sharing: Share their screen (if host has enabled this permission)
  • Chat Messages: Send messages to everyone or specific participants (based on host settings)
  • Reactions: Use emoji reactions, raise hand, or other non-verbal cues
  • View Shared Content: See screens, presentations, or files shared by others
  • Rename Self: Change their own display name
  • Leave Meeting: Exit the meeting at any time

Restricted Actions

Actions participants cannot perform without host privileges:

  • Cannot mute other participants (except themselves)
  • Cannot remove participants from the meeting
  • Cannot admit participants from waiting room
  • Cannot lock the meeting or end it for others
  • Cannot start or stop recording (in most platforms)
  • Cannot create or manage breakout rooms
  • Cannot change meeting-wide settings
  • Cannot promote or demote other participants

Types of Participants

Authenticated Participants

Participants who join with verified identities:

  • Organization Members: Employees or members of the host's organization
  • Invited Guests: External participants with calendar invitations or access links
  • Registered Users: Participants with accounts on the platform
// Join meeting with authentication
const session = await join({
  url: meetingUrl,
  token: authenticatedUserToken,
  userName: 'John Doe',
  userData: {
    role: 'participant',
    email: '[email protected]',
    department: 'Engineering'
  }
});

Anonymous Participants

Participants joining without formal authentication:

  • Guest Users: Join via public link without account
  • Limited Visibility: May have email domain shown instead of full details
  • Additional Screening: May require host approval from waiting room

Special Participant Types

  • Presenters: Participants with elevated permissions to share content (common in webinars)
  • Panelists: Speakers in webinar-style meetings with audience visibility
  • Attendees: View-only participants in large events (can't unmute or share)
  • Interpreters: Participants providing live language interpretation

Participant State Management

Connection States

Participants can be in various connection states:

  • Joining: In the process of connecting to the meeting
  • Waiting: In the waiting room awaiting host admission
  • Active: Connected and participating in the meeting
  • Away: Joined but inactive (may be in another app/tab)
  • Reconnecting: Temporarily disconnected, attempting to rejoin
  • Left: Exited the meeting
// Track participant state changes
socket.on('participant-state-changed', ({ participantId, state, reason }) => {
  updateParticipantUI(participantId, {
    state: state, // 'active', 'away', 'reconnecting'
    lastActivity: Date.now()
  });
  
  if (state === 'reconnecting') {
    showNotification(`${participantName} is reconnecting...`);
  }
});

Media States

  • Audio Muted/Unmuted: Microphone state
  • Video On/Off: Camera state
  • Screen Sharing: Currently sharing screen or not
  • Hand Raised: Requesting to speak
  • Speaking: Currently speaking (detected via audio level)

Participant List and UI

Participant Panel

Most video conferencing applications display participants in a dedicated panel:

  • Sorted List: Alphabetically or by join time, with host typically shown first
  • Status Indicators: Icons showing mute status, hand raised, screen sharing
  • Audio Levels: Visual indicators of who is speaking
  • Connection Quality: Network strength indicators
  • Quick Actions: Buttons for direct messaging, pinning video, etc.
// Participant data structure
const participant = {
  id: 'user-123',
  name: 'John Doe',
  role: 'participant',
  isHost: false,
  audio: {
    muted: false,
    level: 0.75 // 0-1 range
  },
  video: {
    enabled: true,
    quality: 'high'
  },
  connectionQuality: 'good', // 'excellent', 'good', 'poor', 'reconnecting'
  joinTime: 1640000000000,
  handRaised: false,
  reactions: [],
  screenSharing: false
};

Grid vs Gallery View

  • Grid View: Equal-sized tiles for all participants
  • Speaker View: Large view of active speaker, thumbnails of others
  • Gallery View: Paginated grid showing all participants
  • Custom Layouts: Spotlighting specific participants

Participant Interactions

Non-Verbal Communication

Participants use various non-verbal methods to communicate:

  • Raise Hand: Request to speak or ask a question
  • Emoji Reactions: Thumbs up, applause, heart, etc.
  • Status Updates: Away, Do Not Disturb, In a Call
  • Custom Reactions: Platform-specific animated reactions

Chat and Messaging

Participants can send messages with various scopes:

  • Public Chat: Messages visible to all participants
  • Private Messages: Direct messages to specific participants
  • Host-Only Messages: Questions or notes sent only to host/moderators

Polls and Q&A

  • Answer Polls: Respond to surveys or questions
  • Submit Questions: Ask questions in Q&A panel
  • Upvote Questions: Vote on other participants' questions

Implementation in WebRTC

Adding Participant to Meeting

// Server-side: Add participant to meeting
function addParticipant(meetingId, userId, userData) {
  const participant = {
    id: userId,
    name: userData.name,
    email: userData.email,
    role: 'participant',
    joinTime: Date.now(),
    mediaState: {
      audioMuted: true, // Muted by default
      videoEnabled: false
    },
    permissions: getParticipantPermissions(meetingId)
  };
  
  // Add to meeting participants list
  meetings.get(meetingId).participants.set(userId, participant);
  
  // Notify existing participants
  broadcastToMeeting(meetingId, {
    type: 'participant-joined',
    participant: participant
  }, userId); // Exclude the joining user
  
  // Send participant list to new user
  sendToUser(userId, {
    type: 'meeting-joined',
    meeting: getMeetingInfo(meetingId),
    participants: Array.from(meetings.get(meetingId).participants.values())
  });
  
  return participant;
}

Participant Permissions

// Define participant permissions based on meeting settings
function getParticipantPermissions(meetingId) {
  const settings = getMeetingSettings(meetingId);
  
  return {
    canShareScreen: settings.allowParticipantScreenShare,
    canChat: settings.chatEnabled,
    canSendPrivateMessages: settings.allowPrivateChat,
    canRaiseHand: true,
    canReact: settings.reactionsEnabled,
    canRenameself: settings.allowRename,
    canUnmuteSelf: settings.allowUnmute || false,
    canEnableVideo: settings.allowVideo !== false
  };
}

Participant Limits

Platform-Specific Maximums

  • Zoom: Up to 1,000 participants (varies by plan), 49 videos on screen
  • Google Meet: Up to 500 participants (Enterprise), 49 tiles in grid
  • Microsoft Teams: Up to 10,000 view-only attendees (webinar mode), 1,000 interactive
  • Webex: Up to 100,000 view-only, 1,000 interactive

Performance Considerations

  • Video Rendering: Browser limits on simultaneous video decodes (typically 25-49)
  • Bandwidth: More participants = more streams to receive (in P2P or SFU)
  • CPU Usage: Each video decode requires CPU resources
  • UI Complexity: Large participant lists require virtual scrolling and pagination

Best Practices for Participants

Meeting Etiquette

  1. Join on Time: Arrive a few minutes early to test equipment
  2. Mute When Not Speaking: Reduce background noise
  3. Use Video: Enable camera for better engagement (when appropriate)
  4. Professional Background: Use virtual background or ensure clean environment
  5. Dress Appropriately: Dress as you would for in-person meeting
  6. Minimize Distractions: Close unnecessary apps, silence phone

Engagement Tips

  • Use Reactions: Provide non-verbal feedback to avoid interruptions
  • Raise Hand: Wait to be recognized rather than interrupting
  • Use Chat Thoughtfully: Share links and ask questions without disrupting flow
  • Pay Attention: Don't multitask excessively, stay engaged

Accessibility for Participants

  • Closed Captions: Enable live captions for hearing impaired
  • Screen Readers: Support for visually impaired participants
  • Keyboard Shortcuts: Quick access to mute, camera, hand raise
  • High Contrast Modes: Visual accessibility options
  • ASL Interpretation: Pin interpreter for deaf participants

References

相關術語