MediaSFU Logo

pub.dev version MIT License Flutter 3.3+ Dart 3.3+

MediaSFU Flutter SDK

mediasfu_sdk is the official Flutter WebRTC SDK for building MediaSFU-powered video conferencing, webinar, broadcast, live streaming, chat, whiteboard, recording, translation, and AI-assisted meeting experiences across Android, iOS, Web, macOS, Windows, and Linux.

Why Teams Choose MediaSFU

  • Start with a prebuilt room UI, then move to headless or deeply customized layouts when your product matures.
  • Use MediaSFU Cloud for managed infrastructure or localLink for self-hosted MediaSFU Open and proxy-backed deployments.
  • Ship one SDK for voice, video, chat, screen sharing, whiteboard, breakout rooms, recording, real-time translation, and AI-adjacent meeting workflows.
  • Lean on public docs, generated API docs, sandbox tools, and the MediaSFU community forum when integration questions come up.

Search-Friendly Use Cases

Developers usually arrive here looking for one or more of these real use cases:

  • Flutter video conferencing SDK
  • Flutter WebRTC SDK
  • Flutter webinar SDK
  • Flutter broadcast or live streaming SDK
  • Flutter chat and meeting room SDK
  • Flutter whiteboard and collaboration SDK
  • Flutter real-time translation SDK
  • Flutter headless video room SDK
  • Flutter AI meeting or AI notes integration surface

The package is designed for three integration styles:

Integration style Use this when Main APIs
Prebuilt UI You want a complete room UI quickly MediasfuGeneric, MediasfuConference, MediasfuWebinar, MediasfuBroadcast, MediasfuChat, ModernMediasfuGeneric
Headless runtime You want MediaSFU connection/media logic but your own UI returnUI: false, updateSourceParameters, MediasfuParameters
Custom UI with SDK components You want to replace selected cards, modals, or layouts custom builders, MediasfuUICustomOverrides, exported components

For the full long-form guide, see README_DETAILED.md. For native permissions and platform setup, see PLATFORM_SETUP.md.

Table Of Contents

Install

flutter pub add mediasfu_sdk

Minimum package requirements:

Requirement Version
Dart >=3.3.3 <4.0.0
Flutter >=1.17.0

Use the package barrel import in application code:

import 'package:mediasfu_sdk/mediasfu_sdk.dart';

Optional features may need extra dependencies in your app:

# Android / iOS virtual backgrounds
google_mlkit_selfie_segmentation: ^0.10.0

# Web whiteboard and capture helpers
web: ^1.1.1
dart_webrtc: ^1.4.6

Backend Model

MediaSFU is not a standalone offline video widget. The Flutter package needs a MediaSFU-compatible backend for room creation, signaling, media routing, and runtime coordination.

Backend Best for What the Flutter app passes
MediaSFU Cloud Managed production rooms with minimal infrastructure Credentials(apiUserName, apiKey)
MediaSFU Open / self-hosted On-premise, private, or custom backend deployments localLink, and optional local auth fields such as localAppKey, localApiUserName, localApiKey, localSubUserName
Your backend proxy Production apps that should not expose privileged API keys App-specific token/room data returned by your backend, then passed into SDK options

The built-in helper endpoints are:

Helper MediaSFU Cloud endpoint Self-hosted endpoint when localLink is not a MediaSFU domain
createRoomOnMediaSFU https://mediasfu.com/v1/rooms ${localLink}/createRoom
joinRoomOnMediaSFU https://mediasfu.com/v1/rooms/ ${localLink}/joinRoom

Security note: avoid embedding privileged production credentials in public clients unless that is an intentional part of your architecture. A backend proxy is usually safer for production mobile and web apps.

Quick Start: Prebuilt Room

This is the fastest working path for MediaSFU Cloud.

import 'package:flutter/material.dart';
import 'package:mediasfu_sdk/mediasfu_sdk.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MediasfuGeneric(
        options: MediasfuGenericOptions(
          credentials: Credentials(
            apiUserName: 'your-api-username',
            apiKey: 'your-64-character-api-key',
          ),
        ),
      ),
    );
  }
}

Run it:

flutter run

The default MediasfuGeneric flow shows the pre-join page, lets the user create or join a room, then renders the meeting experience with media controls, chat, participants, recording controls, polls, whiteboard, and related modals.

Try The UI Without A Live Room

Use local UI mode when you want to test layouts, demos, screenshots, or custom components without connecting to a live room.

MediasfuGeneric(
  options: MediasfuGenericOptions(
    useLocalUIMode: true,
    useSeed: true,
    seedData: SeedData(
      member: 'Demo User',
      eventType: EventType.conference,
    ),
  ),
)

This is useful for frontend work, visual QA, and rapid prototyping. It does not replace a real backend validation pass before release.

Choose A Room Widget

Start with MediasfuGeneric or ModernMediasfuGeneric when you are still shaping the product. Move to the event-specific widgets when the room type is fixed.

Widget Use case
MediasfuGeneric General room experience that can support multiple event types
ModernMediasfuGeneric Modern UI path with extra translation, fixed-link, and navigation options
MediasfuConference Meeting and team collaboration rooms
MediasfuWebinar Host, panelist, and attendee workflows
MediasfuBroadcast Broadcast and one-to-many streaming experiences
MediasfuChat Chat-first rooms with optional media workflows

Example:

MediasfuConference(
  options: MediasfuConferenceOptions(
    credentials: Credentials(
      apiUserName: 'your-api-username',
      apiKey: 'your-64-character-api-key',
    ),
  ),
)

Modern UI example:

ModernMediasfuGeneric(
  options: ModernMediasfuGenericOptions(
    credentials: Credentials(
      apiUserName: 'your-api-username',
      apiKey: 'your-64-character-api-key',
    ),
    initialMeetingId: 'optional-room-id',
    onBack: () {
      // Route back with your app router.
    },
  ),
)

Headless Mode

Set returnUI: false when your app should own the visual interface while MediaSFU owns connection setup, room state, media state, and helper methods.

import 'package:flutter/material.dart';
import 'package:mediasfu_sdk/mediasfu_sdk.dart';

class HeadlessMeeting extends StatefulWidget {
  const HeadlessMeeting({super.key});

  @override
  State<HeadlessMeeting> createState() => _HeadlessMeetingState();
}

class _HeadlessMeetingState extends State<HeadlessMeeting> {
  MediasfuParameters? parameters;

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        MediasfuGeneric(
          options: MediasfuGenericOptions(
            credentials: Credentials(
              apiUserName: 'your-api-username',
              apiKey: 'your-64-character-api-key',
            ),
            returnUI: false,
            updateSourceParameters: (nextParameters) {
              setState(() => parameters = nextParameters);
            },
          ),
        ),
        if (parameters == null)
          const Center(child: CircularProgressIndicator())
        else
          MyMeetingSurface(parameters: parameters!),
      ],
    );
  }
}

class MyMeetingSurface extends StatelessWidget {
  final MediasfuParameters parameters;

  const MyMeetingSurface({super.key, required this.parameters});

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Text('Room: ${parameters.roomName}'),
        Text('Participants: ${parameters.participants.length}'),
        ElevatedButton(
          onPressed: () => parameters.updateIsMessagesModalVisible(true),
          child: const Text('Open chat'),
        ),
      ],
    );
  }
}

For headless mode you usually provide one of these pre-join payloads:

MediasfuGeneric(
  options: MediasfuGenericOptions(
    returnUI: false,
    credentials: credentials,
    noUIPreJoinOptionsCreate: CreateMediaSFURoomOptions(
      action: 'create',
      duration: 60,
      capacity: 25,
      userName: 'Host User',
      eventType: EventType.conference,
    ),
    updateSourceParameters: (parameters) {
      // Store parameters in app state.
    },
  ),
)

or:

MediasfuGeneric(
  options: MediasfuGenericOptions(
    returnUI: false,
    credentials: credentials,
    noUIPreJoinOptionsJoin: JoinMediaSFURoomOptions(
      action: 'join',
      meetingID: 'room-id',
      userName: 'Guest User',
    ),
    updateSourceParameters: (parameters) {
      // Store parameters in app state.
    },
  ),
)

Create And Join Rooms Programmatically

You can call the room helpers directly when your app has its own lobby, schedule screen, or invite flow.

final createResult = await createRoomOnMediaSFU(
  CreateMediaSFUOptions(
    apiUserName: 'your-api-username',
    apiKey: 'your-64-character-api-key',
    payload: CreateMediaSFURoomOptions(
      action: 'create',
      duration: 60,
      capacity: 25,
      userName: 'Host User',
      eventType: EventType.conference,
      supportTranslation: true,
    ),
  ),
);

if (createResult.success) {
  final room = createResult.data as CreateJoinRoomResponse;
  debugPrint('Created ${room.roomName}: ${room.link}');
} else {
  final error = createResult.data as CreateJoinRoomError;
  debugPrint('Room creation failed: ${error.error}');
}

Join an existing room:

final joinResult = await joinRoomOnMediaSFU(
  JoinMediaSFUOptions(
    apiUserName: 'your-api-username',
    apiKey: 'your-64-character-api-key',
    payload: JoinMediaSFURoomOptions(
      action: 'join',
      meetingID: 'room-id',
      userName: 'Guest User',
    ),
  ),
);

if (joinResult.success) {
  final room = joinResult.data as CreateJoinRoomResponse;
  debugPrint('Joined ${room.roomName}');
}

Self-Hosted MediaSFU Open

Use localLink for self-hosted or proxy-backed deployments.

MediasfuGeneric(
  options: MediasfuGenericOptions(
    localLink: 'https://media.example.com',
    connectMediaSFU: true,
    credentials: Credentials(
      apiUserName: 'proxy-or-local-user',
      apiKey: 'your-64-character-api-key',
    ),
  ),
)

Modern self-hosted example with local socket handshake fields:

ModernMediasfuGeneric(
  options: ModernMediasfuGenericOptions(
    localLink: 'https://media.example.com',
    connectMediaSFU: true,
    credentials: credentials,
    localAppKey: 'your-app-key',
    localApiUserName: 'local-api-user',
    localApiKey: 'local-api-key',
    localSubUserName: 'team-member',
    useFixedLink: true,
    initialMeetingId: 'room-id',
  ),
)

When localLink is set to a non-MediaSFU domain, createRoomOnMediaSFU uses ${localLink}/createRoom and joinRoomOnMediaSFU uses ${localLink}/joinRoom.

Platform Setup

Most media failures are caused by missing host-app permissions. Configure each target platform before testing production flows.

Platform Required setup
Android Camera, microphone, internet permissions; min SDK and ProGuard rules as needed
iOS NSCameraUsageDescription, NSMicrophoneUsageDescription, local network permissions if applicable
macOS Camera, microphone, and network entitlements
Web HTTPS in production, browser media permissions, CORS for self-hosted servers
Windows Flutter desktop setup and camera/microphone device permissions
Linux Flutter desktop setup plus system media dependencies

See PLATFORM_SETUP.md for copy-ready native configuration snippets.

Common Options

These options appear across the prebuilt room widgets.

Option Type Purpose
credentials Credentials? MediaSFU Cloud or backend auth values
localLink String? Self-hosted/proxy server base URL
connectMediaSFU bool? Whether the SDK should connect to MediaSFU services
returnUI bool? true renders the prebuilt UI; false runs headless
updateSourceParameters Function(MediasfuParameters?)? Receives the runtime helper/state bundle
noUIPreJoinOptionsCreate CreateMediaSFURoomOptions? Create-room payload for headless mode
noUIPreJoinOptionsJoin JoinMediaSFURoomOptions? Join-room payload for headless mode
createMediaSFURoom CreateRoomOnMediaSFUType? Replace the create-room helper
joinMediaSFURoom JoinRoomOnMediaSFUType? Replace the join-room helper
useLocalUIMode bool? Run the UI without live room connections
seedData / useSeed SeedData? / bool? Seed demo participant and room data
customVideoCard VideoCardType? Replace video cards
customAudioCard AudioCardType? Replace audio cards
customMiniCard MiniCardType? Replace mini participant cards
customComponent CustomComponentType? Replace the whole room workspace
containerStyle ContainerStyleOptions? Style the room container
uiOverrides MediasfuUICustomOverrides? Wrap or replace specific SDK widgets/functions

Modern-only extras include useFixedLink, localAppKey, localApiUserName, localApiKey, localSubUserName, initialMeetingId, canUsePersonalTranslation, personalTranslationUsername, userVoiceClones, onBack, and optimizeVideoRecord.

Customization

Replace common media cards

MediasfuGeneric(
  options: MediasfuGenericOptions(
    credentials: credentials,
    customVideoCard: ({
      required participant,
      required stream,
      required width,
      required height,
      imageSize,
      doMirror,
      showControls,
      showInfo,
      name,
      backgroundColor,
      onVideoPress,
      parameters,
    }) {
      return SizedBox(
        width: width,
        height: height,
        child: DecoratedBox(
          decoration: BoxDecoration(
            color: backgroundColor ?? Colors.black,
            border: Border.all(color: Colors.blueAccent, width: 2),
            borderRadius: BorderRadius.circular(12),
          ),
          child: Center(
            child: Text(
              name ?? participant.name,
              style: const TextStyle(color: Colors.white),
            ),
          ),
        ),
      );
    },
  ),
)

The exact builder signatures are exported by the package types. Use your editor autocomplete from package:mediasfu_sdk/mediasfu_sdk.dart for the required parameters.

Wrap one SDK component with MediasfuUICustomOverrides

final overrides = MediasfuUICustomOverrides(
  participantsModal: ComponentOverride<ParticipantsModalOptions>(
    render: (context, options, defaultBuilder) {
      return Theme(
        data: Theme.of(context).copyWith(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.indigo),
        ),
        child: defaultBuilder(context, options),
      );
    },
  ),
);

MediasfuGeneric(
  options: MediasfuGenericOptions(
    credentials: credentials,
    uiOverrides: overrides,
  ),
)

Frequently overridden slots include mainContainer, mainGrid, controlButtons, participantsModal, messagesModal, recordingModal, pollModal, breakoutRoomsModal, configureWhiteboardModal, backgroundModal, preJoinPage, and welcomePage.

Replace the full workspace

MediasfuGeneric(
  options: MediasfuGenericOptions(
    credentials: credentials,
    customComponent: ({required parameters}) {
      return MyFullMeetingWorkspace(parameters: parameters);
    },
  ),
)

Use this when you want MediaSFU to provide the runtime state and methods while your app owns the complete room UI.

Custom icons and Font Awesome v11

The package uses font_awesome_flutter v11. When rendering Font Awesome icons directly, use FaIcon:

import 'package:font_awesome_flutter/font_awesome_flutter.dart';

const FaIcon(FontAwesomeIcons.xmark)

For SDK share button options, both Flutter IconData values and Font Awesome FaIconData values are supported:

ShareButtonOptions(
  icon: FontAwesomeIcons.whatsapp,
  action: () {},
)

Feature Map

Feature area SDK surface
Audio/video rooms MediasfuGeneric, MediasfuConference, MediasfuParameters, media card builders
Webinars and panelists MediasfuWebinar, panelist methods, modern panelist modal
Broadcasts MediasfuBroadcast
Chat rooms MediasfuChat, messages modal, message methods
Screen sharing screen-share methods, screen producer helpers, screenboard components
Recording recording modal and recording methods
Polls poll modal and poll methods
Breakout rooms breakout room modal and launch methods
Whiteboard whiteboard, screenboard, configure whiteboard modal, capture helpers
Virtual backgrounds background modal, processor service, platform-specific ML dependency
Waiting rooms waiting modal and waiting methods
Co-hosts co-host modal and co-host methods
Permissions permission methods and modern permissions modal
Translation modern translation settings, translation room config, personal translation options
SIP / telephony-ready rooms CreateMediaSFURoomOptions.supportSIP, directionSIP, preferPCMA
AI notes and agents configure from the MediaSFU dashboard/docs, then use room/runtime features in the SDK

Troubleshooting

Symptom Check
Pre-join shows credential errors apiUserName must not be a placeholder and apiKey must be a valid 64-character key
Camera or microphone does not open Native platform permissions, HTTPS on web, and OS privacy settings
Web works locally but not in production HTTPS, browser permission prompts, CORS for self-hosted APIs, and TURN/STUN reachability
Self-hosted create/join fails Verify localLink, /createRoom, /joinRoom, TLS, CORS, and backend auth headers
Headless mode renders no UI This is expected with returnUI: false; render your own widgets from MediasfuParameters
Demo mode connects unexpectedly Use useLocalUIMode: true with seed data and avoid live credentials for visual-only demos
Font Awesome compile error with Icon(FontAwesomeIcons.xmark) Use FaIcon(FontAwesomeIcons.xmark) with font_awesome_flutter v11
Analyzer reports only info-level lints The package may still build; clean those lints separately if your CI treats infos as fatal

Docs, Support, And Search Map

Current MediaSFU documentation and support entry points:

Need Link
Flutter SDK docs mediasfu.com/flutter
Developer docs portal mediasfu.com/docs
Quick start guide mediasfu.com/docs/usage/quickstart
Headless guide mediasfu.com/docs/usage/headless
Documentation map mediasfu.com/docs/guide-map
Generated API docs mediasfu.com/docs/api
Developer console / API configuration mediasfu.com/documentation
Dashboard user guide mediasfu.com/user-guide
Sandbox mediasfu.com/sandbox
Widget Studio mediasfu.com/widget-studio
AI agents mediasfu.com/agents
AI notes mediasfu.com/ai-notes-guide
Translation mediasfu.com/translation
SIP / telephony mediasfu.com/telephony
Community support mediasfu.com/forums
Contact mediasfu.com/contact
GitHub organization github.com/MediaSFU

Community forum categories include General Help, Deployment Issues, Mobile SDK, Web SDK, Integrations, Announcements, and Feature Requests. For Flutter package questions, use the Mobile SDK category and include your platform, Flutter version, package version, backend mode, and the smallest reproducible snippet.

LLM And Code Search Hints

This section intentionally repeats the canonical names that developers and AI coding tools should use when searching or generating integrations.

  • Package name: mediasfu_sdk
  • Import: package:mediasfu_sdk/mediasfu_sdk.dart
  • Main prebuilt Flutter widgets: MediasfuGeneric, MediasfuConference, MediasfuWebinar, MediasfuBroadcast, MediasfuChat, ModernMediasfuGeneric
  • Main options classes: MediasfuGenericOptions, MediasfuConferenceOptions, MediasfuWebinarOptions, MediasfuBroadcastOptions, MediasfuChatOptions, ModernMediasfuGenericOptions
  • Credentials class: Credentials(apiUserName, apiKey)
  • Room helper payloads: CreateMediaSFURoomOptions, JoinMediaSFURoomOptions
  • Room helper functions: createRoomOnMediaSFU, joinRoomOnMediaSFU
  • Runtime state and methods: MediasfuParameters
  • UI override type: MediasfuUICustomOverrides
  • Demo mode types: SeedData, EventType
  • Backend keywords: MediaSFU Cloud, MediaSFU Open, self-hosted, localLink, /createRoom, /joinRoom
  • Feature keywords: Flutter video conferencing, Flutter WebRTC meeting SDK, Flutter webinar SDK, Flutter broadcast SDK, Flutter whiteboard, Flutter breakout rooms, Flutter live translation, Flutter AI meeting notes, Flutter SIP room, Flutter headless video SDK

When asking an AI assistant for help, include the package version, the selected widget, whether you use MediaSFU Cloud or localLink, the target platform, and the exact error text.

Platform/framework Package or docs
Flutter pub.dev/packages/mediasfu_sdk
React mediasfu.com/reactjs
Angular mediasfu.com/angular
Vue mediasfu.com/vue
React Native CLI mediasfu.com/reactnative
React Native Expo mediasfu.com/reactnativeexpo
JavaScript mediasfu.com/javascript

License

MIT. See LICENSE.

Libraries

components
components/background_components/background_components
Background Components
components/background_components/background_modal
components/background_components/background_preview_widget
components/background_components/background_processor_service
components/background_components/background_video_display
components/background_components/compositor
components/background_components/frame_processor
components/background_components/mlkit_segmenter_stub
ML Kit Selfie Segmentation Integration
components/background_components/native_virtual_background
components/background_components/processed_video_renderer
components/background_components/screen_wake_lock
components/background_components/segmenter/segmenter
Segmenter - Conditional Export Router
components/background_components/segmenter/segmenter_interface
Segmenter Interface - Shared Base for All Platforms
components/background_components/segmenter/segmenter_mobile
Mobile/Desktop Segmenter - Uses native implementations for supported platforms
components/background_components/segmenter/segmenter_stub
Stub Segmenter - Fallback for Unsupported Platforms
components/background_components/virtual_background_channel
components/background_components/virtual_background_processor
components/background_components/virtual_background_types
components/background_components/virtual_stream_source
components/breakout_components/breakout_rooms_modal
components/co_host_components/co_host_modal
components/display_components/alert_component
components/display_components/audio_card
components/display_components/audio_decibel_check
components/display_components/audio_grid
components/display_components/card_video_display
components/display_components/control_buttons_alt_component
components/display_components/control_buttons_component
components/display_components/control_buttons_component_touch
components/display_components/flexible_grid
components/display_components/flexible_video
components/display_components/loading_modal
components/display_components/main_aspect_component
components/display_components/main_container_component
components/display_components/main_grid_component
components/display_components/main_screen_component
components/display_components/meeting_progress_timer
components/display_components/mini_audio
components/display_components/mini_card
components/display_components/other_grid_component
components/display_components/pagination
components/display_components/participants_counter_badge
components/display_components/simple_audio_player
components/display_components/sub_aspect_component
components/display_components/video_card
components/display_settings_components/display_settings_modal
components/event_settings_components/event_settings_modal
components/exit_components/confirm_exit_modal
components/media_settings_components/media_settings_modal
components/mediasfu_components/mediasfu_broadcast
components/mediasfu_components/mediasfu_chat
components/mediasfu_components/mediasfu_conference
components/mediasfu_components/mediasfu_generic
components/mediasfu_components/mediasfu_webinar
components/menu_components/custom_buttons
components/menu_components/meeting_id_component
components/menu_components/meeting_passcode_component
components/menu_components/share_buttons_component
components/message_components/message_panel
components/message_components/messages_modal
components/misc_components/confirm_here_modal
components/misc_components/prejoin_page
components/misc_components/share_event_modal
components/misc_components/welcome_page
components/misc_components/welcome_page_qrcode
components/panelists_components/panelists_components
components/panelists_components/panelists_modal
components/participants_components/participant_list
components/participants_components/participant_list_item
components/participants_components/participant_list_others
components/participants_components/participant_list_others_item
components/participants_components/participants_modal
components/permissions_components/permissions_components
components/permissions_components/permissions_modal
components/polls_components/poll_modal
components/recording_components/advanced_panel_component
components/recording_components/recording_modal
components/recording_components/standard_panel_component
components/requests_components/render_request_component
components/requests_components/requests_modal
components/waiting_components/waiting_modal
components/whiteboard_components/configure_whiteboard_modal
components/whiteboard_components/screenboard
components/whiteboard_components/screenboard_modal
components/whiteboard_components/whiteboard
components/whiteboard_components/whiteboard_components
Whiteboard Components
components/whiteboard_components/whiteboard_painter
components/whiteboard_components/whiteboard_shape
components/whiteboard_components/whiteboard_toolbar
components_modern/background_components/modern_background_modal
components_modern/breakout_components/modern_breakout_rooms_modal
components_modern/co_host_components/modern_co_host_modal
components_modern/components_modern
Core theme exports
components_modern/core/mediasfu_core
MediaSFU Modern Core
components_modern/core/theme/mediasfu_animations
components_modern/core/theme/mediasfu_borders
components_modern/core/theme/mediasfu_colors
components_modern/core/theme/mediasfu_spacing
components_modern/core/theme/mediasfu_theme
components_modern/core/theme/mediasfu_theme_exports
MediaSFU Modern Theme System
components_modern/core/theme/mediasfu_typography
components_modern/core/theme/modern_style_options
components_modern/core/widgets/animated_gradient_background
components_modern/core/widgets/animated_icon_button
components_modern/core/widgets/animation_widgets
components_modern/core/widgets/glassmorphic_container
components_modern/core/widgets/glow_container
components_modern/core/widgets/gradient_card
components_modern/core/widgets/modern_switch
components_modern/core/widgets/neumorphic_container
components_modern/core/widgets/premium_button
components_modern/core/widgets/premium_text_field
components_modern/core/widgets/premium_widgets
Premium UI widget primitives for the modern MediaSFU UI.
components_modern/core/widgets/pulse_border
components_modern/core/widgets/section_card
components_modern/core/widgets/section_title
components_modern/core/widgets/shimmer_loading
components_modern/core/widgets/skeleton_loader
components_modern/core/widgets/styled_container
components_modern/display_components/modern_alert_component
components_modern/display_components/modern_audio_card
components_modern/display_components/modern_audio_decibel_check
components_modern/display_components/modern_card_video_display
components_modern/display_components/modern_control_buttons_component
components_modern/display_components/modern_control_buttons_component_touch
components_modern/display_components/modern_flexible_grid
components_modern/display_components/modern_flexible_video
components_modern/display_components/modern_loading_modal
components_modern/display_components/modern_main_container_component
components_modern/display_components/modern_meeting_progress_timer
components_modern/display_components/modern_mini_card
components_modern/display_components/modern_pagination
components_modern/display_components/modern_video_card
components_modern/display_settings_components/modern_display_settings_modal
components_modern/event_settings_components/modern_event_settings_modal
components_modern/exit_components/modern_confirm_exit_modal
components_modern/media_settings_components/modern_media_settings_modal
components_modern/mediasfu_components/modern_mediasfu_generic
components_modern/menu_components/modern_custom_buttons
components_modern/menu_components/modern_meeting_id_component
components_modern/menu_components/modern_meeting_passcode_component
components_modern/menu_components/modern_menu_modal
components_modern/menu_components/modern_share_buttons_component
components_modern/message_components/modern_message_panel
components_modern/message_components/modern_messages_modal
components_modern/misc_components/modern_confirm_here_modal
components_modern/misc_components/modern_prejoin_page
components_modern/misc_components/modern_share_event_modal
components_modern/misc_components/modern_welcome_page
components_modern/panelists_components/modern_panelists_modal
components_modern/participants_components/modern_participant_list
components_modern/participants_components/modern_participants_modal
components_modern/permissions_components/modern_permissions_modal
components_modern/polls_components/modern_poll_modal
components_modern/recording_components/modern_advanced_panel_component
components_modern/recording_components/modern_recording_modal
components_modern/recording_components/modern_standard_panel_component
components_modern/requests_components/modern_requests_modal
components_modern/translation_components/translation_components
Translation Components Module
components_modern/translation_components/translation_settings_modal
components_modern/utils/modern_mini_audio_player
Modern Mini Audio Player - Glassmorphic audio player widget
components_modern/waiting_components/modern_waiting_modal
components_modern/whiteboard_components/modern_configure_whiteboard_modal
consumers
consumers/add_videos_grid
consumers/auto_adjust
consumers/calculate_rows_and_columns
consumers/change_vids
consumers/check_grid
consumers/check_permission
consumers/check_screen_share
consumers/close_and_resize
consumers/compare_active_names
consumers/compare_screen_states
consumers/connect_ips
consumers/connect_local_ips
consumers/connect_recv_transport
consumers/connect_send_transport
consumers/connect_send_transport_audio
consumers/connect_send_transport_screen
consumers/connect_send_transport_video
consumers/consumer_resume
consumers/control_media
consumers/create_send_transport
consumers/disconnect_send_transport_audio
consumers/disconnect_send_transport_screen
consumers/disconnect_send_transport_video
consumers/disp_streams
consumers/generate_page_content
consumers/get_estimate
consumers/get_piped_producers_alt
consumers/get_producers_piped
consumers/get_videos
consumers/mix_streams
consumers/on_screen_changes
consumers/prepopulate_user_media
consumers/process_consumer_transports
consumers/process_consumer_transports_audio
consumers/re_port
consumers/re_update_inter
consumers/readjust
consumers/receive_all_piped_transports
consumers/receive_room_messages
consumers/reorder_streams
consumers/request_screen_share
consumers/resume_pause_audio_streams
consumers/resume_pause_streams
consumers/resume_send_transport_audio
consumers/signal_new_consumer_transport
consumers/socket_receive_methods/join_consume_room
consumers/socket_receive_methods/new_pipe_producer
consumers/socket_receive_methods/producer_closed
consumers/start_consuming_translation
consumers/start_share_screen
consumers/stop_share_screen
consumers/stream_success_audio
consumers/stream_success_audio_switch
consumers/stream_success_screen
consumers/stream_success_video
consumers/switch_user_audio
consumers/switch_user_video
consumers/switch_user_video_alt
consumers/translation_consumer_switch
Translation Consumer Switch Utilities
consumers/trigger
consumers/update_mini_cards_grid
consumers/update_participant_audio_decibels
main
main_broadcast
main_chat
main_conference
main_generic
main_modern
main_playbook_core
main_unique
main_webinar
mediasfu_sdk
methods
methods/breakout_rooms_methods/breakout_room_updated
methods/breakout_rooms_methods/launch_breakout_rooms
methods/co_host_methods/launch_co_host
methods/co_host_methods/modify_co_host_settings
methods/display_settings_methods/launch_display_settings
methods/display_settings_methods/modify_display_settings
methods/exit_methods/confirm_exit
methods/exit_methods/launch_confirm_exit
methods/media_settings_methods/launch_media_settings
methods/menu_methods/launch_menu_modal
methods/message_methods/launch_messages
methods/message_methods/send_message
methods/panelists_methods/focus_panelists
methods/panelists_methods/launch_panelists
launchPanelists - Toggles the visibility of the panelists modal.
methods/panelists_methods/panelists_methods
methods/panelists_methods/update_panelists
methods/participants_methods/launch_participants
methods/participants_methods/message_participants
methods/participants_methods/mute_participants
methods/participants_methods/remove_participants
methods/permissions_methods/launch_permissions
launchPermissions - Toggles the visibility of the permissions modal.
methods/permissions_methods/permissions_methods
methods/permissions_methods/update_participant_permission
methods/permissions_methods/update_permission_config
methods/polls_methods/handle_create_poll
methods/polls_methods/handle_end_poll
methods/polls_methods/handle_vote_poll
methods/polls_methods/launch_poll
methods/polls_methods/poll_updated
methods/recording_methods/check_pause_state
methods/recording_methods/check_resume_state
methods/recording_methods/confirm_recording
methods/recording_methods/launch_recording
methods/recording_methods/record_pause_timer
methods/recording_methods/record_resume_timer
methods/recording_methods/record_start_timer
methods/recording_methods/record_update_timer
methods/recording_methods/start_recording
methods/recording_methods/stop_recording
methods/recording_methods/update_recording
methods/requests_methods/launch_requests
methods/requests_methods/respond_to_requests
methods/settings_methods/launch_settings
methods/settings_methods/modify_settings
methods/stream_methods/click_audio
methods/stream_methods/click_chat
methods/stream_methods/click_screen_share
methods/stream_methods/click_video
methods/stream_methods/switch_audio
methods/stream_methods/switch_audio_output
methods/stream_methods/switch_video
methods/stream_methods/switch_video_alt
methods/utils/check_limits_and_make_request
methods/utils/create_join_room
methods/utils/create_response_join_room
methods/utils/create_room_on_media_sfu
methods/utils/format_number
methods/utils/generate_random_messages
methods/utils/generate_random_participants
methods/utils/generate_random_polls
methods/utils/generate_random_request_list
methods/utils/generate_random_waiting_room_list
methods/utils/get_media_devices_list
Retrieves the list of available media devices.
methods/utils/get_modal_position
methods/utils/get_overlay_position
methods/utils/get_participant_media
Retrieves the media stream of a participant by ID or name.
methods/utils/initial_values
methods/utils/join_room_on_media_sfu
methods/utils/mediasfu_parameters
methods/utils/meeting_timer/start_meeting_progress_timer
methods/utils/mini_audio_player/mini_audio_player
methods/utils/platform_feature_support
methods/utils/producer/a_params
methods/utils/producer/h_params
methods/utils/producer/screen_params
methods/utils/producer/v_params
methods/utils/producer/video_capture_constraints
methods/utils/sleep
methods/utils/sound_player
methods/utils/translation_languages
Central Language Definitions for Translation Pipeline (Frontend)
methods/utils/validate_alphanumeric
methods/waiting_methods/launch_waiting
methods/waiting_methods/respond_to_waiting
methods/whiteboard_methods/canvas_capture_stub
Stub implementation for non-web platforms.
methods/whiteboard_methods/canvas_capture_web
Web-specific screen annotation capture implementation using JavaScript interop.
methods/whiteboard_methods/capture_canvas_stream
methods/whiteboard_methods/launch_configure_whiteboard
misc
producer_client/producer_client_emits/create_device_client
producer_client/producer_client_emits/join_room_client
producer_client/producer_client_emits/update_room_parameters_client
producers
producers/producer_emits/join_con_room
producers/producer_emits/join_local_room
producers/producer_emits/join_room
producers/socket_receive_methods/all_members
producers/socket_receive_methods/all_members_rest
producers/socket_receive_methods/all_waiting_room_members
producers/socket_receive_methods/ban_participant
producers/socket_receive_methods/control_media_host
producers/socket_receive_methods/disconnect
producers/socket_receive_methods/disconnect_user_self
producers/socket_receive_methods/get_domains
producers/socket_receive_methods/host_request_response
producers/socket_receive_methods/meeting_ended
producers/socket_receive_methods/meeting_still_there
producers/socket_receive_methods/meeting_time_remaining
producers/socket_receive_methods/panelist_receive_methods
Handler for panelist-related socket events.
producers/socket_receive_methods/participant_requested
producers/socket_receive_methods/permission_receive_methods
Handler for permission-related socket events.
producers/socket_receive_methods/person_joined
producers/socket_receive_methods/producer_media_closed
producers/socket_receive_methods/producer_media_paused
producers/socket_receive_methods/producer_media_resumed
producers/socket_receive_methods/re_initiate_recording
producers/socket_receive_methods/receive_message
producers/socket_receive_methods/recording_notice
producers/socket_receive_methods/room_record_params
producers/socket_receive_methods/screen_producer_id
producers/socket_receive_methods/start_records
producers/socket_receive_methods/stopped_recording
producers/socket_receive_methods/time_left_recording
producers/socket_receive_methods/translation_receive_methods
Translation Socket Receive Methods
producers/socket_receive_methods/update_consuming_domains
producers/socket_receive_methods/update_media_settings
producers/socket_receive_methods/updated_co_host
producers/socket_receive_methods/user_waiting
sockets
sockets/socket_manager
types
types/custom_builders
types/types
types/ui_overrides
utils/image_utils