BigBlueButton.plNiezależny serwis po polsku

Nowe funkcje BigBlueButton 4.0

Nawigacja, aplikacje, dźwięk, praca w grupach oraz zmiany konfiguracji w wersji 4.0.

Tłumaczenie automatyczne 4.0 Stan źródeł:
Ilustracja rozdziału: Nowe funkcje BigBlueButton 4.0
Ilustracja z repozytorium dokumentacji BigBlueButton, tag v4.0.0. Niektóre obrazy źródłowe przedstawiają starszy interfejs. Źródło ilustracji.

BigBlueButton 4.0 runs on Ubuntu 24.04

Przegląd

BigBlueButton 4.0 oferuje użytkownikom lepszą użyteczność i większe zaangażowanie.

  • Użyteczność - ułatwienie typowych funkcji (takich jak podniesienie ręki)
  • Zaangażowanie - zapewnienie instruktorowi więcej możliwości zaangażowania uczniów

Najbardziej widoczną zmianą w wersji 4.0 jest przeprojektowany interfejs klienta zbudowany w oparciu o nową nawigację pasek boczny i galerię aplikacji. Pod maską wersja 4.0 przenosi się do Ubuntu 24.04 i kontynuuje modernizację bazy kodu rozpoczętą w wersji 3.0.

Oto zestawienie nowości w wersji 4.0.

Użyteczność

Lewa nawigacja klienta została przeprojektowana w dedykowany boczny pasek nawigacyjny z czytelniejszym zestawem przycisków (lista użytkowników, czat, udostępnione notatki, minutnik, ustawienia i inne), wskaźniki powiadomień i plakietka z liczbą uczestników na przycisku listy użytkowników.

Oprócz tego nowa Galeria aplikacji zawiera aplikacje takie jak Ankiety, Pokoje grupowe, Timer i Podpisy audio – a także wtyczki. Często używane aplikacje można przypiąć, a przypięte aplikacje są utrwalane i buforowane między sesjami. Ostatnio dodane aplikacje można wyróżnić „nową” wstążką. Galerię można przeszukiwać, przełączać pomiędzy widokami listy i siatki (wybór jest zapamiętywany, a ustawienia domyślne urządzeń mobilnych to widok listy), a przypiętymi aplikacjami można zarządzać bezpośrednio z galerii.

Liczba aplikacji, które można przypiąć, jest kontrolowana przez public.app.appsGallery.maxPinnedApps (domyślnie 3), a to, które aplikacje wyświetlają „nową” etykietę, jest kontrolowane przez public.sidebarNavigation.appsToLabelAsNew w settings.yml. Które wbudowane przyciski pojawiają się na pasku bocznym, w jakiej sekcji i w jakiej kolejności steruje public.sidebarNavigation.buttons (zobacz zmiany w ustawieniach klienta poniżej). Nawigację na pasku bocznym można ukryć dla każdego użytkownika za pomocą parametru łączenia userdata-bbb_hide_sidebar_navigation.

Przeszukaj listę użytkowników

Moderatorzy i przeglądający mogą teraz przeszukiwać listę użytkowników w czasie rzeczywistym. Wyszukiwanie obsługuje dopasowywanie pełnotekstowe i odwrotne, uwzględnia w wynikach bieżącego użytkownika, a także filtruje sekcje podniesione ręce i gość oczekujący. Można go przełączać za pomocą public.userList.searchBar.enabled (domyślnie true), a rozmiar strony listy użytkowników można konfigurować za pomocą public.layout.usersPerUserListPage (domyślnie 50).

Przeprojektowany timer

Timer otrzymał nowy wygląd i ulepszone możliwości wprowadzania danych, w tym ustawienia wstępne i przyciski szybkiego dodawania. Dostępne wartości można konfigurować w settings.yml (public.timer.presets, public.timer.quickAddButtons, public.timer.maxHours).

Przeprojektowany panel zarządzania gośćmi

Zarządzanie gośćmi odbywa się teraz w dedykowanym panelu zintegrowanym z listą użytkowników. Moderatorzy zatwierdzający lub odrzucający gości w panelu oczekujących mogą skorzystać z nowej opcji „Zapamiętaj wybór”, aby zastosować tę samą decyzję do kolejnych próśb o dołączenie. Dane wejściowe służące do wysyłania wiadomości do poczekalni zapewniają teraz wizualną informację o stanie wysłania, dzięki czemu moderatorzy mogą stwierdzić, że wiadomość została dostarczona.

Przeprojektowane uprawnienia (blokada przeglądających) modalne

Modal „Zablokuj przeglądających” / uprawnienia został przeprojektowany z układ z zakładkami, a przełączniki zostały zastąpione polami wyboru, aby akcja „ograniczania” była bardziej przejrzysta. Modal ostrzega teraz o niezapisanych zmianach przed zamknięciem. Ujawnia także nowe zasady dotyczące prezenterów opisane w Prośba o prezentację.

Przegląd układu mobilnego

Doświadczenie mobilne przeszło gruntowną modernizację. Kamery internetowe na urządzeniach mobilnych są teraz podzielone na strony, umożliwiają poruszanie się między stronami za pomocą gestów przesuwania i wskaźnika kropek, a domyślna siatka kamer mobilnych została zredukowana do 6 widocznych kamer (public.kurento.pagination.mobileGridSizes). Na pasku nawigacyjnym znajdują się okrągłe przyciski z wyrównanym przełącznikiem paska bocznego, pasek akcji został zmniejszony dzięki ujednoliconej kontroli dźwięku, a menu opcji czatu i spotkań są wyświetlane w formie kompaktowych okienek wyskakujących. Okna dialogowe, takie jak modal żądania wyłączenia wyciszenia, zostały dostosowane do małych ekranów. W telefonach w orientacji poziomej kamery i prezentacja są ułożone obok siebie.

Automatyczny motyw jasny/ciemny

Klient stosuje teraz preferencje jasnego/ciemnego systemu operacyjnego (prefers-color-scheme) jako motyw początkowy i kontynuuje podążanie za nim, dopóki użytkownik nie wybrał motywu ręcznie. Przełącznik „Trybu ciemnego” dla każdego użytkownika i parametr łączenia userdata-bbb_prefer_dark_theme zawsze mają pierwszeństwo przed wykrytą kompozycją systemu. Zachowaniem steruje public.app.darkTheme.autoDetectFromSystem (domyślnie true).

Dedykowana zakładka ustawień audio

Ustawienia audio przeniesione do dedykowanej zakładki Audio w trybie Ustawienia, gdzie każdy użytkownik wybiera sposób przetwarzania sygnału z jego mikrofonu przed wysłaniem go do innych uczestników:

— Zaawansowane filtrowanie – opcjonalny procesor dźwięku oparty na technologii WASM, który działa na strumieniu mikrofonu, izolując głos osoby mówiącej i eliminując szumy tła. Dostępne są dwa wymienne backendy, wybrane przez administratora za pomocą public.media.audio.audioWasmProcessing.provider: bbba (domyślny) i workadventureDtln (tłumienie szumów DTLN używane przez WorkAdventure). Domyślnie jest wyłączona i musi zostać udostępniona przez administratora; zobacz Zaawansowane filtrowanie (przetwarzanie dźwięku WASM), aby uzyskać szczegółowe informacje na temat konfiguracji.

  • Filtrowanie standardowe (domyślne) - wbudowane filtry przeglądarki: automatyczna kontrola wzmocnienia, eliminacja echa i tłumienie szumów.
  • Oryginalny dźwięk - w ogóle bez przetwarzania; przesyłany jest surowy sygnał mikrofonu. Idealny do dzielenia się muzyką, śpiewem lub instrumentami.

Trybem wybranym dla nowego użytkownika steruje public.app.defaultSettings.audio.processingMode (domyślnie standard); jeśli jest ustawiony na advanced, podczas gdy przetwarzanie WASM nie jest obsługiwane przez przeglądarkę lub jest wyłączone po stronie serwera, klient powraca do standard. Ograniczenia na poziomie przeglądarki stosowane w trybie standardowym można konfigurować w public.media.audio.microphoneConstraints.

Powiadomienie o nieprawidłowym mikrofonie dla napisów na żywo

Gdy włączone są napisy na żywo w przeglądarce (WebSpeech) i użytkownik trzyma głos, ale przez krótką chwilę nie jest wykonywana transkrypcja, BigBlueButton wyświetla teraz toast sugerujący, że wybrano niewłaściwy mikrofon lub otoczenie jest zbyt hałaśliwe. Alert może opcjonalnie zawierać link do artykułu w bazie wiedzy i można go konfigurować za pomocą public.app.audioCaptions.microphoneAlert w settings.yml.

Tablica: przewiń, aby przesunąć, Ctrl+przewiń, aby powiększyć

Przesunięcie kółka myszy nad tablicą powoduje teraz przesuwanie prezentacji, a przytrzymanie Ctrl (Cmd na macOS) podczas przewijania powoduje powiększanie i pomniejszanie – pasując do modelu nawigacji większości narzędzi projektowych.

Można to skonfigurować: ustaw public.whiteboard.wheelZoomRequiresCtrl na false, aby przywrócić zachowanie BigBlueButton 3.0, gdzie koło powiększa się bezpośrednio i nie jest używany żaden klawisz modyfikujący.

Zaręczyny

Prośba o przedstawienie

Widzowie mogą teraz aktywnie poprosić o rolę prezentera, zamiast czekać, aż moderator ją przydzieli. Gdy widz poprosi o prezentację, moderatorzy zobaczą tę prośbę i będą mogli ją zatwierdzić lub odrzucić; przeglądarka żądająca widzi stan oczekiwania i powiadomienie, jeśli żądanie zostanie odrzucone.

To zachowanie jest regulowane przez nową politykę prezentera, którą można skonfigurować dla każdego spotkania za pomocą parametru tworzenia lockSettingsPresenterPolicy i domyślnego ustawienia serwera lockSettingsPresenterPolicy we właściwościach bbb-web. Akceptowane wartości to:

  • moderatorOnly - tylko moderatorzy mogą przypisać prezentera.
  • requireApproval (domyślnie) - widzowie mogą poprosić o prezentację, a moderator musi ją zatwierdzić.
  • freeForAll - widzowie mogą przejąć rolę prezentera bez zgody.

Przypięte wiadomości na czacie

Moderatorzy mogą teraz przypiąć wiadomość na czacie, aby była dobrze widoczna dla wszystkich uczestników spotkania. Przypinanie jest widoczne na pasku narzędzi wiadomości na czacie (nowa opcja pin w public.chat.toolbar) i można je wyłączyć podczas każdego spotkania, ustawiając wartość pinChatMessage wynoszącą disabledFeatures.

Kiedy allowModsToUnmuteUsers jest włączone, BigBlueButton 4.0 może opcjonalnie zapytać uczestnika o zgodę, zanim moderator wyłączy wyciszenie. Gdy nowa opcja requireUserConsentBeforeUnmuting jest ustawiona na true, zamiast bezpośredniego wyłączania wyciszenia mikrofonu wyświetlane jest użytkownikowi okno dialogowe. Wartość domyślna (false) zachowuje starsze zachowanie. Można to ustawić dla całego serwera we właściwościach bbb-web lub dla każdego spotkania w ramach wywołania create.

Tryb wielofunkcyjny (pomocniczy pasek boczny)

Nowy Tryb wielofunkcyjny dodaje dodatkowy panel zawartości paska bocznego, umożliwiając otwarcie drugiego panelu obok głównego (na przykład czatu i listy użytkowników w tym samym czasie). Jest domyślnie wyłączona i włączona za pomocą public.multiFunctionalMode.enabled w settings.yml i można ją wyłączyć podczas każdego spotkania za pomocą wartości multiFunctionalMode równej disabledFeatures.

Większe wiadomości czatu zawierające tylko emoji (jumbomoji)

Wiadomość na czacie zawierająca tylko emoji (maksymalnie trzy emoji, białe znaki są ignorowane) jest teraz renderowana z większym rozmiarem czcionki — pasującym do zachowania „jumbomoji” znanego z popularnych komunikatorów. Wiadomości z towarzyszącym tekstem zachowują normalny rozmiar.

Panel szkoleniowy dla pokojów podgrup

Panel edukacyjny nie jest już wyłączony w pokojach podgrup: każda przerwa ma swój własny pulpit nawigacyjny, śledzący aktywność w taki sam sposób, jak robi to spotkanie nadrzędne (odziedziczony disabledFeatures=learningDashboard nadal go wyłącza). Dane panelu kontrolnego podgrupy są również przechowywane do zakończenia spotkania nadrzędnego — poprzednio porządkowanie było zakotwiczone na końcu podgrupy — dzięki czemu instruktorzy mogą przeglądać aktywność podgrupy tak długo, jak działa główny pokój (plus learningDashboardCleanupDelayInMinutes).

Za kulisami

Zmiana architektury klienta i migracja TypeScriptu

Kontynuowano migrację interfejsu klienta do TypeScript, a duża część paska nawigacji, paska bocznego i paska akcji została przebudowana. Stare menu rozwijane przycisków akcji zostało zastąpione nowym komponentem Obszar multimediów na pasku akcji i wprowadzono nową bibliotekę ikon.

Obsługa użytkowników botów

Klient ma teraz pierwszorzędną obsługę dla użytkowników botów (w połączeniu z bot=true). Boty są wykluczone z układu siatki i interfejsu użytkownika umożliwiającego współdzielenie ekranu, mogą otrzymać dedykowaną etykietę listy użytkowników i pominąć przekierowanie adresu URL wylogowania po zakończeniu spotkania.

Komunikaty serwera umiędzynarodowione na interfejsie

Ciągi znaków, które wcześniej były emitowane z serwera (Akka) jako stałe w języku angielskim — na przykład niektóre wiadomości czatu/powiadomień — są teraz konwertowane na klucze i18n na interfejsie użytkownika, co poprawia zasięg lokalizacji.

Media

LiveKit to domyślna platforma multimediów

BigBlueButton 4.0 wykorzystuje LiveKit jako domyślną platformę multimedialną do obsługi dźwięku, obrazu z kamery i udostępniania ekranu. Poprzedni stos mediasoup/bbb-webrtc-sfu (oraz FreeSWITCH dla audio) pozostaje zainstalowany i w pełni obsługiwany jako alternatywny most . Dokładny przegląd tej inicjatywy można znaleźć w wydanie 21059.

Pakiet bbb-livekit (livekit-server i livekit-sip) jest instalowany domyślnie, a moduł LiveKit w bbb-webrtc-sfu jest włączony od razu po wyjęciu z pudełka.

W przypadku korzystania z BigBlueButton za pośrednictwem konfiguracji klastra proxy , ustaw adres URL punktu końcowego LiveKit w pliku public.media.livekit.url bbb-html5.yml. Aby uzyskać szczegółowe informacje, zobacz dokumentację serwera proxy klastra.

Zdecydowanie zalecamy skonfigurowanie filtrowania interfejsu sieciowego w LiveKit. Chociaż jest to opcjonalne, przyspiesza to czas negocjacji i rozwiązuje problem z najnowszymi wersjami LiveKit, który może powodować skoki wydajności procesora, jeśli nie ma włączonego filtrowania. Aby skonfigurować filtrowanie interfejsów sieciowych:

  1. Zbierz odpowiednie nazwy interfejsów sieciowych, które będą używane w komunikacji medialnej. W przypadku większości konfiguracji wystarczy domyślny interfejs sieciowy. Zobacz polecenie route , aby je znaleźć (Destination: default). Jeśli potrzebne są inne interfejsy sieciowe, należy je zanotować w .
  2. Ustaw w /etc/bigbluebutton/livekit.yaml:
rtc:
  interfaces:
    includes:
      - <network_interface_name_1>
      - <any_other_network_interface_name>
  1. Uruchom ponownie serwer livekit: $ sudo systemctl restart livekit-server

Każdy typ multimediów ma domyślnie livekit i można go zamiast tego wskazać na starszy stos , na spotkanie lub na całym serwerze:

  • Na spotkanie: ustaw dowolne z poniższych spotkań Parametry /create
  • audioBridge=bbb-webrtc-sfu (lub freeswitch)
  • cameraBridge=bbb-webrtc-sfu
  • screenShareBridge=bbb-webrtc-sfu
  • Na całym serwerze: ustaw dowolną z następujących właściwości w /etc/bigbluebutton/bbb-web.properties
  • audioBridge=bbb-webrtc-sfu
  • cameraBridge=bbb-webrtc-sfu
  • screenShareBridge=bbb-webrtc-sfu

Te parametry nie muszą być ustawione jednocześnie. Starszą platformę można na przykład wykorzystać tylko do dźwięku, zachowując LiveKit do udostępniania kamery i ekranu , ustawiając tylko audioBridge=bbb-webrtc-sfu.

Od wersji BigBlueButton v3.0.7 nagrywanie jest domyślnie włączone dla sesji LiveKit za pośrednictwem aplikacji bbb-webrtc-recorder. Jeśli livekit/egress był wcześniej zainstalowany na serwerze , wszelkie kroki wykonane w celu jego włączenia powinny zostać cofnięte. Patrz poprzednie kroki instalacji.

Podsłuchiwanie spotkania rodziców w pokoju podgrup jest teraz obsługiwane na moście LiveKit, na równi z przepływem transferu FreeSWITCH/mediasoup. Moderator korzystający z akcji nasłuchiwania panelu ucieczki zostaje przełączony na dźwięk ucieczki — wyciszenie/wyłączenie wyciszenia dotyczy ucieczki podczas słuchania — i otrzymuje ciągły toast z nazwą pokoju z przyciskiem „Wróć do głównego pokoju”. Pod maską jest on zbudowany w oparciu o nowy model tokena LiveKit oparty na członkostwie, który również zapewnia automatyczne odświeżanie tokena w przypadku długotrwałych sesji.

Zachęcamy użytkowników do przesyłania opinii za pośrednictwem naszego narzędzia do śledzenia problemów GitHub lub list mailingowych .

Ulepszone komponenty

Pod maską BigBlueButton 4.0 instaluje się na Ubuntu 24.04 64-bit, a następujące kluczowe komponenty zostały zaktualizowane

  • Java 21 (OpenJDK)
  • Grails 8.0.0
  • Gradle 9.8.0
  • Groovy 5.1.3
  • Spring Framework 7.0.9
  • Spring Boot 4.1.1
  • Tomcat (wbudowany) 11.0.26

Szczegółowe informacje na temat nowości w BigBlueButton 4.0 można znaleźć w uwagach do wydania.

Najnowsze wydania:

Inne istotne zmiany

Środowisko wykonawcze Node.js 24

BigBlueButton 4.0 uruchamia komponenty Node.js (kompilacja bbb-html5, bbb-graphql-actions, bbb-shared-notes-server, bbb-export-annotations, bbb-webhooks, bbb-webrtc-sfu, bbb-transcription-controller) na Node.js 24, linia Active LTS utrzymywana do kwietnia 2028. bbb-install.sh instaluje go z NodeSource, a pakiety deklarują zależność od nodejs (>= 24) (<< 25).

Nagłówki odpowiedzi bezpieczeństwa z bbb-web

Wraz z przejściem do Grails 8, bbb-web dodaje cztery nagłówki zabezpieczeń przeglądarki do każdej wysyłanej odpowiedzi:

  • X-Frame-Options: SAMEORIGIN
  • X-Content-Type-Options: nosniff
  • Referrer-Policy: strict-origin-when-cross-origin
  • X-XSS-Protection: 0

Dołączenie do spotkania jest nie ma to wpływu, w tym z LMS lub jakiejkolwiek innej witryny, która osadza BigBlueButton w ramce: połączenie join odpowiada przekierowaniem, a klient, slajdy i nagrania są obsługiwane przez nginx, który nie dodaje tych nagłówków. Zmiany polegają na tym, że strona renderowana przez sam bbb-web, np. odpowiedź API, nie jest już wyświetlana w ramce w innej witrynie.

Aby wyłączyć nagłówek, ustaw jego właściwość enabled na false w /etc/bigbluebutton/bbb-web.properties i zrestartuj bbb-web (sudo systemctl restart bbb-web). Na przykład, aby ponownie zezwolić własnym stronom bbb-web na ramki w innych witrynach:

grails.security.headers.frame-options.enabled=false

Pozostałe trzy nagłówki są kontrolowane przez grails.security.headers.content-type-options.enabled, grails.security.headers.referrer-policy.enabled i grails.security.headers.xss-protection.enabled. grails.security.headers.enabled=false wyłącza wszystkie cztery.

Inne zmiany odpowiedzi bbb-web w Grails 8

  • Żądanie adresu URL pod /bigbluebutton/, którego nie obsługuje żadne wywołanie API, nadal otrzymuje odpowiedź 404, ale treść to JSON zamiast XML Wyprodukowano dokument <Map> Grails 7. — bez konfiguracji CORS (domyślnej; konfiguracja serwera proxy klastra ją konfiguruje), na żądanie wstępnej inspekcji między źródłami odpowiada się z liczbą 200 i bez nagłówków Access-Control-* zamiast 403, a odpowiedzi nie zawierają już Vary: Origin. Żadna wersja nie zapewnia dostępu między źródłami. — odpowiedź na żądanie zawierające ponad 10000 parametrów odpowiada stronie HTTP 500 przez wbudowany Tomcat; Tomcat 10.1 zignorował parametry przekraczające limit. — wysyłany bezpośrednio do portu 8090 (wcześniej nginx odpowiada 413 dla treści powyżej 1 MB), formularz POST większy niż limit Tomcat 2 MB odpowiada stroną HTTP 500 zamiast błędu API.
  • Jeśli nadpisanie systemd bbb-web.service zastępuje ExecStart, zaktualizuj je, aby uruchamiało się za pomocą -cp ., tak jak robi to jednostka w pakiecie. Przy poprzedniej ścieżce klasy (-cp WEB-INF/lib/*:/:WEB-INF/classes/:.) bbb-web na Grails 8 nigdy się nie kończy, a nginx odpowiada 502.

W BigBlueButton 4.0.0-beta.4 zastąpiliśmy domyślny wybór komponentu Shared Notes z bbb-etherpad (tj. Etherpad) na bbb-shared-notes-server (tj. BlockNote). bbb-shared-notes-server to pakiet wymagany, instalowany domyślnie.

Etherpad (pakiety bbb-etherpad i bbb-pads) nie jest częścią domyślnej instalacji BigBlueButton 4.0, a jego obsługa została usunięta w cyklu życia wersji 4.0; zobacz Usunięty Etherpad.

Usunięto Etherpad

BigBlueButton 4.0 całkowicie usuwa Etherpad. Udostępnione notatki zawsze używają BlockNote (bbb-shared-notes-server).

  • Pakiety bbb-etherpad i bbb-pads nie są już budowane ani publikowane.
  • Aktualizacja serwera wersji wstępnej 4.0 (beta lub kandydat do wydania), na którym je zainstalowano, usuwa oba pakiety i czyści to, co po nich pozostawiono: pliki Etherpad i wygenerowany klucz API, użytkownika systemu etherpad, zastąpienia /etc/bigbluebutton/etherpad.json i /etc/bigbluebutton/bbb-pads.json, Wpis public.pads w /etc/bigbluebutton/bbb-html5.yml oraz pady i autorzy Etherpad zapisane w Redis (klucze zaczynające się od pad:, sessionstorage:, globalAuthor:, token2author:, pad2readonly:, readonly2pad: i ueberDB:). Pady przechowywane w Etherpad nie podlegają migracji.
  • Klucze grupy i sesji Etherpada pozostają w Redis (groups, group:*, group2sessions:*, author2sessions:*, session:*, mapper2group:* i mapper2author:*): te prefiksy są zbyt ogólne, aby bezpiecznie je usunąć w instancji Redis, którą mogą współużytkować inne aplikacje. Nic już ich nie czyta; usuń je ręcznie, jeśli zajdzie taka potrzeba. — użyj apt full-upgrade (lub dist-upgrade). apt upgrade nigdy nie usuwa pakietów, a ponieważ pakiet bigbluebutton zależy od dokładnej wersji każdego pakietu BigBlueButton, wstrzymuje całą aktualizację BigBlueButton, a nie tylko usunięcie Etherpad. Aby usunąć Etherpad przed aktualizacją, uruchom $ sudo apt purge bbb-etherpad bbb-pads.
  • Parametr sharedNotesEditor /create i właściwość sharedNotesEditor w bbb-web.properties są ignorowane; każde spotkanie otrzymuje udostępnione notatki BlockNote. Jeśli dostosowałeś /usr/share/bbb-web/WEB-INF/classes/spring/resources.xml, usuń jego wpis <property name="sharedNotesEditor" .../>; zobacz zmiany właściwości bbb-web.
  • Usunięto części API GraphQL przeznaczone wyłącznie dla Etherpada: pole sharedNotesEditor z sharedNotes, pole isEtherpadSharedNotes z meeting.componentsFlags, pole sharedNotesSession z user_current, Typy sharedNotes_session i sharedNotes_diff (wraz z ich zapytaniami i subskrypcjami) oraz mutacja sharedNotesCreateSession. Wtyczki lub integracje, które nadal żądają którejkolwiek z nich, otrzymują błąd sprawdzania poprawności GraphQL i powinny je usunąć.
  • Skrypty nagrywania nie odczytują już notes_endpoint (punktu końcowego eksportu Etherpad) z bigbluebutton.yml, a etherpad nie jest już prawidłowym wpisem w notes_formats. Usuń oba z /etc/bigbluebutton/recording/recording.yml, jeśli je tam ustawiłeś. Notatki są eksportowane z pliku bn_notes_endpoint, który obecnie ma wartość domyślną http://127.0.0.1:8787/loopback/api/documents. Jeśli zastąpisz bn_notes_endpoint w recording.yml, zmień jego ścieżkę na /loopback/api/documents. Poprzednia ścieżka /api/documents nie odpowiada już na skrypty nagrywania, więc nagrania będą archiwizowane bez udostępnionych notatek.
  • Nagrania wykonane za pomocą Etherpada zachowują notatki, które już zarchiwizowały, także wtedy, gdy zostały odbudowane za pomocą bbb-record --rebuild (przebudowa powoduje ponowne przetworzenie zarchiwizowanych plików surowych i nie powoduje ich ponownej archiwizacji). Jedynie ponowne uruchomienie kroku archiwizacji dla takiego nagrania nie spowodowałoby pobrania jego notatek: krok rejestruje ostrzeżenie, zapisuje znacznik notes/export_failed i kontynuuje bez udostępnionych notatek.

Nowy opcjonalny pakiet: bbb-coturn

BigBlueButton 4.0 dodaje bbb-coturn, kompilację BigBlueButton coturn Serwer TURN/STUN. Ubuntu 24.04 dostarcza tylko wersję 4.6.1; Pakiety bbb-coturn powracają do wersji 4.16.0.

Jest to pakiet opcjonalny — nie jest zależny od metapakietu bigbluebutton i nie jest instalowany domyślnie. Zainstaluj go za pomocą

$ sudo apt install bbb-coturn

bbb-coturn jest zamiennikiem pakietu distro coturn: deklaruje Provides/Conflicts/Replaces na coturn (więc apt zamienia jedno na drugie) i zachowuje te same ścieżki — /usr/bin/turnserver, plik konfiguracyjny /etc/turnserver.conf i jednostkę systemową coturn.service. Istniejące dodatki systemowe w ramach /etc/systemd/system/coturn.service.d/ nadal obowiązują.

W przeciwieństwie do pakietu dystrybucyjnego, bbb-coturn nie włącza ani nie uruchamia usługi podczas instalacji. Dostarczony /etc/turnserver.conf jest standardowym przykładem źródła zasilania z komentarzem dla każdej opcji, a domyślnym ustawieniem Coturn w tym stanie jest dostęp anonimowy — uruchomienie go przed zapisaniem rzeczywistej konfiguracji ujawniłoby otwarty przekaźnik. Po skonfigurowaniu /etc/turnserver.conf uruchom go z

$ sudo systemctl enable --now coturn

Zobacz Włącz konfigurację serwera, aby uzyskać pełną konfigurację.

Nowy opcjonalny pakiet: bbb-playback-presentation-legacy

Odtwarzacze nagrań wykonanych za pomocą BigBlueButton 0.81 i 0.9 (serwowane pod /playback/presentation/0.81/ i /playback/presentation/0.9.0/) przeniesiono z bbb-playback-presentation do nowego pakietu bbb-playback-presentation-legacy wraz z przekierowaniem z niewersjonowanego łącza /playback/presentation/playback.html. Nagrania wykonane w dowolnej aktualnej wersji wykorzystują odtwarzacz 2.3 z bbb-playback, więc domyślna instalacja nie zawiera już starych odtwarzaczy, a linki do nich odpowiadają 404.

Jest to pakiet opcjonalny, a nie zależność od metapakietu bigbluebutton. Jeśli przeprowadziłeś migrację nagrań z tych wersji i nadal chcesz je odtwarzać, zainstaluj je za pomocą

$ sudo apt install bbb-playback-presentation-legacy

Zobacz Odtwórz nagrania wykonane za pomocą BigBlueButton 0.81 lub 0.9 dla szczegóły.

Nowe narzędzie administracyjne: bbbctl

Pakiet bbb-config jest teraz dostarczany bbbctl (v0.5.1), a utrzymywane przez społeczność narzędzie wiersza poleceń autorstwa @defnull do interakcji z serwerem BigBlueButton z poziomu powłoki. Zainstalowany jako /usr/bin/bbbctl, komunikuje się z własnym interfejsem API serwera i umożliwia administratorom tworzenie list, sprawdzanie i kończenie spotkań oraz pracę z nagraniami bez ręcznego tworzenia podpisanych wywołań API. Dziękuję za rozwinięcie tego, defnull!

Wersja wstępna wtyczki SDK 1.0

Klient HTML5 używa teraz bigbluebutton-html-plugin-sdk 1.0.0-beta.3, a html5PluginSdkVersion ma domyślnie tę samą wartość. Jest to istotna zmiana w przypadku wtyczek: przedpremierowy zestaw SDK spełnia tylko zakres requiredSdkVersion, który nazywa się przedpremierową wersją 1.0.0, więc manifesty deklarujące zakresy 0.x, takie jak ^0.1.26 lub ~0.0.77, są odrzucane, a każde spotkanie rejestruje błąd ładowania wtyczki w bbb-apps-akka.

Autorzy wtyczki powinni publikować manifesty zawierające nazwę wersji wstępnej, na przykład ^1.0.0-beta.1, która akceptuje także wersję końcową 1.0.0 i późniejsze 1.x. Aby zachować ładowanie jednego manifestu w wersjach wstępnych 4.0 do 4.0.0-rc.4, które obsługują pakiet SDK 0.1.x, dodaj zakres 0.1.x: ^0.1.5 || ^1.0.0-beta.1. Zaktualizuj manifesty wtyczek, które wdrażasz przed aktualizacją lub razem z aktualizacją. Zobacz Zgodność wersji SDK.

Jeśli ustawisz html5PluginSdkVersion w /etc/bigbluebutton/bbb-web.properties, usuń go lub zaktualizuj do 1.0.0-beta.3. Zastąpienie powoduje, że manifesty są sprawdzane w oparciu o wersję zestawu SDK inną niż ta, którą faktycznie uruchamia klient.

Usuwanie przestarzałych opcji układu

System układu został uproszczony, aby używać jednego, ujednoliconego układu. Usunięto następujące układy: CUSTOM_LAYOUT, SMART_LAYOUT, PRESENTATION_FOCUS i VIDEO_FOCUS. Domyślny układ to teraz UNIFIED_LAYOUT.

Usunięto także moduł wyboru układu i przycisk układu push. Ustawienia showPushLayoutButton, showPushLayoutToggle i enableDeprecatedLayoutSelection nie są już dostępne.

Opcja layouts została usunięta z disabledFeatures.

Usunięto punkt końcowy REST

Przestarzały punkt końcowy REST /api/rest/clientSettings został usunięty. Ustawienia klienta są teraz obsługiwane przez stos GraphQL. Należy zaktualizować każdą integrację, która pobrała ustawienia klienta z tego punktu końcowego.

Inna usunięta konfiguracja

  • public.stats.log została usunięta i zastąpiona przez public.stats.logMediaStats (patrz Zmiany ustawień klienta (ustawienia.yml)).
  • captions nie jest już prawidłową wartością disabledFeatures. Nie przyniosło to żadnego efektu od wersji BBB 3.0, kiedy wpisywane podpisy zostały przeniesione do wtyczki. Użyj liveTranscription, aby wyłączyć automatyczną transkrypcję.

Zmiany w pliku events.xml

zmiany właściwości bbb-web

Usunięto

  • allowDuplicateExtUserid nie jest już rozpoznawany. Zamiast tego użyj maxUserConcurrentAccesses.
  • lockSettingsDisableNote nie jest już rozpoznawany; zamiast tego użyj lockSettingsDisableNotes. W wersji BBB 2.5 zmieniono nazwę pojedynczej właściwości.
  • clientLogoutTimerInMinutes został usunięty. Nigdy nie był używany przez klienta HTML5; jego ostatni czytnik, punkt końcowy /enter, został usunięty przed wersją BBB 4.0. — Jeśli dostosowałeś /usr/share/bbb-web/WEB-INF/classes/spring/resources.xml, usuń także wpis <property name="clientLogoutTimerInMinutes" .../> — w przeciwnym razie bbb-web nie uruchomi się (NotWritablePropertyException). Ostrzeżenie o wycofanej właściwości bbb-conf --check skanuje tylko /etc/bigbluebutton/bbb-web.properties, a nie resources.xml.
  • enteredUsersTimeout został usunięty. Ustawia czas, przez który bbb-web śledzi użytkowników, którzy dzwonili do punktu końcowego /enter bez dołączania się; ten punkt końcowy został usunięty w BBB 3.0, więc od tego czasu nic nie było śledzone. Pozostała wartość w /etc/bigbluebutton/bbb-web.properties jest ignorowana, a bbb-conf --check umieszcza ją na liście do usunięcia.
  • Jeśli dostosowałeś /usr/share/bbb-web/WEB-INF/classes/spring/resources.xml na miejscu, usuń także komponent bean enteredUserCleanupTimerTask oraz wpisy <property name="enteredUserCleanupTimerTask" .../> i <property name="enteredUsersTimeout" .../> - w przeciwnym razie bbb-web nie uruchomi się.
  • Usunięto sharedNotesEditor: BlockNote jest jedynym edytorem współdzielonych notatek (po raz pierwszy stał się domyślnym w wersji 4.0.0-beta.4; zobacz Promowane wspólne notatki BlockNote jako domyślne i Usunięty Etherpad). Pozostała wartość w /etc/bigbluebutton/bbb-web.properties jest ignorowana. — Jeśli dostosowałeś /usr/share/bbb-web/WEB-INF/classes/spring/resources.xml, usuń także wpis <property name="sharedNotesEditor" .../> — w przeciwnym razie bbb-web nie uruchomi się (NotWritablePropertyException).

Wartość zmieniona

  • Wartość domyślna defaultMeetingLayout zmieniona z CUSTOM_LAYOUT na UNIFIED_LAYOUT. Akceptowane wartości to teraz UNIFIED_LAYOUT (domyślnie) oraz opcje hybrydowe/niszowe CAMERAS_ONLY, PARTICIPANTS_AND_CHAT_ONLY, PRESENTATION_ONLY i MEDIA_ONLY. Poprzednie wartości CUSTOM_LAYOUT, SMART_LAYOUT, PRESENTATION_FOCUS i VIDEO_FOCUS nie są już akceptowane.
  • html5PluginSdkVersion zmieniono z 0.1.17 na 1.0.0-beta.3. Wtyczki, których requiredSdkVersion obejmuje tylko pakiet SDK 0.x, nie są już ładowane; zobacz Wstępne wydanie wtyczki SDK 1.0.
  • disabledFeatures akceptuje nową wartość: pinChatMessage (obok istniejących opcji związanych z czatem). — disabledFeatures nie wyświetla już captions jako opcji. Nie przyniosło to żadnego efektu od wersji BBB 3.0, kiedy wpisywane podpisy zostały przeniesione do wtyczki. Serwer, który nadal ustawia tę wartość w bbb-web.properties, nadal działa: wartość jest akceptowana i ignorowana. Użyj liveTranscription, aby wyłączyć automatyczną transkrypcję.
  • cameraBridge, screenShareBridge i audioBridge zmieniono z bbb-webrtc-sfu na livekit (zobacz LiveKit to domyślna platforma multimediów).

Dodano

  • Dodano lockSettingsPresenterPolicy (domyślnie requireApproval). Kontroluje, czy widzowie mogą poprosić o rolę prezentera; zobacz Prośba o przedstawienie.
  • dodano requireUserConsentBeforeUnmuting (domyślnie false). Dotyczy tylko przypadku allowModsToUnmuteUsers=true; gdy true, pojawia się okno dialogowe zgody, zanim moderator będzie mógł wyłączyć wyciszenie uczestnika.
  • dodano maskTagThreshold (domyślnie 0 = wyłączone). Po ustawieniu N każdy slajd, którego wygenerowany plik SVG zawiera N lub więcej znaczników <mask>, podczas konwersji powraca do rasteryzacji pełnego slajdu; zobacz Rasteryzuj slajdy, których SVG zawiera znaczniki maski.
  • dodano filterTagThreshold (domyślnie 1; 0 = wyłączone). Slajdy, których wygenerowany plik SVG zawiera N lub więcej znaczników <filter> (które pdftocairo emituje dla miękkich masek) są renderowane zarówno za pomocą pdftocairo, jak i pdftoppm i są rasteryzowane tylko wtedy, gdy oba renderowania zauważalnie się różnią. Naprawia to slajdy, które pokazywały się puste lub z brakującymi obrazami (#23953); zobacz Weryfikuj slajdy za pomocą miękkich masek.

Zmiany ustawień klienta (settings.yml)

Te zmiany dotyczą pliku konfiguracyjnego klienta (/etc/bigbluebutton/bbb-html5.yml, zastępując ustawienia domyślne w settings.yml).

Dodano

  • public.kurento.pagination.gridEnabled (domyślnie true) - czy przy zminimalizowanej prezentacji wyświetlana jest siatka awatarów bez kamery („siatka kamery internetowej”). Siatkę można również wyłączyć podczas spotkania za pomocą disabledFeatures=webcamGrid.
  • public.multiFunctionalMode.enabled (domyślnie false) - włącza dodatkowy/podwójny panel zawartości paska bocznego.
  • public.userList.searchBar.enabled (domyślnie true) - włącza pole wyszukiwania listy użytkowników.
  • public.app.appsGallery.maxPinnedApps (domyślnie 3) - maksymalna liczba aplikacji, które użytkownik może przypiąć w Galerii aplikacji.
  • public.app.remainingTimeThresholdInMinutes (domyślnie 6) - ile minut przed końcem spotkania z ustawionym duration pojawia się baner pozostałego czasu. Wcześniej był to zakodowany na stałe czas 30 minut; ustaw go na 30, aby przywrócić to zachowanie. Zobacz Konfiguruj, kiedy wyświetlany jest baner pozostałego czasu.
  • public.sidebarNavigation.appsToLabelAsNew (domyślnie []) - aplikacje do wyróżnienia "nową" etykietą (np. poll, breakoutroom, timer, audio-captions).
  • public.media.audio.audioWasmProcessing - blok konfiguracyjny dla opcji przetwarzania dźwięku "Advanced Filtering" (WASM); provider wybiera backend (domyślny bbba lub workadventureDtln), a dostawca może zastąpić wartości ustawione w constraints; zobacz Karta Dedykowanych ustawień audio.
  • public.app.defaultSettings.audio.processingMode (domyślny standard) - który z trzech trybów przetwarzania dźwięku (advanced, standard, original) jest wstępnie wybrany dla nowego użytkownika w Ustawieniach > Dźwięk. advanced powraca do standard, gdy przetwarzanie WASM nie jest obsługiwane przez przeglądarkę lub jest wyłączone po stronie serwera.
  • public.app.defaultSettings.application.recordingIndicatorAutoCollapse (domyślnie false) - zwija wskaźnik nagrywania na pasku nawigacyjnym do przycisku zawierającego tylko ikonę, który ujawnia swoją etykietę po najechaniu kursorem lub zaznaczeniu klawiatury. Użytkownicy mogą to zmienić w Ustawieniach > Aplikacja („Przycisk Zwiń nagrywanie”); telefony i wskaźnik tylko do odczytu nigdy się nie załamują.
  • public.media.audio.microphoneConstraints - ograniczenia audio na poziomie przeglądarki (automatyczna kontrola wzmocnienia, eliminacja echa, tłumienie szumów) stosowane, gdy użytkownik wybierze tryb przetwarzania dźwięku standard (przeniesione z public.app.defaultSettings.application.microphoneConstraints).
  • public.timer.presets, public.timer.quickAddButtons, public.timer.maxHours, public.timer.serverSyncTimeInterval - ustawienia wstępne i zachowanie timera.
  • public.app.breakouts.breakoutRoomMinimum (domyślnie 2) - minimalna liczba pokoi podgrup.
  • public.app.breakouts.inheritLockSettingsByDefault (domyślnie false) - wstępnie sprawdza opcję „Propaguj bieżące ustawienia blokady”, gdy moderator tworzy pokoje podgrup, takie jak captureSharedNotesByDefault i sendInvitationToAssignedModeratorsByDefault dla swoich opcji.
  • public.app.audioCaptions.showInSidebarNavigation i public.app.audioCaptions.terms - wyświetlaj podpisy w pasku bocznym nawigacji i konfiguruj adresy URL warunków korzystania z usługi według ustawień regionalnych.
  • public.app.darkTheme.autoDetectFromSystem (domyślny true) - używa preferencji systemu operacyjnego prefers-color-scheme jako motywu początkowego i kontynuuje podążanie za nim, dopóki użytkownik nie wybrał motywu ręcznie. Przełącznik „Tryb ciemny” dla każdego użytkownika i parametr bbb_prefer_dark_theme zawsze mają pierwszeństwo przed wykrytym motywem systemu.
  • public.stats.logMediaStats i public.stats.probes - rejestrowanie statystyk WebRTC po stronie klienta.
  • public.layout.showLeaveSessionLabel (domyślnie false) i public.layout.usersPerUserListPage (domyślnie 50).
  • public.sidebarNavigation.buttons - kontroluje, które wbudowane przyciski nawigacyjne na pasku bocznym renderują, w jakiej sekcji (top/center/bottom) i w jakiej kolejności. Jest to pełna lista zamienników (pomiń identyfikator, aby ukryć ten przycisk; identyfikatory wprowadzone w przyszłych wersjach wcześniejszych muszą zostać dodane ręcznie). Wartość domyślna: top: [profile, user-list, chat, notes], center: [apps-gallery, pinned-apps], bottom: [audio-captions, learning-dashboard, settings]. — public.app.audioCaptions.microphoneAlert (domyślnie enabled: true) — wyświetla ostrzeżenie, gdy włączone są napisy na żywo w WebSpeech, a użytkownik trzyma podłogę, ale nic nie jest transkrybowane (prawdopodobnie sygnał złego mikrofonu lub hałaśliwego otoczenia). Konfigurowalne za pomocą helpLink (puste ukrywa łącze), threshold (dB), speakingThreshold (ms), duration (ms; 0 = ręczne odrzucenie) i interval (ms).
  • public.plugins[].settings.pin / .isNew — wtyczka może domyślnie przypinać elementy, które wstawia do Galerii aplikacji (pin: true przypina wszystkie wstrzyknięte elementy; pin: ["id-a", "id-b"] przypina tylko te identyfikatory; wybory użytkownika przypinania/odpinania są zachowywane i przestrzegane), a isNew: true wyświetla „nową” wstążkę w elemencie galerii wtyczki.
  • public.whiteboard.wheelZoomRequiresCtrl (domyślnie true) - czy powiększanie prezentacji kółkiem myszy wymaga przytrzymania Ctrl (Cmd na macOS). Domyślnie przewijanie slajdu odbywa się za pomocą gołego kółka; ustaw na false dla zachowania BigBlueButton 3.0, gdy koło powiększa się bezpośrednio. Zobacz Tablica: przewiń, aby przesunąć, Ctrl+przewiń, aby powiększyć.
  • public.media.livekit.sdkLogBridge (domyślnie true) - przekazuje własne logi klienta livekit przez kliencki rejestrator BigBlueButton, dzięki czemu błędy multimediów na poziomie SDK docierają do zwykłego miejsca docelowego dzienników klienta.
  • public.media.livekit.negotiationProbe (domyślnie false) - instrumentacja debugowania, która rejestruje czas oczekiwania na ofertę subskrybenta, od otrzymania do wysłania do gniazda. Domyślnie wyłączone; włączaj tylko podczas diagnozowania opóźnienia negocjacji mediów.

Wartość zmieniona

  • public.chat.toolbar zawiera teraz opcję pin (do przypinania wiadomości czatu). — wartość domyślna public.layout.showParticipantsOnLogin została zmieniona z true na false. — wartość domyślna public.layout.syncCameraDockSizeAndPosition została zmieniona z false na true. — domyślny układ pod defaultSettings został przeniesiony z application.selectedLayout: 'custom' do layout.selectedLayout: 'unified' (przy czym pushLayout jest teraz zagnieżdżony pod layout). — public.user.label zyskał wpisy presenter i bot (oba domyślne true), a wartość domyślna moderator została zmieniona z false na true. — zmieniono domyślne ustawienia public.media.audio.defaultFullAudioBridge i public.media.audio.defaultListenOnlyBridge z fullaudio na livekit, dostosowując rezerwy klienta do LiveKit jako domyślnej struktury multimediów. (defaultFullAudioBridge zostało zastąpione przez ustawienie tworzenia/właściwości audioBridge; oba klawisze są oznaczone jako przestarzałe.)
  • public.app.defaultSettings.application.pushToTalkEnabled zmieniono z false na true - Naciśnij i mów (przytrzymaj M, aby pozostać niewyciszonym, dodany w BBB 3.0) jest teraz domyślnie włączony. — Domyślna wartość public.layout.showSessionDetailsOnJoin została zmieniona z true na false — okno dialogowe Szczegóły sesji nie jest już otwierane automatycznie podczas dołączania.
  • public.kurento.pagination.mobileGridSizes (moderator i viewer) zmieniono z 14 na 6 w ramach przeglądu układu mobilnego.
  • public.app.showConnectionErrors zawiera teraz nowy kod błędu 3007. Klient pokazuje to, gdy bbb-graphql-middleware odmówi subskrypcji, ponieważ połączenie osiągnęło max_connection_concurrent_subscriptions i prosi użytkownika o odświeżenie. Usuń 3007 z listy, aby powrócić do ogólnej obsługi 3006. Zobacz Typowe błędy klienta.

Usunięto

  • public.layout.showPushLayoutButton, public.layout.showPushLayoutToggle i public.layout.enableDeprecatedLayoutSelection.
  • public.stats.log (zastąpiony przez public.stats.logMediaStats).
  • public.app.defaultSettings.application.audioWasmProcessing i skomentowany przykład public.app.defaultSettings.application.microphoneConstraints - zastąpione przez public.app.defaultSettings.audio.processingMode i public.media.audio.microphoneConstraints (patrz Zakładka Dedykowane ustawienia audio). — Ustawienia klienta SIP.js/legacy-audio zostały usunięte wraz z mostkiem audio SIP.js teraz, gdy domyślną ścieżką audio jest LiveKit. Pod public.media: callTransferTimeout, callHangupTimeout, callHangupMaximumRetries, iceGatheringTimeout, audioConnectionTimeout, audioReconnectionDelay, audioReconnectionAttempts, sipjsHackViaWs, sipjsAllowMdns, sip_ws_host, websocketKeepAliveInterval, websocketKeepAliveDebounce, traceSip, sdpSemantics; plus public.app.ipv4FallbackDomain. Wszystkie z nich nadal ustawione w bbb-html5.yml są teraz dyskretnie ignorowane.
  • public.pads.url (adres URL Etherpada), usunięty razem z Etherpadem. Wcześniejsze wersje wstępne wersji 4.0 zapisywały to w bbb-html5.yml; aktualizacja usuwa wpis public.pads z tego pliku (patrz Usunięty Etherpad).

Rozwój

Aby uzyskać informacje na temat programowania w BigBlueButton, zobacz konfigurowanie środowiska programistycznego dla wersji 4.0.

Skrypty kompilacji dla pakietu 4.0 (przy użyciu fpm) znajdują się w repozytorium GitHub tutaj.

Wkład

Witamy współpracowników BigBlueButton 4.0! Obecnie najlepszymi sposobami wniesienia wkładu są: