BigBlueButton.plNiezależny serwis po polsku

Dostosowanie serwera

Zmiany ustawień interfejsu, nagrywania, audio, prezentacji i wdrożenia.

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

BigBlueButton zawiera wiele plików konfiguracyjnych, które oferują możliwości dostosowania instalacji.

Ogólne

Zachowywanie zmian w plikach konfiguracyjnych

Komponenty BigBlueButton korzystają z różnych plików konfiguracyjnych, które są dołączone do pakietów instalacyjnych. Jeśli dokonasz zmian w tych plikach konfiguracyjnych, zmiany zostaną utracone, gdy podczas aktualizacji zostanie zainstalowana zaktualizowana wersja pakietu. Aby zapobiec utracie dostosowań, większość komponentów akceptuje również zastępowanie plików konfiguracyjnych z /etc/bigbluebutton. BigBlueButton nie ingeruje w ten katalog (z wyjątkiem przypadków użycia polecenia bbb-conf --setip lub --setsecret wstawiającego nowe wartości).

Pełna lista plików konfiguracyjnych i ich zastępujących odpowiedników znajduje się w Pliki konfiguracyjne

Zachowywanie dostosowań przy użyciu Apply-config.sh

Pamiętaj, że począwszy od wersji BigBlueButton 2.6 zdecydowanie zalecamy zamiast tego dodanie ustawień niestandardowych do /etc/bigbluebutton. Zobacz listę plików zastąpień

Za każdym razem, gdy aktualizujesz serwer do najnowszej wersji BigBlueButton, używając kroków aktualizacji lub skryptu bbb-install.sh, jeśli dokonałeś niestandardowych zmian do plików konfiguracyjnych BigBlueButton [wdrażanych z pakietów], skrypty pakujące mogą zastąpić te zmiany.

Aby ułatwić zastosowanie zmian w konfiguracji, możesz utworzyć skrypt BASH pod adresem /etc/bigbluebutton/bbb-conf/apply-config.sh, który zawiera polecenia umożliwiające zastosowanie zmian. Skrypt bbb-conf, który jest uruchamiany jako część ostatnich kroków ręcznej aktualizacji lub przy użyciu bbb-install.sh, wykryje apply-config.sh i wywoła go tuż przed uruchomieniem wszystkich komponentów BigBlueButton.

W ten sposób możesz użyć apply-config.sh do zastosowania własnych zmian w konfiguracji po zaktualizowaniu wszystkich pakietów, ale tuż przed uruchomieniem BigBlueButton.

Na przykład, jeśli utworzysz /etc/bigbluebutton/bbb-conf/apply-config.sh z następującą zawartością i uczynisz go wykonywalnym za pomocą chmod +x /etc/bigbluebutton/bbb-conf/apply-config.sh

#!/bin/bash

# Pull in the helper functions for configuring BigBlueButton
source /etc/bigbluebutton/bbb-conf/apply-lib.sh

enableUFWRules

wtedy po wywołaniu przez bbb-conf powyższy skrypt apply-config.sh będzie

  • użyj funkcji pomocniczej enableUFWRules aby ograniczyć dostęp do określonych portów, oraz

Należy zauważyć, że apply-conf.sh zawiera skrypt pomocniczy apply-lib.sh. Ten skrypt pomocniczy zawiera pewne funkcje ułatwiające zastosowanie typowych zmian w konfiguracji, wraz z niektórymi zmiennymi pomocniczymi, takimi jak HTML5_CONFIG.

Zawartość apply-config.sh nie jest własnością żadnego pakietu, więc nigdy nie zostanie nadpisana.

Typowe dostosowania

Nagrywanie

Usuń nieprzetworzone dane z opublikowanych nagrań

Po zakończeniu spotkania serwer BigBlueButton archiwizuje dane spotkania (określane jako „surowe” dane).

Zachowanie nieprzetworzonych danych pozwala na odbudowanie nagrania, jeśli wystąpił problem z przetwarzaniem, włączenie nowego formatu nagrania lub jeśli zostało ono przypadkowo usunięte przez użytkownika; jednak kompromisem jest to, że przechowywanie surowych danych z czasem zajmie więcej miejsca na dysku.

Domyślnie serwer BigBlueButton automatycznie usuwa surowe dane nagrania po 14 dniach od jego publikacji. Można to dostosować edytując plik /etc/cron.daily/bigbluebutton. Poszukaj tej linii w górnej części pliku:

published_days=14

I dostosuj go do żądanej liczby dni. Jeśli zamiast tego chcesz całkowicie wyłączyć czyszczenie nieprzetworzonych danych nagrania, skomentuj następujący wiersz u dołu pliku:

remove_raw_of_published_recordings

Usuń nagrania starsze niż N dni

Aby usunąć nagrania starsze niż 14 dni utwórz plik /etc/cron.daily/bbb-recording-cleanup o zawartości

#!/bin/bash

MAXAGE=14

LOGFILE=/var/log/bigbluebutton/bbb-recording-cleanup.log

shopt -s nullglob

NOW=$(date +%s)

echo "$(date --rfc-3339=seconds) Deleting recordings older than ${MAXAGE} days" >>"${LOGFILE}"

for donefile in /var/bigbluebutton/recording/status/published/*-presentation.done ; do
        MTIME=$(stat -c %Y "${donefile}")
        # Check the age of the recording
        if [ $(( ( $NOW - $MTIME ) / 86400 )) -gt $MAXAGE ]; then
                MEETING_ID=$(basename "${donefile}")
                MEETING_ID=${MEETING_ID%-presentation.done}
                echo "${MEETING_ID}" >> "${LOGFILE}"

                bbb-record --delete "${MEETING_ID}" >>"${LOGFILE}"
        fi
done

for eventsfile in /var/bigbluebutton/recording/raw/*/events.xml ; do
        MTIME=$(stat -c %Y "${eventsfile}")
        # Check the age of the recording
        if [ $(( ( $NOW - $MTIME ) / 86400 )) -gt $MAXAGE ]; then
                MEETING_ID="${eventsfile%/events.xml}"
                MEETING_ID="${MEETING_ID##*/}"
                echo "${MEETING_ID}" >> "${LOGFILE}"

                bbb-record --delete "${MEETING_ID}" >>"${LOGFILE}"
        fi
done

Zmień wartość MAXAGE, aby określić, ile dni mają być przechowywane nagrania w formacie presentation na serwerze BigBlueButton. Po utworzeniu pliku nadaj mu charakter wykonywalny.

$ chmod +x /etc/cron.daily/bbb-recording-cleanup

Przenieś nagrania na inną partycję

Większość pamięci BigBlueButton znajduje się w katalogu /var/bigbluebutton (tutaj przechowywane są wszystkie nagrania). Jeśli chcesz przenieść ten katalog na inną partycję, powiedz /mnt/data, wykonaj następujące czynności:

$ sudo bbb-conf --stop
$ mv /var/bigbluebutton /mnt/data
$ ln -s /mnt/data/bigbluebutton /var/bigbluebutton
$ sudo bbb-conf --start

Migracja nagrań z poprzedniej wersji

W zależności od poprzedniej wersji mogą wystąpić pewne różnice w generowanych metadanych. Aby to naprawić, konieczne będzie wykonanie odpowiednich skryptów w celu aktualizacji przeniesionych nagrań.

$ cd /usr/local/bigbluebutton/core/scripts
Od wersji 0.9
$ sudo ./bbb-0.9-beta-recording-update
$ sudo ./bbb-0.9-recording-size
Od wersji 1.0
$ sudo ./bbb-1.1-meeting-tag

Jeśli z jakiegoś powodu skrypty muszą zostać uruchomione więcej niż raz, użyj modyfikatora --force.

$ sudo ./bbb-x.x-script --force

Odtwórz nagrania wykonane za pomocą BigBlueButton 0.81 lub 0.9

Nagrania wykonane za pomocą BigBlueButton 0.81 i 0.9 odtwarzają własne odtwarzacze, obsługiwane pod /playback/presentation/0.81/ i /playback/presentation/0.9.0/. Te odtwarzacze nie są już instalowane domyślnie: bbb-playback-presentation dostarcza tylko skrypty przetwarzające, a linki do starych odtwarzaczy odpowiadają 404. Jeśli przeniosłeś nagrania z tych wersji i nadal musisz je odtwarzać, zainstaluj opcjonalny pakiet:

$ sudo apt-get install bbb-playback-presentation-legacy

Pakiet instaluje oba odtwarzacze i przekierowanie z niewersjonowanego łącza /playback/presentation/playback.html do odtwarzacza 0.81, więc linki publikowane przez te wersje nadal działają. Odtwarzacze te renderują tylko nagrania utworzone przez BigBlueButton 0.81 i 0.9; nagrania wykonane w aktualnej wersji wykorzystują odtwarzacz 2.3 z bbb-playback. Aby ponownie usunąć graczy, uruchom sudo apt-get remove bbb-playback-presentation-legacy.

Włącz odtwarzanie nagrań na iOS

Format odtwarzania presentation koduje wideo udostępnione podczas sesji (kamera internetowa i udostępnienie ekranu) jako pliki .webm (VP8); jednakże urządzenia iOS obsługują tylko pliki wideo .mp4 (h.264). Aby włączyć odtwarzanie formatu nagrywania presentation na urządzeniach z systemem iOS, edytuj /usr/local/bigbluebutton/core/scripts/presentation.yml i odkomentuj wpis dotyczący mp4.

video_formats:
  - webm
  - mp4

Ta zmiana spowoduje, że BigBlueButton wygeneruje dodatkowy plik .mp4 dla komponentów wideo (kamera internetowa i udział ekranu), które zostały udostępnione podczas sesji. Zmiana ta dotyczy wyłącznie nowych nagrań. Jeśli chcesz, aby ta zmiana dotyczyła istniejących nagrań, musisz użyć komendy bbb-record, aby odbudować je.

Ta zmiana zwiększy czas przetwarzania i rozmiar przechowywania nagrań z plikami wideo, ponieważ będzie teraz generować dwa filmy: .webm i .mp4 dla filmów z kamery internetowej i udostępnianych na ekranie.

Zawsze nagrywaj każde spotkanie

Domyślnie serwer BigBlueButton wygeneruje nagranie, gdy spełnione są oba poniższe warunki:

  1. spotkanie zostało utworzone za pomocą record=true w wywołaniu API tworzenia oraz
  2. moderator podczas spotkania kliknął przycisk Rozpocznij/Zatrzymaj nagrywanie (przynajmniej raz).

Można jednak skonfigurować serwer BigBlueButton tak, aby nagrywał każde spotkanie i wyłączał możliwość zatrzymywania nagrywania przez moderatora. Edytuj /etc/bigbluebutton/bbb-web.properties i ustaw następujące właściwości:

# Start recording when first user joins the meeting.
# For backward compatibility with 0.81 where whole meeting
# is recorded.
autoStartRecording=true

# Allow the user to start/stop recording.
allowStartStopRecording=false

Aby zastosować zmiany, zrestartuj serwer BigBlueButton za pomocą komendy

$ sudo bbb-conf --restart

Przesyłaj nagrania

Konfigurując BigBlueButton na serwerze, możesz chcieć przenieść nagrania ze starszego serwera. Jeśli na Twoim starym serwerze wszystkie oryginalne pliki nagrań znajdują się w katalogu /var/bigbluebutton/recording/raw, możesz przenieść te pliki na nowy serwer za pomocą rsync.

Na przykład uruchomienie tej komendy rsync na nowym serwerze spowoduje skopiowanie pliku nagrania ze starego serwera.

$ rsync -rP root@old-bbb-server.example.com:/var/bigbluebutton/recording/raw/ /var/bigbluebutton/recording/raw/

Alternatywnie możesz utworzyć archiwum tar katalogu /var/bigbluebutton/recording/raw i skopiować je za pomocą scp lub użyć współdzielonego montowania NFS.

Po skopiowaniu plików (przez rsync lub tar-and-copy), będziesz musiał naprawić uprawnienia na nowym serwerze za pomocą następującej komendy chown.

$ chown -R bigbluebutton:bigbluebutton /var/bigbluebutton/recording/raw

Po przesłaniu nagrań przejrzyj próbkę nagrań, aby upewnić się, że odtwarzają się prawidłowo (powinny).

Przetwórz ponownie nieprzetworzone nagrania

Jeśli przeniosłeś surową zawartość, możesz także ponownie przetworzyć nagrania przy użyciu nowszych skryptów, aby odbudować je w najnowszym formacie odtwarzania (w tym wszelkie poprawki błędów wprowadzone w najnowszej wersji). Uwaga: Ponowne przetwarzanie może zająć dużo czasu (około 25% do 50% oryginalnej długości nagrań) i spowoduje zużycie dużej ilości procesora na nowym serwerze BigBlueButton podczas oczekiwania na przetworzenie nagrań.

Jeśli jesteś zainteresowany ponownym przetwarzaniem starszych nagrań, spróbuj najpierw z jednym lub dwoma większymi nagraniami. Jeśli nie ma zauważalnej różnicy, nie ma potrzeby ponownego przetwarzania pozostałych.

I zainicjuj ponowne przetwarzanie pojedynczego nagrania, możesz to zrobić

$ sudo bbb-record --rebuild <recording_id>

gdzie <recording_id> to nazwa pliku nieprzetworzonego nagrania w /var/bigbluebutton/recording/raw, na przykład

$ sudo bbb-record --rebuild f4ae6fd61e2e95940e2e5a8a246569674c63cb4a-1517234271176

Jeśli na Twoim starym serwerze wszystkie oryginalne pliki nagrań znajdują się w katalogu /var/bigbluebutton/recording/raw, możesz przenieść te pliki na nowy serwer, na przykład za pomocą rsync:

Jeśli chcesz odbudować wszystkie swoje nagrania, wpisz polecenie

Ostrzeżenie: Jeśli masz dużą liczbę nagrań, spowoduje to odbudowanie wszystkich z nich i nie będzie przetwarzać żadnych nowych nagrań do czasu zakończenia procesu odbudowy. Nie rób tego, jeśli nie masz takiego zamiaru. Nie wykonuj tego polecenia, aby rozwiązać problemy z błędami nagrywania, zamiast tego zobacz Rozwiązywanie problemów z nagrywaniem.

$ sudo bbb-record --rebuildall

Serwer BigBlueButton automatycznie przejrzy nagrania, odbuduje je i opublikuje. Aby zobaczyć postęp, możesz użyć komendy bbb-record --watch.

Przenieś opublikowane nagrania z innego serwera

Jeśli chcesz wykonać minimalną ilość pracy, aby szybko utworzyć istniejące nagrania na starszym serwerze BigBlueButton, przenieś zawartość /var/bigbluebutton/published i /var/bigbluebutton/unpublished katalogi. Dodatkowo, aby zachować kopię zapasową oryginalnego nośnika raw, należy przenieść zawartość katalogu /var/bigbluebutton/recording/raw.

Oto przykładowy zestaw poleceń rsync, które umożliwiają osiągnięcie tego celu; uruchom je na nowym serwerze, aby skopiować pliki ze starego serwera.

$ rsync -rP root@old-bbb-server:/var/bigbluebutton/published/ /var/bigbluebutton/published/
$ rsync -rP root@old-bbb-server:/var/bigbluebutton/unpublished/ /var/bigbluebutton/unpublished/
$ rsync -rP root@old-bbb-server:/var/bigbluebutton/recording/raw/ /var/bigbluebutton/recording/raw/

Można również zastosować inne metody przesyłania tych plików; na przykład możesz utworzyć archiwum tar każdego z katalogów i przesłać je przez scp lub użyć współdzielonego montowania NFS.

Następnie będziesz musiał naprawić uprawnienia do nowo skopiowanych nagrań:

$ chown -R bigbluebutton:bigbluebutton /var/bigbluebutton/published /var/bigbluebutton/unpublished /var/bigbluebutton/recording/raw

Jeśli nagrania zostały skopiowane z serwera o innej nazwie hosta, będziesz musiał uruchomić następujące polecenie, aby naprawić zapisane nazwy hostów. (Jeśli tego nie zrobisz, zwróci błąd 404 lub spróbuje załadować nagrania ze starego serwera zamiast z nowego!)

Należy pamiętać, że to polecenie zrestartuje serwer BigBlueButton, przerywając wszelkie sesje na żywo.

$ sudo bbb-conf --setip <ip_address_or_hostname>

Na przykład

$ sudo bbb-conf --setip bigbluebutton.example.com

Przesłane nagrania powinny być natychmiast widoczne poprzez API nagrań BigBlueButton.

Zmień czas przetwarzania

Na serwerze BigBlueButton 2.2.x serwer będzie przetwarzał nagrania po zakończeniu spotkań. Możesz ograniczyć interwał przetwarzania zapisu do określonych godzin tworząc plik /etc/systemd/system/bbb-record-core.timer.d/override.conf o zawartości

[Timer]
OnActiveSec=
OnUnitInactiveSec=
OnCalendar=21,22,23,00,01,02,03:*:00
Persistent=false

i wykonaj systemctl daemon-reload. Ten plik zastępuje czas uruchomienia systemd bbb-record-core.target. W powyższym przykładzie nagrania rozpoczną się przetwarzanie między 21:00 a 03:59.

Zezwól na zwrot wszystkich nagrań

W wersji 2.6.x do bigbluebutton.properties dodano nową właściwość konfiguracyjną allowFetchAllRecordings. Ta właściwość określa, czy każde nagranie na serwerze może zostać zwrócone w pojedynczej odpowiedzi na wywołanie getRecordings. Domyślnie ta właściwość jest ustawiona na true. Na serwerze z dużą liczbą nagrań próba zwrócenia każdego nagrania w jednej odpowiedzi może spowodować duże obciążenie serwera, dlatego zaleca się zmianę tej właściwości na false. Po wykonaniu tej czynności każde żądanie do getRecordings, które nie określa żadnych identyfikatorów nagrań lub spotkań, ani parametrów paginacji, nie zwróci żadnych nagrań, aby zapobiec zwróceniu wszystkich nagrań.

Zwiększ liczbę rejestrujących pracowników

Ostrzeżenie

Jeśli Ustawienie defaultKeepEvents lub meetingKeepEvents w bbb-web jest włączone, nie wolno zwiększać liczby pracowników nagrywających BigBlueButton. Może to spowodować utratę danych, ponieważ wydarzenia spotkań nie zostaną poprawnie zarchiwizowane.

Aby uzyskać więcej informacji, zobacz BigBlueButton numer 12503.

Uruchom systemctl edit bbb-rap-resque-worker.service i wstaw do edytora następujący wpis, zastępując liczbę żądaną liczbą nagrań do jednoczesnego przetwarzania.

[Service]
Environment=COUNT=3

Następnie uruchom ponownie proces roboczy: systemctl restart bbb-rap-resque-worker.service

Jeśli teraz uruchomisz systemctl status bbb-rap-resque-worker.service, zobaczysz, że ma on żądaną liczbę pracowników gotowych do równoległego przetwarzania nagrań:

● bbb-rap-resque-worker.service - BigBlueButton resque worker for recordings
   Loaded: loaded (/usr/lib/systemd/system/bbb-rap-resque-worker.service; disabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/bbb-rap-resque-worker.service.d
           └─override.conf
   Active: active (running) since Sat 2021-01-09 12:19:22 UTC; 6s ago
 Main PID: 23630 (sh)
    Tasks: 15 (limit: 4915)
   CGroup: /system.slice/bbb-rap-resque-worker.service
      ├─23630 /bin/sh -c /usr/bin/rake -f ../Rakefile resque:workers >> /var/log/bigbluebutton/bbb-rap-worker.log
      ├─23631 /usr/bin/ruby /usr/bin/rake -f ../Rakefile resque:workers
      ├─23650 resque-2.0.0: Waiting for rap:archive,rap:publish,rap:process,rap:sanity,rap:captions
      ├─23651 resque-2.0.0: Waiting for rap:archive,rap:publish,rap:process,rap:sanity,rap:captions
      └─23652 resque-2.0.0: Waiting for rap:archive,rap:publish,rap:process,rap:sanity,rap:captions

Zainstaluj dodatkowe formaty przetwarzania nagrywania

Oprócz formatu presentation, który jest instalowany i włączany domyślnie, dla BigBlueButton dostępnych jest kilka opcjonalnych formatów nagrywania:

  • notes: Udostępnia udostępnione notatki ze spotkania w formie dokumentu.
  • screenshare: Wygeneruj pojedynczy plik wideo na podstawie udostępniania ekranu i dźwięku spotkania.
  • podcast: Wygeneruj nagranie zawierające tylko dźwięk.
  • video: Wygeneruj nagranie zawierające kamery internetowe, obszar prezentacji i udostępnianie ekranu połączone w jeden plik wideo.

Skrypty przetwarzania i pliki obsługi odtwarzania dla tych formatów nagrywania można zainstalować z pakietów o nazwie bbb-playback-formatname (np. bbb-playback-video)

Obecnie występuje problem polegający na tym, że formaty nagrywania nie są automatycznie włączane podczas instalacji - zobacz #12241, aby uzyskać szczegółowe informacje.

W celu ręcznego włączenia formatów nagrywania należy dokonać edycji pliku /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml. Poszukaj sekcji o nazwie steps:. W tej sekcji zdefiniowany jest przebieg przetwarzania nagrania, w tym jakie etapy przetwarzania nagrania są wykonywane i w jakiej kolejności należy je wykonać. Aby mieć pewność, że Twoje modyfikacje nie zostaną utracone po zainstalowaniu nowej wersji pakietów, możesz [utworzyć plik i] zapisać swoje zmiany w /etc/bigbluebutton/recording/recording.yml.

Aby włączyć nowy format nagrywania, należy dodać nowy krok o nazwie process:formatname, który będzie uruchamiany po kroku o nazwie captions, oraz nowy krok o nazwie publish:formatname, który będzie uruchamiany po kroku process:formatname. Może być konieczne przekonwertowanie niektórych kroków na format listy.

Oto przykładowe kroki w BigBlueButton 3.0 z włączonym formatem presentation:

steps:
  archive: 'sanity'
  sanity: 'captions'
  captions: 'process:presentation'
  'process:presentation': 'publish:presentation'

Jeśli dodatkowo włączysz format nagrywania video, kroki będą musiały zostać zmienione tak, aby wyglądały tak:

cat /etc/bigbluebutton/recording/recording.yml

steps:
  archive: 'sanity'
  sanity: 'captions'
  captions:
    - 'process:presentation'
    - 'process:video'
  'process:presentation': 'publish:presentation'
  'process:video': 'publish:video'

Ten wzór można powtórzyć dla dodatkowych formatów nagrywania. Pamiętaj, że bardzo ważne jest, aby nazwy kroków zawierające dwukropek (:) umieścić w cudzysłowie.

Po dokonaniu edycji pliku konfiguracyjnego należy zrestartować kolejkę przetwarzania zapisu: systemctl restart bbb-rap-resque-worker.service w celu uwzględnienia zmian.

Aby wyłączyć jeden lub więcej włączonych formatów nagrywania dla pojedynczego spotkania, przekaż meta_bbb-disable-recording-formats w wywołaniu API create z listą nazw formatów rozdzielonych przecinkami. Na przykład meta_bbb-disable-recording-formats=video,presentation (lub meta_bbb-disable-recording-formats=[video,presentation]) pomija formaty nagrywania video i presentation dla tego spotkania. W nazwach formatów nie jest rozróżniana wielkość liter i odpowiadają one części formatu kroków nagrywania. Wyłączone formaty nie są przetwarzane ani publikowane, więc nie uruchamiają wywołań zwrotnych gotowych do nagrania.

Poniższy skrypt umożliwi nagrywanie wideo w formacie serwera BigBlueButton 2.6+.

#!/bin/bash
mkdir -p /etc/bigbluebutton/recording
cat > /etc/bigbluebutton/recording/recording.yml << REC
steps:
  archive: "sanity"
  sanity: "captions"
  captions:
    - process:presentation
    - process:video
  process:presentation: publish:presentation
  process:video: publish:video
REC
if ! dpkg -l | grep -q bbb-playback-video; then
  apt install -y bbb-playback-video
  systemctl restart bbb-rap-resque-worker.service
fi

Włącz generowanie wyjścia wideo w formacie MP4 (H.264)

Domyślnie BigBlueButton generuje nagrania wideo jako pliki .webm przy użyciu kodeka wideo VP9. Są one obsługiwane w większości przeglądarek internetowych na komputerach stacjonarnych, ale mogą nie działać na urządzeniach mobilnych z systemem iOS. Możesz dodatkowo włączyć kodek wideo H.264 w niektórych formatach nagrywania (należy pamiętać, że wymienione poniżej pliki .yml istnieją tylko wtedy, gdy zainstalowany jest odpowiedni pakiet formatów):

video

Edytuj plik /usr/local/bigbluebutton/core/scripts/video.yml i odkomentuj linie pod etykietą formats: dla typu MIME video/mp4.

Opcje kodowania można dostosować w celu przyspieszenia kodowania lub zwiększenia jakości generowania wideo zgodnie z potrzebami.

presentation

Edytuj plik /usr/local/bigbluebutton/core/scripts/presentation.yml i odkomentuj wpis dla mp4:

video_formats:
  - webm
  - mp4

screenshare

Edytuj plik /usr/local/bigbluebutton/core/scripts/screenshare.yml i odkomentuj linie pod etykietą :formats: dla typu MIME video/mp4:

  - :mimetype: 'video/mp4; codecs="avc1.640028, mp4a.40.2"'
    :extension: mp4
    :parameters:
      - [ '-c:v', 'libx264', '-crf', '21', '-preset', 'medium', '-profile:v', 'high', '-level', '40', '-g', '240',
          '-c:a', 'aac', '-b:a', '96K',
          '-threads', '2', '-f', 'mp4', '-movflags', 'faststart' ]

Opcje kodowania można dostosować w celu przyspieszenia kodowania lub zwiększenia jakości generowania wideo, zgodnie z potrzebami.

Wideo

Zmniejsz przepustowość z kamer internetowych

Możesz wykorzystać wykorzystanie przepustowości na swoim serwerze BigBlueButton za pomocą narzędzia takiego jak bmon (sudo apt-get install bmon). Możesz zmienić ustawienia maksymalnej przepustowości dla każdej opcji kamery internetowej (niska, średnia, wysoka, wysoka rozdzielczość), edytując /usr/share/bigbluebutton/html5-client/private/config/settings.yml i modyfikując wpisy dla

cameraProfiles:
  - id: low
    name: Low quality
    default: false
    bitrate: 100
  - id: medium
    name: Medium quality
    default: true
    bitrate: 200
  - id: high
    name: High quality
    default: false
    bitrate: 500
  - id: hd
    name: High definition
    default: false
    bitrate: 800

Ustawienia bitrate podano w kbitach/s (tj. 100 kbitów/s). Po zmodyfikowaniu wartości zapisz plik i zrestartuj serwer BigBlueButton sudo bbb-conf --restart, aby ustawienia zaczęły obowiązywać. Najniższe ustawienie dozwolone dla WebRTC to 30 Kbitów/s.

Jeśli masz sesje, podczas których chcesz współdzielić wiele kamer internetowych, na przykład dziesięć lub więcej, ustawienie bitrate dla low na 50 i medium na 100 pomoże zmniejszyć ogólną przepustowość serwera. Gdy współdzielonych jest wiele kamer internetowych, rozmiar kamer internetowych staje się tak mały, że zmniejszenie bitrate nie będzie zauważalne podczas sesji na żywo.

Aby mieć pewność, że modyfikacje nie zostaną utracone po zainstalowaniu nowej wersji pakietów, możesz [utworzyć plik i] zapisać swoje zmiany w /etc/bigbluebutton/bbb-html5.yml.

Sprawdzanie poprawności ustawień klienta zastępuje

Kiedy nadpisujesz ustawienia klienta HTML5 - poprzez /etc/bigbluebutton/bbb-html5.yml lub podczas spotkania poprzez clientSettingsOverride / clientSettingsOverrideJsonUrl utwórz parametry - klucze, które nie istnieją w bazie settings.yml (literówki, przestarzałe parametry lub wartości umieszczone na niewłaściwym poziomie w strukturze) są scalane, ale nigdy nie czytane przez klienta, więc są po cichu ignorowane.

BigBlueButton loguje WARN w bbb-apps-akka dla każdego takiego klucza, więc problem jest widoczny. Ostrzeżenie nie ma charakteru blokującego: wartość jest nadal stosowana.

W środowiskach testowych i przejściowych możesz dodatkowo włączyć ścisłą weryfikację, która zamienia te ostrzeżenia w twarde awarie. Jest domyślnie wyłączona i kontrolowana przez pojedyncze ustawienie clientSettingsOverrideStrictValidation w /etc/bigbluebutton/bbb-web.properties. Zarówno bbb-web, jak i bbb-apps-akka odczytują tę samą właściwość (akka czyta plik bezpośrednio podczas rozruchu), więc jest jeden przełącznik i nie ma ryzyka, że ​​oba procesy się nie zgadzają. Po ustawieniu na true:

  • Przesłonięcie systemu plików (/etc/bigbluebutton/bbb-html5.yml), wymuszone przez bbb-apps-akka podczas rozruchu. Jeśli plik przesłonięcia powoduje problemy, bbb-apps-akka rejestruje jawny błąd wyświetlający listę każdego niewłaściwego klucza i kończy pracę (usługa nie uruchamia się), więc zła konfiguracja przerywa wdrożenie, zamiast działać po cichu.
  • Przesłonięcie interfejsu API (clientSettingsOverride / clientSettingsOverrideJsonUrl), wymuszone przez bbb-web podczas tworzenia. Jeśli wywołanie /create powoduje nadpisanie z problemami, połączenie zostanie odrzucone z returncode=FAILED i messageKey=clientSettingsOverrideValidationError, z kluczami powodującymi problemy wymienionymi w komunikacie; spotkanie nie zostało utworzone.

Zachowaj false w produkcji, chyba że chcesz, aby takie nadpisania były odrzucane.

Wyłącz kamery internetowe

Możesz wyłączyć kamery internetowe, ustawiając enableVideo na false w pliku /etc/bigbluebutton/bbb-html5.yml dla klienta HTML5.

test -s /etc/bigbluebutton/bbb-html5.yml || echo '{}' > /etc/bigbluebutton/bbb-html5.yml

yq-go e -i '.public.kurento.enableVideo = false' /etc/bigbluebutton/bbb-html5.yml

i uruchom bbb-conf --restart

Wyłącz udostępnianie ekranu

Możesz wyłączyć udostępnianie ekranu, ustawiając enableScreensharing na false w pliku /etc/bigbluebutton/bbb-html5.yml dla klienta HTML5.

test -s /etc/bigbluebutton/bbb-html5.yml || echo '{}' > /etc/bigbluebutton/bbb-html5.yml

yq-go e -i '.public.kurento.enableScreensharing = false' /etc/bigbluebutton/bbb-html5.yml

Zmniejsz przepustowość dla kamer internetowych

Jeśli oczekujesz, że użytkownicy będą współużytkować wiele kamer internetowych, możesz zmniejszyć przepustowość kamer internetowych. W tym celu należy wprowadzić zmiany w public.kurento.cameraProfiles poprzez nadpisanie.

Uwaga: jeśli dokonałeś innych zmian w sekcji public.kurento.cameraProfiles w /etc/bigbluebutton/bbb-html5.yml , powinieneś postępować ostrożnie. Prawdopodobnie chciałbyś tylko uruchomić polecenia znajdujące się na dole, pomijając ładowanie profili kamery.

Poniższe polecenie skopiuje WSZYSTKIE DOMYŚLNE profile kamer ze źródła /usr/share/bigbluebutton/html5-client/private/config/settings.yml do lokalizacji zastąpienia /etc/bigbluebutton/bbb-html5.yml. Jeśli miałeś wcześniej powiązane zastąpienia, prawdopodobnie nie chcesz uruchamiać tego polecenia.

test -s /etc/bigbluebutton/bbb-html5.yml || echo '{}' > /etc/bigbluebutton/bbb-html5.yml

yq-go e -i '.public.kurento.cameraProfiles = (load("/usr/share/bigbluebutton/html5-client/private/config/settings.yml") | .public.kurento.cameraProfiles)' /etc/bigbluebutton/bbb-html5.yml

Teraz, gdy masz już listę profili kamer w /etc/bigbluebutton/bbb-html5.yml następujące polecenia yq-go dostosują szybkość transmisji i to, czy profil jest domyślny.

echo "  - Setting camera defaults"

test -s /etc/bigbluebutton/bbb-html5.yml || echo '{}' > /etc/bigbluebutton/bbb-html5.yml

yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "low") ).bitrate = 50' /etc/bigbluebutton/bbb-html5.yml
yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "medium") ).bitrate = 100' /etc/bigbluebutton/bbb-html5.yml
yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "high") ).bitrate = 200' /etc/bigbluebutton/bbb-html5.yml
yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "hd") ).bitrate = 300' /etc/bigbluebutton/bbb-html5.yml

yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "low") ).default = true' /etc/bigbluebutton/bbb-html5.yml
yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "medium") ).default = false' /etc/bigbluebutton/bbb-html5.yml
yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "high") ).default = false' /etc/bigbluebutton/bbb-html5.yml
yq-go e -i '( .public.kurento.cameraProfiles[] | select(.id == "hd") ).default = false' /etc/bigbluebutton/bbb-html5.yml

Zmień parametry jakości udostępniania ekranu

Jakość udostępniania ekranu można dostosować w celu poprawy jakości lub zmniejszenia wykorzystania przepustowości. Istnieją różne konfiguracje spotkań i nagrań na żywo i należy je zmieniać niezależnie od siebie.

Dla nagrań można zmienić następujące parametry (format prezentacji):

  • /usr/local/bigbluebutton/core/scripts/presentation.yml: deskshare_output_width (domyślnie: 1280)
  • /usr/local/bigbluebutton/core/scripts/presentation.yml: deskshare_output_height (domyślnie: 720)
  • /usr/local/bigbluebutton/core/scripts/presentation.yml: deskshare_output_framerate (domyślnie: 5)

Załóżmy na przykład, że chcesz zwiększyć rozdzielczość wyjściową i liczbę klatek na sekundę nagranego multimediów współdzielonych na ekranie, aby dopasować je do strumienia 1080p/15 FPS. Konieczne byłyby następujące zmiany:

  • $ yq-go e -i '.deskshare_output_width = 1920' /usr/local/bigbluebutton/core/scripts/presentation.yml
  • $ yq-go e -i '.deskshare_output_height = 1080' /usr/local/bigbluebutton/core/scripts/presentation.yml
  • $ yq-go e -i '.deskshare_output_framerate = 15' /usr/local/bigbluebutton/core/scripts/presentation.yml

W przypadku spotkań na żywo następujące parametry można zmienić:

  • /etc/bigbluebutton/bbb-html5.yml: public.kurento.screenshare.bitrate
  • /etc/bigbluebutton/bbb-html5.yml: public.kurento.screenshare.constraints

Szybkość transmisji jest określana w kb/s i reprezentuje maksymalne wykorzystanie przepustowości podczas udostępniania ekranu. Ustawienie wyższej wartości może poprawić jakość, ale także zwiększyć wykorzystanie przepustowości, natomiast ustawienie niższej wartości może obniżyć jakość, ale zmniejszy średnie wykorzystanie przepustowości. Ograniczenia są określone jako obiekt YAML z taką samą semantyką jak MediaTrackConstraints ze specyfikacji WebRTC. Zalecamy sprawdzenie wyżej wymienionego łącza MDN, a także specyfikacji API przechwytywania multimediów i strumieni, aby uzyskać obszerną listę ograniczeń. Aby ustawić nowe ograniczenia współdzielenia ekranu, przetłumacz obiekt ograniczeń JSON na obiekt w formacie YAML i umieść go w public.kurento.screenshare.constraints. Następnie uruchom ponownie BigBlueButton (sudo bbb-conf --restart). Załóżmy na przykład, że chcesz ustawić maksymalną rozdzielczość udostępniania ekranu na 1080p, zmienić maksymalną przepływność na 2000 kbps i ustawić docelową wartość 10 klatek na sekundę. Do /etc/bigbluebutton/bbb-html5.yml należy dodać następujące elementy:

public:
  kurento:
    screenshare:
      bitrate: 2000
      constraints:
        audio: true
        video:
          width:
            max: 1920
          height:
            max: 1080
          frameRate:
            ideal: 10
            max: 10

Ogranicz ogólne strumienie multimediów

W każdej konfiguracji serwera BigBlueButton istnieje ograniczenie liczby udostępnianych strumieni multimediów. Strumień multimediów jest tworzony, gdy użytkownik transmituje lub odbiera wideo z kamery internetowej lub udostępnionego ekranu, albo gdy użytkownik przyłącza się tylko do słuchania dźwięku. Jeśli Twój serwer będzie korzystał z kamer internetowych, możesz ustawić limity na użytkownika, na pokój i ogólny limit na serwer w /usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml. Wartość domyślna to brak limitu.

mediaThresholds:
  global: 0
  perRoom: 0
  perUser: 0

Na przykład poniższe ustawienia ograniczą całkowitą liczbę multimediów we wszystkich spotkaniach do 1000 strumieni, maksymalną liczbę strumieni z kamery internetowej na spotkanie do 300 i nie będą ograniczać liczby strumieni z kamery internetowej na użytkownika.

mediaThresholds:
  global: 1000
  perRoom: 300
  perUser: 0

Na serwerze BigBlueButton 2.3 (lub nowszym) możesz umieścić powyższe w /etc/bigbluebutton/bbb-webrtc-sfu/production.yml, którego bbb-webrtc-sfu użyje do zastąpienia ustawień w default.yml (nawet po aktualizacji pakietu).

Jeśli którykolwiek z tych progów zostanie osiągnięty, użytkownik podczas udostępniania kamer internetowych otrzyma komunikat o błędzie „Zasoby multimedialne niedostępne (2002)”.

BigBlueButton dynamicznie zmniejszy liczbę kamer internetowych podczas spotkania w miarę jego powiększania się. Są one ustawione w /usr/share/bigbluebutton/html5-client/private/config/settings.yml, ale można je zastąpić, umieszczając je w /etc/bigbluebutton/bbb-html5.yml.

Na przykład następujący plik /etc/bigbluebutton/bbb-html5.yml zapewni, że żadne pojedyncze spotkanie nie będzie miało więcej niż 300 strumieni. Przykładowo podczas spotkania z 30 użytkownikami moderator zobaczy 25 kamer internetowych, a widzowie 6 kamer internetowych. Daje to 25 + 29 _ 6 = 196 strumieni z kamery internetowej. Jeśli spotkanie wzrośnie do 100 użytkowników, moderator będzie widział 8 kamer internetowych, a widzowie będą widzieć 2 kamery internetowe. Daje to 8 + 99 _ 2 = 206 strumieni z kamery internetowej.

public:
    app:
        defaultSettings:
            application:
                paginationEnabled: true
    kurento:
        pagination:
            desktopPageSizes:
                moderator: 0
                viewer: 5
            mobilePageSizes:
                moderator: 2
                viewer: 2
            paginationToggleEnabled: false
        paginationThresholds:
            enabled: true
            thresholds:
            -   desktopPageSizes:
                    moderator: 25
                    viewer: 6
                users: 30
            -   desktopPageSizes:
                    moderator: 20
                    viewer: 5
                users: 40
            -   desktopPageSizes:
                    moderator: 16
                    viewer: 4
                users: 50
            -   desktopPageSizes:
                    moderator: 12
                    viewer: 4
                users: 60
            -   desktopPageSizes:
                    moderator: 8
                    viewer: 3
                users: 70
            -   desktopPageSizes:
                    moderator: 8
                    viewer: 2
                users: 80
            -   desktopPageSizes:
                    moderator: 8
                    viewer: 2
                users: 90
            -   desktopPageSizes:
                    moderator: 8
                    viewer: 2
                users: 100
HERE

Użyj niestandardowych obrazów wirtualnego tła

Począwszy od wersji 2.4 BigBlueButton oferuje wirtualne tło dla kamer internetowych. Aby użyć własnych obrazów tła, skopiuj je do katalogu /usr/share/bigbluebutton/html5-client/resources/images/virtual-backgrounds. Dla każdego obrazu skopiuj miniaturę obrazu o wymiarach 50x50 pikseli do /usr/share/bigbluebutton/html5-client/resources/images/virtual-backgrounds/thumbnails.

Do generowania miniatur możesz użyć następującego fragmentu powłoki:

#!/bin/bash
FULL="/usr/share/bigbluebutton/html5-client/resources/images/virtual-backgrounds"
THUMB="${FULL}/thumbnails"

cd "$FULL"
for pic in *.jpg; do
    convert "$pic" -resize 50x50^ -gravity Center -extent 50x50 "${THUMB}/${pic}"
done

Odwołaj się do nich w pliku konfiguracyjnym /etc/bigbluebutton/bbb-html5.yml:

public:
  virtualBackgrounds:
    fileNames:
      - image1.jpg
      - image2.jpg
      - image3.jpg

Obrazy tła nie powinny być zbyt duże, ponieważ klienci muszą je pobierać. Możesz je zoptymalizować za pomocą za pomocą polecenia jpegoptim, które jest dostępne jako pakiet Ubuntu .

Dźwięk

Wycisz wszystkich użytkowników przy uruchomieniu

Jeśli chcesz, aby wszyscy użytkownicy dołączający byli wyciszeni, możesz dodać nadpisanie w /etc/bigbluebutton/bbb-web.properties i ustaw to jako konfigurację obejmującą cały serwer.

# Mute the meeting on start
muteOnStart=true

Stan wyciszenia dotyczy wszystkich użytkowników dołączających do spotkania, z wyjątkiem użytkowników telefonicznych (wdzwanianych). W razie potrzeby można włączyć wymuszanie dla użytkowników telefonicznych poprzez ustawienie następującej właściwości w /etc/bigbluebutton/bbb-apps-akka.conf:

voiceConf {
  dialInEnforceMuteOnStart = true
}

Zrestartuj serwer za pomocą sudo bbb-conf --restart, aby zastosować zmiany.

Wyłącz opcję „jesteś teraz wyciszony”

Podczas korzystania z dźwięku przez FreeSWITCH i/lub mediasoup możesz usunąć ten dźwięk dla wszystkich użytkowników, edytując /opt/freeswitch/etc/freeswitch/autoload_configs/conference.conf.xml i przesuwając linie zawierające muted-sound i unmuted-sound w sekcji z komentarzami.

    <profile name="cdquality">
      <param name="domain" value="$${domain}"/>
      <param name="rate" value="48000"/>
      <param name="interval" value="20"/>
      <param name="energy-level" value="100"/>
      <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> -->
      <param name="muted-sound" value="conference/conf-muted.wav"/>
      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
      <param name="alone-sound" value="conference/conf-alone.wav"/>
<!--
      <param name="moh-sound" value="$${hold_music}"/>
      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
-->
      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
      <param name="locked-sound" value="conference/conf-locked.wav"/>
      <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
      <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
      <param name="pin-sound" value="conference/conf-pin.wav"/>
      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
      <param name="caller-id-name" value="$${outbound_caller_name}"/>
      <param name="caller-id-number" value="$${outbound_caller_id}"/>
      <param name="comfort-noise" value="true"/>

      <!-- <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|auto-3d-position|minimize-video-encoding"/> -->

      <!-- <param name="video-mode" value="mux"/> -->
      <!-- <param name="video-layout-name" value="3x3"/> -->
      <!-- <param name="video-layout-name" value="group:grid"/> -->
      <!-- <param name="video-canvas-size" value="1920x1080"/> -->
      <!-- <param name="video-canvas-bgcolor" value="#333333"/> -->
      <!-- <param name="video-layout-bgcolor" value="#000000"/> -->
      <!-- <param name="video-codec-bandwidth" value="2mb"/> -->
      <!-- <param name="video-fps" value="15"/> -->

    </profile>

Jeśli korzystasz z dźwięku poprzez LiveKit, możesz wyłączyć wyciszenie dźwięku poprzez /etc/bigbluebutton/bbb-html5.yml:

public:
  app:
    defaultSettings:
      application:
        muteUnmuteAudioAlerts: false

Następnie uruchom ponownie bbb-apps-akka: $ sudo systemctl restart bbb-apps-akka.

Włącz muzykę w tle, gdy w sesji uczestniczy tylko jedna osoba

p FreeSWITCH umożliwia odtwarzanie muzyki w tle, gdy w konferencji głosowej uczestniczy tylko jeden użytkownik. Aby włączyć muzykę w tle, edytuj /opt/freeswitch/conf/autoload_configs/conference.conf.xml (jako root) i około linii 204 zobaczysz wstrzymaną muzykę (moh-sound) skomentowaną

<!--
      <param name="moh-sound" value="$${hold_music}"/>
      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
-->

Odkomentuj i zapisz ten plik.

      <param name="moh-sound" value="$${hold_music}"/>
<!--
      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
-->

Domyślna instalacja BigBlueButton nie zawiera żadnych plików muzycznych. Będziesz musiał przesłać plik muzyczny w formacie WAV na serwer i zmienić odniesienie w /opt/freeswitch/conf/vars.xml.

Na przykład, aby użyć pliku /opt/freeswitch/share/freeswitch/sounds/en/us/callie/ivr/48000/ivr-to_listen_to_moh.wav jako muzyki oczekującej, edytuj /opt/freeswitch/conf/vars.xml i zmień linię

  <X-PRE-PROCESS cmd="set" data="hold_music=local_stream://moh"/>

do

  <X-PRE-PROCESS cmd="set" data="hold_music=/opt/freeswitch/share/freeswitch/sounds/en/us/callie/ivr/48000/ivr-to_listen_to_moh.wav" />

, a następnie uruchom ponownie BigBlueButton

$ bbb-conf --restart

i dołącz do sesji audio. Jeśli w sesji jest tylko jeden użytkownik, powinieneś teraz słyszeć muzykę, która jest zawieszona.

Dodaj numer telefonu do mostka konferencyjnego

:::info Ta ścieżka wdzwaniania jest obsługiwana przez FreeSWITCH i dotyczy spotkań korzystających z mostka audio FreeSWITCH (audioBridge=bbb-webrtc-sfu). LiveKit to domyślny most audio w BigBlueButton 4.0; Aby skonfigurować połączenie telefoniczne w przypadku spotkań LiveKit, zobacz Łączenie się za pomocą mostka audio LiveKit poniżej. :::

Wbudowany dźwięk oparty na WebRTC w BigBlueButton zapewnia dźwięk bardzo wysokiej jakości. Mimo to mogą wystąpić przypadki, w których chcesz, aby użytkownicy mogli łączyć się z mostkiem konferencyjnym przy użyciu numeru telefonu.

Zanim będziesz mógł skonfigurować FreeSWITCH do kierowania połączenia do właściwej konferencji, musisz najpierw uzyskać numer telefonu od Dostawcy usług telefonii internetowej i odpowiednio skonfigurować FreeSWITCH, aby odbierał połączenia przychodzące za pośrednictwem protokołu inicjowania sesji (SIP) od tego dostawcy. Upewnij się, że kontekst to public, a plik ma nazwę /opt/freeswitch/conf/sip_profiles/external/YOUR-PROVIDER.xml. Oto przykład; oczywiście należy zmienić nazwę hosta i wartości pisane wielkimi literami:

<include>
  <gateway name="ANY-NAME-FOR-YOUR-PROVIDER">
    <param name="proxy" value="sip.example.net"/>
    <param name="username" value="PROVIDER-ACCOUNT"/>
    <param name="password" value="PROVIDER-PASSWORD"/>
    <param name="extension" value="EXTERNALDID"/>
    <param name="register" value="true"/>
    <param name="context" value="public"/>
  </gateway>
</include>

Aby przekierować połączenie przychodzące do właściwej konferencji audio BigBlueButton, musisz utworzyć dialplan, który dla FreeSWITCH jest zestawem instrukcji uruchamianych po odebraniu połączenia przychodzącego. Gdy użytkownik zadzwoni pod ten numer telefonu, plan wybierania poprosi użytkownika o wprowadzenie pięciocyfrowego numeru powiązanego z konferencją.

Aby utworzyć plan wybierania, użyj poniższego kodu XML i zapisz go w /opt/freeswitch/conf/dialplan/public/my_provider.xml. Zastąp EXTERNALDID wartością określoną jako extension w profilu SIP (np. 6135551234, ale patrz wyżej).

<extension name="from_my_provider">
 <condition field="destination_number" expression="^EXTERNALDID">
   <action application="start_dtmf" />
   <action application="answer"/>
   <action application="sleep" data="1000"/>
   <action application="play_and_get_digits" data="5 9 3 30000 # conference/conf-pin.wav ivr/ivr-that_was_an_invalid_entry.wav pin \d+"/>

   <!-- Uncomment the following block if you want to mask the phone number in the list of participants. -->
   <!-- Instead of `01711233121` it will then show `xxx-xxx-3121`. -->
   <!--
   <action application="set_profile_var" data="caller_id_name=${regex(${caller_id_name}|^.*(.{4})$|xxx-xxx-%1)}"/>
   -->

   <action application="transfer" data="SEND_TO_CONFERENCE XML public"/>
 </condition>
</extension>
<extension name="check_if_conference_active">
 <condition field="${conference ${pin} list}" expression="/sofia/g" />
 <condition field="destination_number" expression="^SEND_TO_CONFERENCE$">
   <action application="set" data="bbb_authorized=true"/>
   <action application="transfer" data="${pin} XML default"/>
 </condition>
</extension>

<extension name="conf_bad_pin">
 <condition field="${pin}" expression="^\d{5}$">
   <action application="answer"/>
   <action application="sleep" data="1000"/>
   <action application="play_and_get_digits" data="5 9 3 30000 # conference/conf-bad-pin.wav ivr/ivr-that_was_an_invalid_entry.wav pin \d+"/>
   <action application="transfer" data="SEND_TO_CONFERENCE XML public"/>
 </condition>
</extension>

Zmień własność tego pliku na freeswitch:daemon

$ chown freeswitch:daemon /opt/freeswitch/conf/dialplan/public/my_provider.xml

, a następnie uruchom ponownie FreeSWITCH:

$ sudo systemctl restart freeswitch

Spróbuj zadzwonić pod numer telefonu. Powinien połączyć się z FreeSWITCH i powinieneś usłyszeć głos proszący o wprowadzenie pięciocyfrowego numeru PIN konferencji. Należy pamiętać, że połączenie telefoniczne będzie obecnie działać tylko wtedy, gdy co najmniej jeden uczestnik sieci dołączył za pomocą swojego mikrofonu.

Aby zawsze pokazywać użytkownikom numer telefonu wraz z 5-cyfrowym numerem PIN w BigBlueButton, a nie tylko przy wyborze udziału mikrofonu, edytuj /etc/bigbluebutton/bbb-web.properties i ustaw numer telefonu podany przez Twojego dostawcę usług telefonii internetowej

#----------------------------------------------------
# Default dial access number
defaultDialAccessNumber=613-555-1234

i ustaw defaultWelcomeMessageFooter na

defaultWelcomeMessageFooter=<br><br>To join this meeting by phone, dial:<br>  %%DIALNUM%%<br>Then enter %%CONFNUM%%# as the conference PIN number.

Zapisz /etc/bigbluebutton/bbb-web.properties i ponownie uruchom BigBlueButton. Każdy użytkownik, który dołączy do sesji, zobaczy na czacie komunikat podobny do.

To join this meeting by phone, dial:
   613-555-1234
and enter 12345 as the conference PIN number.

Na koniec skonfiguruj reguły zapory sieciowej tak, aby akceptować tylko połączenia przychodzące z adresu IP Twojego dostawcy SIP. Na przykład, jeśli Twój dostawca SIP przekazuje połączenia przychodzące z adresu 64.2.142.33, skonfiguruj następujące reguły zapory sieciowej na swoim serwerze.

iptables -A INPUT -i eth0 -p tcp --dport 5060 -s 0.0.0.0/0 -j REJECT
iptables -A INPUT -i eth0 -p udp --dport 5060 -s 0.0.0.0/0 -j REJECT
iptables -A INPUT -i eth0 -p tcp --dport 5080 -s 0.0.0.0/0 -j REJECT
iptables -A INPUT -i eth0 -p udp --dport 5080 -s 0.0.0.0/0 -j REJECT
iptables -I INPUT  -p udp --dport 5060 -s 64.2.142.33 -j ACCEPT

Dzięki tym regułom nie będziesz spamowany przez boty skanujące w poszukiwaniu punktów końcowych SIP i próbujące się połączyć.

Należy również zauważyć, że oprócz wymogu PIN-u istnieją również podstawowe kontrole na poziomie planu wybierania, które uniemożliwiają anonimowym osobom dzwoniącym przez wdzwanianie dołączanie do konferencji audio BigBlueButton.

  • Te kontrole zapewniają minimalną ochronę w zakresie blokowania anonimowych uczestników SIP i nie należy ich uważać za kompleksowe rozwiązanie. W środowiskach produkcyjnych wymagających silniejszej kontroli bezpieczeństwa administratorzy są odpowiedzialni za wdrożenie dodatkowych środków odpowiadających wrażliwości ich wdrożeń.
  • Jeśli chcesz zezwolić na anonimowe UA SIP, musisz usunąć rozszerzenie reject_anonymous w /opt/freeswitch/conf/dialplan/default/bbb_conference.xml, a następnie ponownie uruchomić FreeSWITCH.

Połącz się poprzez most audio LiveKit (livekit-sip)

LiveKit to domyślny most audio w BigBlueButton 4.0. W przypadku spotkań korzystających z mostka audio LiveKit, połączenie telefoniczne jest obsługiwane przez livekit-sip.

Przebieg wdzwaniania wygląda następująco: osoba dzwoniąca dociera do bramki połączeń SIP (FreeSWITCH — albo dołączonej do BigBlueButton, albo zewnętrznej), która odbiera połączenie i prosi o podanie PIN-u konferencji; bramka następnie łączy uwierzytelnione połączenie z livekit-sip, które dołącza do pokoju LiveKit jako uczestnik SIP.

Połączenie telefoniczne z LiveKit jest opcjonalne. Włącz kontroler LiveKit SIP w /etc/bigbluebutton/bbb-webrtc-sfu/production.yml:

livekit:
  rtcAgent:
    enabled: true
  sip:
    enabled: true
    requirePin: false # the PIN is enforced by FreeSWITCH, not by livekit-sip
    dispatch:
      options:
        hidePhoneNumber: true

Następnie skonfiguruj bramkę połączeń SIP — dołączony FreeSWITCH BigBlueButton lub zewnętrzną.

Używanie dołączonego FreeSWITCH jako bramki połączeń

W tej konfiguracji FreeSWITCH dostarczany z BigBlueButton pełni rolę bramy połączeń: odbiera połączenie, pyta o PIN, a następnie łączy połączenie z livekit-sip na lokalnym odnodze. PIN jest monitowany przez FreeSWITCH (a nie przez livekit-sip). DTMF (np. do wyciszenia) przekazuje rozmówcę → FreeSWITCH (a-leg) → mostek FreeSWITCH-to-livekit-sip (b-leg) → livekit-sip; FreeSWITCH konwertuje przychodzący DTMF (RFC 2833 lub SIP INFO z łącza trunkingowego) na RFC 2833 na odnodze mostka, czego domyślnie oczekuje livekit-sip.

:::note W przypadku DID objętego poniższym planem wybierania, zastępuje to ścieżkę modemu audio FreeSWITCH: spotkania utworzone za pomocą audioBridge=bbb-webrtc-sfu nie będą już dostępne za pośrednictwem tego DID. Aby obsługiwać oba mostki audio na tym samym serwerze, użyj różnych DID i bramek planu wybierania na destination_number (jedno rozszerzenie prowadzi do mod_conference, drugie mosty do livekit-sip). :::

  1. Udostępnij łącze SIP w dołączonym FreeSWITCH dokładnie tak, jak w przypadku mostka audio FreeSWITCH — patrz Dodaj numer telefonu do mostka konferencyjnego. Dotyczy to pliku bramy SIP pod /opt/freeswitch/conf/sip_profiles/external/ i defaultDialAccessNumber / stopki powitalnej w /etc/bigbluebutton/bbb-web.properties.

  2. Zachowaj livekit-sip na porcie 5062 (jego wartość w /etc/bigbluebutton/livekit-sip.yaml):

    sip_port: 5062
    sip_port_listen: 5062
    
  3. Zamiast planu wybierania mostu FreeSWITCH, zainstaluj plan wybierania, który łączy się z livekit-sip po wyświetleniu monitu o podanie kodu PIN. Zapisz go w /opt/freeswitch/conf/dialplan/public/my_provider.xml i zamień EXTERNALDID na DID skonfigurowany na bramce SIP:

    <include>
      <extension name="from_my_provider_lk">
        <condition field="destination_number" expression="^EXTERNALDID">
          <action application="start_dtmf"/>
          <action application="answer"/>
          <action application="sleep" data="1000"/>
          <action application="play_and_get_digits" data="5 9 3 30000 # conference/conf-pin.wav ivr/ivr-that_was_an_invalid_entry.wav pin \d+"/>
    
          <!-- Optional: phone-number masking, identical to the FreeSWITCH-bridge example above. -->
          <!--
          <action application="set_profile_var" data="caller_id_name=${regex(${caller_id_name}|^.*(.{4})$|xxx-xxx-%1)}"/>
          -->
    
          <action application="transfer" data="SEND_TO_LIVEKIT_SIP XML public"/>
        </condition>
      </extension>
    
      <extension name="bbb_lk_sip_bridge">
        <condition field="destination_number" expression="^SEND_TO_LIVEKIT_SIP$">
          <!-- Stop in-band DTMF detection so DTMF is not absorbed by FreeSWITCH. -->
          <action application="stop_dtmf"/>
          <!-- Force RFC 2833 on the bridged b-leg toward livekit-sip. The BBB
               external profile defaults to dtmf-type=info; livekit-sip negotiates
               RFC 2833 by default. -->
          <action application="bridge" data="{sip_dtmf_type=rfc2833}sofia/external/sip:${pin}@${local_ip_v4}:5062;transport=udp"/>
          <!-- Control returns here only on failure (on success FreeSWITCH hangs up
               the a-leg automatically, since hangup_after_bridge defaults to true).
               On failure (e.g. no LiveKit dispatch for this voice bridge, or
               livekit-sip down), play bad-pin and re-prompt. -->
          <action application="transfer" data="LK_BAD_PIN XML public"/>
        </condition>
      </extension>
    
      <extension name="bbb_lk_bad_pin">
        <condition field="destination_number" expression="^LK_BAD_PIN$">
          <action application="answer"/>
          <action application="sleep" data="1000"/>
          <action application="play_and_get_digits" data="5 9 3 30000 # conference/conf-bad-pin.wav ivr/ivr-that_was_an_invalid_entry.wav pin \d+"/>
          <action application="transfer" data="SEND_TO_LIVEKIT_SIP XML public"/>
        </condition>
      </extension>
    </include>
    
  4. Uruchom ponownie BigBlueButton:

    sudo bbb-conf --restart
    
  5. Sprawdź, czy komponenty działają, a następnie wykonaj połączenie testowe:

    sudo bbb-conf --status
    sudo systemctl status freeswitch livekit-sip bbb-webrtc-sfu
    

Osoba dzwoniąca powinna usłyszeć monit o podanie PIN-u BigBlueButton; po wejściu na mostek głosowy spotkania, połączenie powinno pojawić się w pokoju LiveKit jako uczestnik SIP. * lub 0 przełącza wyciszenie.

Korzystanie z zewnętrznej bramki wywoławczej

W tej konfiguracji zewnętrzny FreeSWITCH działa jako bramka wywoławcza (ta sama rola, jaką pełni na przykład w wdrożeniu Scalelite dial-in), i livekit-sip przejmuje port SIP, z którego w przeciwnym razie korzystałby dołączony FreeSWITCH.

:::warning Poniższe kroki powodują przeniesienie dołączonego FreeSWITCH do portu 5060, a tym samym przerwanie dial-in opartego na FreeSWITCH (audioBridge=bbb-webrtc-sfu) dla całego serwera. Aby obsłużyć oba mostki, bramka wywoławcza musi wiedzieć o używanym mostku audio — na przykład zachowaj dołączony FreeSWITCH na 5060 i livekit-sip na 5062, a moduł równoważenia obciążenia zbuduje plan wybierania bramy tak, aby kierował do odpowiedniego portu (5060 dla audioBridge=bbb-webrtc-sfu, 5062 dla audioBridge=livekit). Jeśli zastosujesz takie podejście, dostosuj odpowiednio poniższe porty. :::

  1. Skonfiguruj zewnętrzną bramkę wywoławczą tak, jakbyś to zrobił dzisiaj (zobacz Przewodnik wybierania numeru Scalelite).

  2. Przesuń port wiązania SIP dołączonego FreeSWITCH z 5060 (aby uniknąć kolizji z livekit-sip). W /opt/freeswitch/conf/vars.xml:

    <X-PRE-PROCESS cmd="set" data="external_sip_port=5063"/>
    
  3. Wskaż livekit-sip na 5060 i nadaj mu zakres portów RTP umożliwiający łączność z bramką wywoławczą. W /etc/bigbluebutton/livekit-sip.yaml:

    sip_port: 5060
    sip_port_listen: 5060
    rtp_port:
      port_range_start: <START>
      port_range_end: <END>
    
  4. Uruchom ponownie BigBlueButton:

    sudo bbb-conf --restart
    
  5. Sprawdź, czy wszystkie komponenty działają:

    sudo bbb-conf --status
    sudo systemctl status livekit-sip
    
Rozwiązywanie problemów z DTMF

Jeśli DTMF przechodzi do FreeSWITCH podczas monitu o PIN, ale nie dociera do livekit-sip po mostku, sprawdź, czy liberal-dtmf=true jest ustawione na zewnętrznym profilu SIP (jest to ustawienie domyślne BigBlueButton; rtp_liberal_dtmf=true jest ustawione globalnie w vars.xml). Jeśli to już jest poprawne, mogą być wymagane dalsze poprawki w trybie FreeSWITCH DTMF.

Ograniczenia
  • Lobby gościnne jest pomijane dla osób dzwoniących za pomocą protokołu SIP.

Włącz „dźwięk komfortowy”, gdy nikt nie mówi

FreeSWITCH ma możliwość dodania „dźwięku komfortowego”, czyli delikatnego szumu w tle, informującego użytkowników, że nadal uczestniczą w konferencji głosowej, nawet jeśli nikt nie rozmawia (w przeciwnym razie mogą zapomnieć, że są połączeni z mostek konferencyjny i powiedzieć coś niezamierzonego dla innych).

Jeśli chcesz włączyć, edytuj /opt/freeswitch/conf/autoload_configs/conference.conf.xml, poszukaj bloku <profile name="cdquality"> i zmień wartość dla comfort-noise. Możesz określić poziom szumu, np. 0 (brak szumu), 350, 1400 itd. Wypróbuj różne wartości, aby uzyskać pożądany poziom.

<param name="comfort-noise" value="1400"/>

Po każdej zmianie musisz ponownie uruchomić BigBlueButton. Aby uzyskać więcej informacji, zobacz komfort-hałas w dokumentacji FreeSWITCH.

$ sudo bbb-conf --restart

Prezentacja

Zmień domyślną prezentację

Kiedy rozpoczyna się nowe spotkanie, BigBlueButton wyświetla domyślną prezentację. Plik domyślnej prezentacji znajduje się w /var/www/bigbluebutton-default/assets/default.pdf. Możesz zastąpić zawartość tego pliku swoją prezentacją. Za każdym razem, gdy tworzone jest spotkanie, BigBlueButton automatycznie ładuje, konwertuje i wyświetla tę prezentację wszystkim użytkownikom. Należy pamiętać, że plik ten może zostać nadpisany podczas aktualizacji BigBlueButton.

Alternatywnie możesz zmienić globalne ustawienie domyślne, dodając regułę nadpisywania w /etc/bigbluebutton/bbb-web.properties, podając adres URL dla beans.presentationService.defaultUploadedPresentation.

# Default Uploaded presentation file
beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/default.pdf

Jeśli nie chcesz, aby BigBlueButton generował miniatury z tego pliku, użyj nazwy pliku „default.pdf”. Miniatury będą używane w niektórych aplikacjach frontendowych, takich jak Greenlight.

Będziesz musiał ponownie uruchomić BigBlueButton po zmianie za pomocą sudo bbb-conf --restart.

Jeśli chcesz określić domyślną prezentację dla danego spotkania, możesz także przekazać adres URL do prezentacji w ramach wywołania API spotkania create.

Zwiększ limit 200 stron dla przesyłanych stron

BigBlueButton domyślnie ogranicza przesyłanie do 200 stron. Aby zwiększyć tę wartość, dodaj regułę nadpisywania w /etc/bigbluebutton/bbb-web.properties i ustaw wartość maxNumPages:

#----------------------------------------------------
# Maximum number of pages allowed for an uploaded presentation (default 200).
maxNumPages=200

Po zapisaniu zmian w /etc/bigbluebutton/bbb-web.properties zrestartuj serwer BigBlueButton za pomocą

$ sudo bbb-conf --restart

Dostosuj równoległe pobieranie wstępnie przesłanych prezentacji

Prezentacje przesłane wstępnie poprzez wywołania API create lub insertDocument są pobierane i przetwarzane w tle, w ograniczonej puli wątków, więc odpowiedź API nie jest opóźniona. Domyślnie na serwer pobieranych jest równolegle do 5 dokumentów; dodatkowe dokumenty czekają w ograniczonej kolejce. Jeśli serwer jest stale przeciążony i kolejka jest pełna, dalsze zadania prezentacji są odrzucane (i rejestrowane), zamiast umieszczać je w kolejce bez ograniczeń, co chroni serwer przed wyczerpaniem pamięci. Odrzucona prezentacja nie jest przesyłana na spotkanie i — podobnie jak błąd pobierania lub konwersji — nie jest odzwierciedlona w odpowiedzi API create/insertDocument (która już została zwrócona); jest to widoczne tylko w logu serwera. Aby zmienić równoległość należy dodać regułę nadpisywania w /etc/bigbluebutton/bbb-web.properties i ustawić wartość numPresentationDownloadThreads (wartości poniżej 1 traktowane są jako 1):

numPresentationDownloadThreads=5

Po zapisaniu zmian w /etc/bigbluebutton/bbb-web.properties zrestartuj serwer BigBlueButton za pomocą

sudo bbb-conf --restart

Rasteryzuj slajdy, których SVG zawiera znaczniki maski

Niektóre pliki PDF tworzą slajdy, których wygenerowany plik SVG zawiera elementy <mask> (używane w przypadku obrazów z miękką maską/alfa). W systemach, w których te wartości masek są renderowane niepoprawnie, na slajdach, których to dotyczy, mogą pojawiać się artefakty wizualne. Aby obejść ten problem, bbb-web może wrócić do rasteryzacji pełnego slajdu (ta sama metoda zastępcza używana w imageTagThreshold i useTagThreshold: strona jest renderowana do obrazu PNG z pdftoppm i osadzana w slajdzie) dla dowolnego slajdu, którego SVG zawiera konfigurowalną liczbę znaczników <mask>.

Sprawdzanie jest domyślnie wyłączone (maskTagThreshold=0), ponieważ maski są powszechne w zwykłych plikach PDF, a pdftocairo dostarczany z Ubuntu 24.04 (poppler 24.02.0) generuje prawidłowe wartości masek. Aby rasteryzować tylko slajdy zawierające dużo maski, dodaj regułę nadpisywania w /etc/bigbluebutton/bbb-web.properties:

maskTagThreshold=100

Slajd jest rasteryzowany, jeśli jego SVG zawiera co najmniej znaczniki maski maskTagThreshold (wartość 1 spowoduje rasteryzację dowolnego slajdu zawierającego maskę). Po zapisaniu zmian zrestartuj serwer BigBlueButton za pomocą sudo bbb-conf --restart.

Weryfikacja slajdów za pomocą miękkich masek

Miękkie maski (obrazy z przezroczystością, cieniami, rozmytymi lub wyblakłymi krawędziami) są powszechne w plikach PDF i najczęściej są konwertowane do prawidłowego formatu SVG. Niektóre tego nie robią: pdftocairo, który generuje slajd w formacie SVG, upuszcza zawartość za niektórymi miękkimi maskami (na przykład tymi napisanymi przez macOS), więc obraz lub cały slajd jest pusty (#23953).

pdftocairo emituje znaczniki <filter> za każdym razem, gdy strona zawiera miękkie maski, więc bbb-web weryfikuje każdy slajd, którego SVG zawiera co najmniej znaczniki filterTagThreshold <filter>. Renderuje stronę w niskiej rozdzielczości zarówno w przypadku pdftocairo, jak i pdftoppm, a rasteryzuje slajd tylko wtedy, gdy oba renderowania wyraźnie się różnią. Sprawdzanie jest domyślnie włączone (filterTagThreshold=1) i kosztuje ułamek sekundy na zweryfikowany slajd. Slajdy, które zostały zweryfikowane i pasują, zachowują swoje wektory SVG. Jeśli nie można dokonać porównania lub zrastrowany slajd jest zbyt duży, aby go osadzić, wektor SVG również zostanie zachowany.

Aby wyłączyć zaznaczenie, dodaj regułę nadpisywania w /etc/bigbluebutton/bbb-web.properties:

filterTagThreshold=0

Po wyłączeniu zaznaczenia slajdy, których to dotyczy, mogą ponownie wyświetlać się jako puste lub z brakującymi obrazami. Aby rasteryzować każdy slajd za pomocą miękkich masek bez uprzedniej weryfikacji, użyj zamiast tego maskTagThreshold=1 (patrz wyżej). Po zapisaniu zmian zrestartuj serwer BigBlueButton za pomocą sudo bbb-conf --restart.

Zwiększ rozmiar pliku przesyłanej prezentacji

Domyślny maksymalny rozmiar przesyłanego pliku dla przesyłanej prezentacji wynosi 30 MB.

Pierwszym krokiem jest zmiana ograniczenia rozmiaru w Nginx. Edytuj /etc/bigbluebutton/nginx/web.nginx (2.4) lub /usr/share/bigbluebutton/nginx/web.nginx (od wersji 2.5) i zmodyfikuj wartości dla client_max_body_size.

       location ~ "^\/bigbluebutton\/presentation\/(?<prestoken>[a-zA-Z0-9_-]+)/upload$" {
          ....
          # Allow 30M uploaded presentation document.
          client_max_body_size       30m;
          ....
       }

       location = /bigbluebutton/presentation/checkPresentation {
          ....
          # Allow 30M uploaded presentation document.
          client_max_body_size       30m;
          ....
       }

Następnie zmień ograniczenie w bbb-web. Dodaj regułę nadpisywania w /etc/bigbluebutton/bbb-web.properties i ustaw wartość maxFileSizeUpload.

# Maximum file size for an uploaded presentation (default 30MB).
maxFileSizeUpload=30000000

Będziesz musiał dodatkowo zwiększyć rozmiar dla klienta HTML5, edytować /usr/share/bigbluebutton/html5-client/private/config/settings.yml lub /etc/bigbluebutton/bbb-html5.yml (zalecane) i zmodyfikować uploadSizeMax.

Uruchom ponownie BigBlueButton za pomocą sudo bbb-conf --restart. Przesyłanie większych prezentacji powinno być teraz możliwe w ramach nowego limitu.

Dodaj niestandardowe czcionki do konwersji prezentacji

Począwszy od BigBlueButton 2.3 dodaliśmy obsługę używania dodatkowych czcionek podczas konwersji plików prezentacji.

Na serwerze, na którym mają być obsługiwane nowe czcionki, warto pobrać plik czcionek (.ttf). Na przykład:

wget https://github.com/bigbluebutton/bigbluebutton/files/6391912/Street.Ruler.zip
unzip Street.Ruler.zip

Następnie skopiuj czcionkę (.ttf) do /usr/share/fonts/

sudo cp 'Street Ruler.ttf' /usr/share/fonts/

To wszystko! Czcionka będzie dostępna przy kolejnych prezentacjach.

Zmień limit 300 adnotacji na stronę

W BigBlueButton 2.6 wprowadziliśmy ograniczenie liczby adnotacji, które można dodać na pojedynczą tablicę (slajd). Wartość domyślna ustawiona jest na 300. Powodem tego ograniczenia jest to, że gdy dodano dużą liczbę adnotacji, często miało to miejsce w przypadku włączonej tablicy dla wielu użytkowników i ucznia próbującego być zabawnym. Miało to negatywny wpływ na innych uczestników sesji, szczególnie na urządzeniach z ograniczonym procesorem. W prawie wszystkich przypadkach, które zaobserwowaliśmy w fazie testowej BigBlueButton 2.6, ograniczenie to było wystarczające do normalnego przebiegu zajęć. W bardzo rzadkich przypadkach normalne użytkowanie tablicy prowadziło do uderzenia w pokrywę.

Aby zmienić wartość (w przeliczeniu na serwer) na, powiedzmy, 500 adnotacji w swoim wdrożeniu, dodaj następujące elementy do /etc/bigbluebutton/bbb-html5.yml

public:
  whiteboard:
    maxNumberOfAnnotations: 500

i zrestartuj BigBlueButton przez sudo bbb-conf --restart

Skonfiguruj pamięć podręczną opartą na S3 dla zasobów prezentacji

W BigBlueButton 3.0 wprowadziliśmy funkcjonalność przechowywania danych wyjściowych, takich jak Pliki SVG, PNG, miniatury i tekst wygenerowane z plików PDF lub plików dokumentów przesłanych jako prezentacje. Przetworzone dane wyjściowe są buforowane w systemie pamięci masowej opartym na S3, a kluczem jest skrót pliku prezentacji. Po ponownym przesłaniu tej samej prezentacji system pobiera dane wyjściowe z pamięci podręcznej, unikając zbędnego przetwarzania i poprawiając wydajność.

Aby włączyć tę funkcję należy zmienić plik /etc/bigbluebutton/bbb-web.properties zawierający następującą zawartość:

presentationConversionCacheEnabled=true
presentationConversionCacheS3AccessKeyId=AAAAAAAAAAAAAAAAAAAA
presentationConversionCacheS3AccessKeySecret=aaaAAAaaaaaaaaaaaAAAAAAAAAaaaaaaaaaaaaa+aaA
presentationConversionCacheS3BucketName=my-storage-name
presentationConversionCacheS3Region=nyc3
presentationConversionCacheS3EndpointURL=https://nyc3.digitaloceanspaces.com
presentationConversionCacheS3PathStyle=false

To jest przykład konfiguracji dla Object Storage zgodnej z DigitalOcean Spaces S3.

i uruchom ponownie BigBlueButton przez sudo bbb-conf --restart

Obsługa ClamAV jako skanera plików prezentacji

Dodaliśmy obsługę ClamAV, która automatycznie skanuje każdy plik prezentacji w poszukiwaniu wirusów przed udostępnieniem go innym uczestnikom sesji. Aby z niego skorzystać, musisz najpierw zainstalować ClamAV: . Najprostszym sposobem byłoby uruchomienie go lokalnie jako kontener.

docker run --name "clamav" -d \
  --volume /var/bigbluebutton:/var/bigbluebutton:ro \
  --publish 127.0.0.1:3310:3310 \
  --memory 4G \
  --cpus 1 \
  --user "clamav" \
  --entrypoint "/init-unprivileged" \
  --restart unless-stopped \
  clamav/clamav:latest

Uruchomienie powyższego polecenia uruchomienia może zająć minutę. Jeśli wolisz, możesz uruchomić z flagą -d, aby można ją było odłączyć.

Teraz, gdy sprawdzisz działające kontenery, powinieneś zobaczyć wpis podobny do tego:

root@test30:~# docker ps
CONTAINER ID   IMAGE                  COMMAND                CREATED             STATUS                       PORTS                                NAMES
8582c5c195aa   clamav/clamav:latest   "/init-unprivileged"   About an hour ago   Up About an hour (healthy)   127.0.0.1:3310->3310/tcp, 7357/tcp   clamav

Dodatkowo będziesz musiał włączyć skanowanie: Określ scanUploadedPresentationFiles=true w /etc/bigbluebutton/bbb-web.properties i zrestartuj BigBlueButton przez sudo bbb-conf --restart

Kiedy tworzysz nową sesję i próbujesz wgrać jakieś pliki prezentacji, możesz nie powinien widzieć niczego innego, jeśli plik był w porządku. Jeśli jednak zostanie wykryte zagrożenie, zostanie wyświetlony komunikat „Przesyłanie nie powiodło się: wykryto wirusa! Sprawdź plik i spróbuj ponownie”. w kliencie i udostępnianie prezentacji nie będzie kontynuowane. Dodatkowo w logach dla bbb-web zobaczysz podobne linie logu:

Oct 09 01:07:18 test30 java[2810929]: 2024-10-09T01:07:18.285Z DEBUG o.b.w.c.PresentationController - processing file upload eicar.com.txt (presId: f7ff3fd7c0ab460f7139541c02df46f24ac90b67-1728436037947)
Oct 09 01:07:18 test30 java[2810929]: 2024-10-09T01:07:18.550Z DEBUG o.b.w.c.PresentationController - file upload success eicar.com.txt
Oct 09 01:07:23 test30 java[2810929]: 2024-10-09T01:07:23.589Z ERROR o.b.p.DocumentConversionServiceImp - Presentation upload failed for meetingId=4814d8e60f2e15576bebfe7cef34367ef5b54539-1728435987030 presId=f7ff3fd7c0ab460f7139541c02df46f24ac90b67-1728436037947
Oct 09 01:07:23 test30 java[2810929]: 2024-10-09T01:07:23.590Z ERROR o.b.p.DocumentConversionServiceImp - Presentation upload failed because a virus was detected in the uploaded file

Możesz przetestować swoją konfigurację za pomocą jednego z plików z eicar.org.

Frontendy

Usuń wersje demonstracyjne API

Jeśli wcześniej zainstalowałeś wersje demonstracyjne API do testów (co umożliwia każdemu korzystanie z Twojego serwera BigBlueButton bez uwierzytelniania) i chcesz je teraz usunąć, wpisz polecenie:

$ sudo apt-get purge bbb-demo

Zmień domyślną stronę docelową

Domyślna strona docelowa HTML znajduje się w

/var/www/bigbluebutton-default/assets/index.html

Zmień tę stronę, aby utworzyć własną stronę docelową (i zachowaj jej kopię zapasową, ponieważ zostanie ona nadpisana podczas aktualizacji pakietu do bbb-conf).

Użyj frontonu Greenlight

BigBlueButton jest wyposażony w Greenlight, aplikację front-end napisaną w Ruby on Rails, która ułatwia użytkownikom tworzenie spotkań, zapraszanie innych, rozpoczynanie spotkań i zarządzanie nagraniami.

greenlight-start

Aby uzyskać więcej informacji, zobacz Instalowanie Greenlight.

Sieć

Konfiguracja zapory sieciowej

Konfiguracja zapory IP jest niezbędna do zabezpieczenia instalacji. Domyślnie wiele usług jest dostępnych przez sieć. Dzięki temu BigBlueButton może działać w klastrach i prywatnych sieciach centrów danych, ale jeśli Twój serwer BigBlueButton jest publicznie dostępny w Internecie, musisz uruchomić zaporę ogniową, aby ograniczyć dostęp do minimalnie wymaganych portów.

Jeśli Twój serwer znajduje się już za zaporą ogniową – na przykład działa w Twojej firmie lub na instancji EC2 za Amazon Security Group – a zapora wymusza powyższe ograniczenia, nie potrzebujesz drugiej zapory ogniowej i możesz pominąć tę sekcję.

BigBlueButton jest wyposażony w zestaw reguł oparty na UFW. Można go zastosować przy ponownym uruchomieniu i ogranicza dostęp tylko do następujących potrzebnych portów:

  • port TCP/IP 22 dla SSH
  • port TCP/IP 80 dla HTTP
  • port TCP/IP 443 dla HTTPS
  • porty UDP 16384 do 32768 dla połączeń mediów

Uwaga: jeśli skonfigurowałeś sshd (demon OpenSSH) do używania innego portu niż 22, to przed uruchomieniem poniższych poleceń zmień ufw allow OpenSSH na ufw allow <port>/tcp, gdzie <port> jest portem używanym przez sshd. Możesz zobaczyć port nasłuchiwania dla sshd za pomocą polecenia # netstat -antp | grep sshd. Tutaj polecenie pokazuje, że sshd nasłuchuje na standardowym porcie 22.

$ netstat -antp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1739/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1739/sshd

Aby ograniczyć dostęp zewnętrzny, wymagane są minimalne porty dla BigBlueButton. BigBlueButton udostępnia funkcję pomocniczą, którą możesz wywołać w /etc/bigbluebutton/bbb-conf/apply-config.sh , aby skonfigurować minimalną zaporę ogniową (patrz Konfiguracja zapory ogniowej).

Można to również zrobić ręcznie za pomocą następujących poleceń

$ apt-get install -y ufw
ufw allow OpenSSH
ufw allow "Nginx Full"
ufw allow 16384:32768/udp
ufw --force enable

Te reguły zapory ufw zostaną automatycznie ponownie zastosowane po ponownym uruchomieniu serwera.

Oprócz zapory ogniowej opartej na protokole IP, możesz eksplorować zapory ogniowe aplikacji internetowych, takie jak ModSecurity, które zapewniają dodatkowe bezpieczeństwo poprzez sprawdzanie żądań do różnych komponentów internetowych.

Konfiguracja zapory sieciowej

Aby skonfigurować zaporę ogniową dla serwera BigBlueButton (zalecane), dodaj enableUFWRules do /etc/bigbluebutton/bbb-conf/apply-config.sh, jak w

enableUFWRules

Po dodaniu enableUFWRule do apply-config.sh, za każdym razem, gdy wykonasz bbb-conf z --restart lub --setip, zobaczysz następujące dane wyjściowe

sudo bbb-conf --restart

Restarting BigBlueButton ..
Stopping BigBlueButton

Applying updates in /etc/bigbluebutton/bbb-conf/apply-config.sh:
  - Enable Firewall and opening 22/tcp, 80/tcp, 443/tcp and 16384:32768/udp
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
Firewall is active and enabled on system startup

Starting BigBlueButton

Zmień porty UDP

Domyślnie BigBlueButton używa portów UDP 16384-32768, które są używane przez FreeSWITCH, mediasoup i bbb-webrtc-recorder do wysyłania pakietów w czasie rzeczywistym (RTP).

FreeSWITCH wykorzystuje zakres 16384 - 24576, który jest zdefiniowany w /opt/freeswitch/etc/freeswitch/autoload_configs/switch.conf.xml

    <!-- RTP port range -->
    <param name="rtp-start-port" value="16384"/>
    <param name="rtp-end-port" value="24576"/>

bbb-webrtc-recorder wykorzystuje zakres 24577 - 32768, który jest zdefiniowany w /etc/bbb-webrtc-recorder/bbb-webrtc-recorder.yml (domyślnie) lub /etc/bigbluebutton/bbb-webrtc-recorder.yml (przesłonięcie)

[...]
webrtc:
  rtcMinPort: 24577
  rtcMaxPort: 32768
[...]

mediasoup również domyślnie używa 24577 - 32768 (zdefiniowane w /usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml). Jeśli zajdzie potrzeba zmiany, należy użyć pliku konfiguracyjnego przesłonięcia (zlokalizowanego w /etc/bigbluebutton/bbb-webrtc-sfu/production.yml) bbb-webrtc-sfu. Na przykład ustawienie zakresu na 50000–51999 powinno mieć następujący format (składnia YAML, /etc/bigbluebutton/bbb-webrtc-sfu/production.yml):

mediasoup:
  worker:
    rtcMinPort: 50000
    rtcMaxPort: 51999

Zastosuj niestandardowe ustawienia dla serwera TURN

Jeśli zawsze chcesz mieć konkretną konfigurację serwera TURN, dodaj poniższe do apply-config.sh i zmodyfikuj aaa.bbb.ccc.ddd i secret swoimi wartościami.

echo "  - Update TURN server configuration turn-stun-servers.xml"
  cat <<HERE > /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
        <constructor-arg index="0" value="stun:aaa.bbb.ccc.ddd"/>
    </bean>
    <bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="secret"/>
        <constructor-arg index="1" value="turns:aaa.bbb.ccc.ddd:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>
    <bean id="stunTurnService"
            class="org.bigbluebutton.web.services.turn.StunTurnService">
        <property name="stunServers">
            <set>
                <ref bean="stun0"/>
            </set>
        </property>
        <property name="turnServers">
            <set>
                <ref bean="turn0"/>
            </set>
        </property>
    </bean>
</beans>
HERE

Aby mieć pewność, że modyfikacje nie zostaną utracone po zainstalowaniu nowej wersji pakietów, popraw powyższy fragment do cat, a zawartość do /etc/bigbluebutton/turn-stun-servers.xml zamiast /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml:

echo "  - Update TURN server configuration turn-stun-servers.xml"
  cat <<HERE > /etc/bigbluebutton/turn-stun-servers.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean id="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
        <constructor-arg index="0" value="stun:aaa.bbb.ccc.ddd"/>
    </bean>
    <bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="secret"/>
        <constructor-arg index="1" value="turns:aaa.bbb.ccc.ddd:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>
    <bean id="stunTurnService"
            class="org.bigbluebutton.web.services.turn.StunTurnService">
        <property name="stunServers">
            <set>
                <ref bean="stun0"/>
            </set>
        </property>
        <property name="turnServers">
            <set>
                <ref bean="turn0"/>
            </set>
        </property>
    </bean>
</beans>
HERE

Klient HTML5

Skonfiguruj, kiedy wyświetlany jest baner pozostałego czasu

Domyślnie klient HTML5 wyświetla baner pozostałego czasu, gdy do spotkania pozostało mniej niż 6 minut. Aby zmienić próg, ustaw public.app.remainingTimeThresholdInMinutes w /etc/bigbluebutton/bbb-html5.yml. Przykładowo poniższe przywraca poprzednie zachowanie, gdzie baner pojawiał się 30 minut przed zakończeniem spotkania:

public:
  app:
    remainingTimeThresholdInMinutes: 30

Uruchom ponownie bbb-apps-akka z sudo systemctl restart bbb-apps-akka, aby zmiana zaczęła obowiązywać. Nowy próg dotyczy spotkań utworzonych po ponownym uruchomieniu.

Zmień domyślną wiadomość powitalną

Domyślna wiadomość powitalna jest zbudowana z trzech parametrów: dwóch parametrów ogólnosystemowych (patrz poniżej) i parametru welcome z wywołania API BigBlueButton create.

Dwa ogólnosystemowe parametry powitalne defaultWelcomeMessage i defaultWelcomeMessageFooter znajdziesz w /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties.

defaultWelcomeMessage=<default welcome message>
defaultWelcomeMessageFooter=<default welcome message footer>

Kiedy frontend tworzy sesję BigBlueButton, może również przekazać parametr welcome w wywołaniu API create.

Ostatnia wiadomość powitalna wyświetlana użytkownikowi (jako niebieski tekst w oknie czatu) jest złożeniem welcome + defaultWelcomeMessage + defaultWelcomeMessageFooter.

Wiadomość powitalna jest ustawiona na czas trwania spotkania. Jeśli chcesz zobaczyć efekt zmiany parametru welcome musisz zakończyć bieżące spotkanie lub poczekać aż serwer BigBlueButton usunie je z pamięci (co następuje około dwóch minut po wyjściu ostatniej osoby). Możesz nadpisać te wartości w pliku /etc/bigbluebutton/bbb-web.properties, pamiętaj tylko o ponownym uruchomieniu BigBlueButton za pomocą sudo bbb-conf --restart, aby nowe wartości zaczęły obowiązywać.

Modyfikacja lokalizacji dla klienta (nadpisanie najnowszymi ustawieniami regionalnymi)

Typowym przypadkiem użycia jest modyfikacja określonego ciągu znaków na podstawie ustawień regionalnych lub dołączenie nowszych lokalizacji z źródła nadrzędnego. Na przykład, jeśli chcesz zastąpić de.json wersją z określonej gałęzi/znacznika repozytorium, możesz wykonać następujące czynności:

cd /usr/share/bigbluebutton/html5-client/locales/
mv de.json /tmp/de.json.old
wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/v4.0.x-release/bigbluebutton-html5/public/locales/de.json
cd /usr/share/bigbluebutton/html5-client/locales/
rm de.json
wget https://raw.githubusercontent.com/bigbluebutton/bigbluebutton/v4.0.x-release/bigbluebutton-html5/public/locales/de.json
bbb-conf --restart

Rozpocznij nowe spotkanie na serwerze, przejdź na lokalizację niemiecką w Ustawieniach, wyczyść pamięć podręczną w razie potrzeby – często ustawienia regionalne są buforowane.

Należy zachować ostrożność podczas zastępowania/edytowania ustawień regionalnych. Jeśli wykonałeś powyższe kroki, powinieneś mieć kopię zapasową de.json (z dodatkiem „.old”) w /tmp na wypadek konieczności przywrócenia. Należy pamiętać, że pliki json w wersjach BigBlueButton nie zawsze są wymienne. Opisany powyżej przepływ pracy jest przeznaczony tylko w przypadkach takich jak — chciałbym ulepszyć tłumaczenie na własny użytek — chciałbym przyjąć zmianę z wcześniejszego źródła bez konieczności czekania na oficjalne wydanie za kilka dni — to część mojej konfiguracji dostosowywania i wiem, co muszę przetestować. Wiem też jak odzyskać w razie potrzeby

Zmień faviconę

Pierwsza metoda:

Aby zmienić faviconę, nadpisz plik /var/www/bigbluebutton-default/assets/favicon.ico.

Będziesz musiał zaktualizować plik przy każdej aktualizacji pakietu bbb-config.

Druga metoda:

Utwórz niestandardowy katalog pod /var/www/bigbluebutton-default/, taki jak /var/www/bigbluebutton-default/site i skopiuj plik favicon.ico do tego katalogu. Dodaj nowy plik favicon.nginx do /etc/bigbluebutton/nginx i dodaj następujące linie:

location = /favicon.ico {
    alias /var/www/bigbluebutton-default/site/favicon.ico;

Po ponownym uruchomieniu Nginx zostanie dostarczony dostosowany plik favicon.ico. Ta zmiana będzie miała wpływ na BigBlueButton i Greenlight i będzie obowiązywać podczas aktualizacji.

Zmień tytuł w kliencie HTML5

Plik konfiguracyjny klienta HTML5 znajduje się w /usr/share/bigbluebutton/html5-client/private/config/settings.yml. Zawiera wszystkie ustawienia klienta HTML5.

Zalecamy dokonanie wszelkich zmian w tych konfiguracjach w pliku zastąpień /etc/bigbluebutton/bbb-html5.yml, aby nie zostały one utracone podczas aktualizacji systemu. Aby zmienić tytuł, edytuj bbb-html5.yml i zmień wpis na public.app.clientTitle

public:
  app:
    ...
    clientTitle: BigBlueButton

Można również użyć następującego polecenia.

$ test -s /etc/bigbluebutton/bbb-html5.yml || echo '{}' > /etc/bigbluebutton/bbb-html5.yml
$ yq-go e -i ".public.app.clientTitle = \"New Title\"" /etc/bigbluebutton/bbb-html5.yml

Zastosuj ustawienia blokady, aby ograniczyć kamery internetowe

Aby domyślnie włączyć ustawienia blokady dla Share webcam (przeglądający nie mogą udostępniać swojej kamery internetowej), dodaj następujące elementy do /etc/bigbluebutton/bbb-web.properties.

# Prevent viewers from sharing webcams
lockSettingsDisableCam=true

Jeśli po ponownym uruchomieniu otworzysz ustawienia blokady, zobaczysz, że blokada Share webcam jest włączona.

Ilustracja z dokumentacji BigBlueButton

Zmień domyślną ścieżkę dla Klient HTML5

Domyślna ścieżka URL klienta to /html5client i można ją zmienić w celu dopasowania do własnych preferencji.

Edytuj plik konfiguracyjny nginx (/usr/share/bigbluebutton/nginx/bbb-html5.nginx), zastępując wszystkie wystąpienia /html5client nową ścieżką;

Zrób to samo w /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties w następujących wierszach:

defaultHTML5ClientUrl=${bigbluebutton.web.serverURL}/html5client/

Możesz nadpisać tę wartość w /etc/bigbluebutton/bbb-web.properties (zalecane).

W pliku konfiguracyjnym klienta HTML5, znajdującym się w /usr/share/bigbluebutton/html5-client/private/config/settings.yml, zmień wpis dla public.app.basename:

public:
  app:
    ...
    basename: '/html5client'

Możesz nadpisać tę wartość w /etc/bigbluebutton/bbb-html5.yml (zalecane).

Na koniec uruchom następującą komendę, aby przeładować konfigurację:

sudo service nginx reload && sudo bbb-conf --restart

Włącz napisy na żywo

BigBlueButton może korzystać z wbudowanego w przeglądarce Chrome interfejsu API zamiany mowy na tekst, aby dać użytkownikom opcję tworzenia napisów dźwiękowych na żywo dla innych użytkowników w sesji. Gdy na serwerze włączone są napisy na żywo, użytkownik może wybrać język z listy rozwijanej podczas dołączania do dźwięku.

Ilustracja z dokumentacji BigBlueButton

Te napisy pojawią się automatycznie w nagrania. Aby włączyć napisy na żywo, edytuj /etc/bigbluebutton/bbb-html5.yml i dodaj następujący

public:
  app:
    # You may have other setting items here
    audioCaptions:
      enabled: true

Uruchom ponownie BigBlueButton za pomocą sudo bbb-conf --restart i powinieneś teraz zobaczyć opcje napisów na żywo podczas dołączania do dźwięku.

Konfiguracja gladia.io

Aby używać gladia.io do automatycznej transkrypcji mowy na tekst, musisz najpierw uzyskać klucz API z gladia.io. Możesz zarejestrować się, aby uzyskać bezpłatne dane uwierzytelniające, aby przetestować integrację. Uwaga: Plan „Bezpłatna wersja próbna” pozwala tylko na 1 jednoczesną sesję

Następnie musisz używać BigBlueButton 2.7.4+ (przepustka -v focal-270), BigBlueButton 3.0.0-alpha.7+ (przepustka -v jammy-300) lub BigBlueButton 4.0+ (przepustka -v noble-400) na serwerze BigBlueButton z publicznym adresem IP i nazwą hosta.

Po zainstalowaniu BigBlueButton uruchom sudo apt install bbb-transcription-controller, aby zainstalować usługę transkrypcji BigBlueButton, która obsługuje gladia.io.

Następnie uruchom sudo bbb-conf --setip <hostname>, gdzie <hostname> to zewnętrzna nazwa hosta serwera (taka sama, jak została przekazana do bbb-install.sh). Spowoduje to aktualizację konfiguracji kontrolera transkrypcji bbb.

Następnie, aby włączyć gladia.io, uruchom następujące dwie komendy

sudo test -s /etc/bigbluebutton/bbb-html5.yml || sudo sh -c "echo '{}' > /etc/bigbluebutton/bbb-html5.yml"
sudo yq-go e -i '.public.app.audioCaptions.enabled = true' /etc/bigbluebutton/bbb-html5.yml
sudo yq-go e -i '.public.app.audioCaptions.provider = "gladia"' /etc/bigbluebutton/bbb-html5.yml

Następnie ustaw klucz API gladia.io za pomocą poniższego polecenia, zastępując <gladia_api_key> kluczem API glada.io uzyskanym powyżej.

sudo yq-go e -i '.gladia.startMessage = "{\"x_gladia_key\": \"<gladia-api-key>\", \"sample_rate\": 0, \"bit_depth\": 16, \"model_type\": \"fast\", \"endpointing\": 10 }"' /usr/local/bigbluebutton/bbb-transcription-controller/config/default.yml

Jeśli używasz BigBlueButton w wersji 3.0 lub wyższej, użyj wersji >0.3.x repozytorium bbb-transcription-controller, zainstaluj wtyczkę Live Transcription https://github.com/bigbluebutton/bbb-plugin-live-transcription i użyj następującego startMessage:

sudo yq-go e -i '.gladia.startMessage = "{\"sample_rate\": 16000, \"bit_depth\": 16, \"endpointing\": 0.01 }"' /usr/local/bigbluebutton/bbb-transcription-controller/config/default.yml

Zrestartuj serwer BigBlueButton za pomocą bbb-conf --restart. Teraz podczas dołączania do dźwięku będzie można wybrać opcję zamiany mowy na tekst (w tym automatyczne tłumaczenie). Gdy jeden lub więcej użytkowników wybierze tę opcję, na dole pojawi się przycisk CC i dostępny będzie również panel Transkrypcja.

Jeśli używasz LiveKit jako bramy audio, użyj bbb-livekit-stt zamiast bbb-transscription-controller jako proxy gladia.

Zaawansowane filtrowanie (przetwarzanie dźwięku WASM)

BigBlueButton 4.0 jest dostarczany z opcjonalnym procesorem dźwięku opartym na WASM, który działa na górze strumienia mikrofonu. Jest dostępny dla użytkowników jako opcja „Filtrowanie zaawansowane” w zakładce Ustawienia > Dźwięk i stanowi alternatywę dla wbudowanego w przeglądarkę przetwarzania dźwięku („Filtrowanie standardowe”), izolując głos mówiącego i eliminując szumy tła. Użytkownicy, którzy nie chcą w ogóle żadnego przetwarzania – na przykład podczas udostępniania muzyki, gdzie tłumienie szumów i automatyczna kontrola wzmocnienia byłyby niepożądane – mogą wybrać „Oryginalny dźwięk” w tej samej zakładce.

Jest domyślnie wyłączony. Aby udostępnić go użytkownikom, ustaw enabled: true pod public.media.audio.audioWasmProcessing w /etc/bigbluebutton/bbb-html5.yml:

public:
  media:
    audio:
      # audioWasmProcessing: audio input processing through WASM
      #   enabled: whether advanced/WASM processing should be exposed to users.
      #            If false, the browser's built-in audio processing is used instead.
      #   provider: which WASM backend runs the processing - 'bbba' or
      #             'workadventureDtln'. Defaults to 'bbba' if unset/unrecognized.
      #   constraints: browser-level audio constraints applied ON TOP of WASM processing.
      #                Providers can force their own value for a given constraint,
      #                overriding whatever is configured here.
      audioWasmProcessing:
        enabled: true
        provider: bbba
        constraints:
          echoCancellation: true
          autoGainControl: true
          noiseSuppression: true

Tryb przetwarzania dźwięku wybrany wstępnie dla nowych użytkowników jest kontrolowany przez public.app.defaultSettings.audio.processingMode (advanced wybiera procesor WASM; klient powraca do standard, gdy przetwarzanie WASM jest wyłączone lub przeglądarka go nie obsługuje). Uruchom ponownie BigBlueButton z sudo bbb-conf --restart po zmianie konfiguracji.

Konfiguracja polityki gościa

Polityka zarządzania gośćmi na serwerze jest ustawiona w pliku właściwości bbb-web, który znajduje się pod adresem /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties. Możesz nadpisać domyślną politykę gości w /etc/bigbluebutton/bbb-web.properties. Po prostu dodaj preferowaną wartość, zapisz plik i uruchom ponownie BigBlueButton.

# Default Guest Policy
# Valid values are ALWAYS_ACCEPT, ALWAYS_DENY, ASK_MODERATOR
#
defaultGuestPolicy=ALWAYS_ACCEPT

Skonfiguruj pozycję kolejki gości w lobby

Gdy zasady dotyczące gości wymagają od użytkowników oczekiwania na zatwierdzenie przez moderatora, klient HTML5 domyślnie pokazuje każdemu gościowi jego pozycję w kolejce oczekujących. Aby ukryć tę pozycję, ustaw public.app.showGuestLobbyWaitingQueuePosition na false w /etc/bigbluebutton/bbb-html5.yml.

public:
  app:
    showGuestLobbyWaitingQueuePosition: false

Uruchom ponownie BigBlueButton za pomocą sudo bbb-conf --restart, aby zmiana zaczęła obowiązywać.

Pokaż niestandardowe logo na kliencie

Upewnij się, że parametr displayBrandingArea jest ustawiony na true w konfiguracji bbb-html5, zrestartuj serwer BigBlueButton za pomocą sudo bbb-conf --restart i podaj logo=<image-url> w parametrach niestandardowych podczas tworzenia spotkania.

Aby zaktualizować domyślne logo, przejdź do folderu images znajdującego się pod adresem /var/www/bigbluebutton-default/assets/images/ i zastąp plik logo.png swoim nowym logo.

Dostępne są inne konfiguracje spotkań

Te konfiguracje można ustawić w /etc/bigbluebutton/bbb-web.properties. Tabela jest zsynchronizowana z bigbluebutton.properties; elementy oznaczone overwritable można zastąpić podczas jednego spotkania za pomocą odpowiedniego parametru /create.

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Opcje Wartość domyślna
defaultMeetingLayout Domyślny układ spotkania UNIFIED_LAYOUT, CAMERAS_ONLY, PRESENTATION_ONLY, PARTICIPANTS_AND_CHAT_ONLY, MEDIA_ONLY UNIFIED_LAYOUT overwritable (przez meetingLayout)
defaultMaxUsers Maksymalna liczba użytkowników spotkania Liczba całkowita (0=wyłącz) 0 overwritable (przez maxParticipants)
maxUserConcurrentAccesses Maksymalna liczba sesji, które pojedynczy użytkownik (extId) może otworzyć jednocześnie podczas tego samego spotkania; najstarsza sesja zostaje zakończona po przekroczeniu. Liczba całkowita (0=wyłącz) 3
defaultMeetingDuration Domyślny czas trwania spotkania w minutach Liczba całkowita (0=wyłącz) 0 overwritable (przez duration)
defaultGuestPolicy Domyślne zasady gości stosowane do spotkań ALWAYS_ACCEPT, ALWAYS_DENY, ASK_MODERATOR ALWAYS_ACCEPT overwritable (przez guestPolicy)
authenticatedGuest Włącz tryb uwierzytelnionego gościa prawda/fałsz prawda
defaultAllowPromoteGuestToModerator Umożliwia moderatorom promowanie gości na moderatorów, gdy włączone jest authenticatedGuest prawda/fałsz fałsz overwritable (przez allowPromoteGuestToModerator)
meetingExpireIfNoUserJoinedInMinutes Zakończ spotkanie, jeśli żaden użytkownik nie dołączył w ciągu czasu od utworzenia spotkania Liczba całkowita 5 overwritable
meetingExpireWhenLastUserLeftInMinutes Liczba minut do zakończenia spotkania, gdy ostatni użytkownik opuścił Liczba całkowita (0=wyłącz) 1 overwritable
endWhenNoModerator Zakończ spotkanie, gdy po upływie określonego czasu nie będzie już moderatorów prawda/fałsz fałsz overwritable
endWhenNoModeratorDelayInMinutes Liczba minut oczekiwania na ponowne dołączenie moderatora przed zakończeniem spotkania Liczba całkowita 1 overwritable
userInactivityInspectTimerInMinutes Interwał licznika czasu kontroli braku aktywności użytkownika Liczba całkowita (0=wyłącz) 0
userInactivityThresholdInMinutes Liczba minut uznawania użytkownika za nieaktywnego Liczba całkowita 30
userActivitySignResponseDelayInMinutes Liczba minut, po których użytkownik może odpowiedzieć na ostrzeżenie o braku aktywności, zanim zostanie wylogowany Liczba całkowita 5
usersTimeout Limit czasu (w milisach), aby usunąć dołączonego użytkownika po jego opuszczeniu bez ponownego dołączenia Liczba całkowita 60000 (60s)
waitingGuestUsersTimeout Limit czasu (w milisach), aby usunąć gości-gości, którzy przestali pobierać informacje o swoim statusie Liczba całkowita 30000 (30s)
defaultHttpSessionTimeout Limit czasu (w sekundach) unieważnienia nieaktywnych sesji HTTP Liczba całkowita 14400 (4h)
sessionsCleanupDelayInMinutes Minuty oczekiwania przed usunięciem sesji użytkownika po zakończeniu spotkania; w trakcie tego opóźnienia ekran „Spotkanie zakończone” jest nadal dostępny Liczba całkowita (0=zachowaj na czas nieokreślony) 60
webcamsOnlyForModerator Zezwalaj na odbiór transmisji strumieniowej z kamer internetowych tylko do i od moderatorów prawda/fałsz fałsz overwritable
meetingCameraCap Limit udziału kamery na spotkaniu Liczba całkowita (0=wyłącz) 0 overwritable
userCameraCap Limit udziału kamery na użytkownika Liczba całkowita (0=wyłącz) 3 overwritable
maxPinnedCameras Maksymalna liczba kamer przypiętych jednocześnie Liczba całkowita (0=wyłącz) 3
muteOnStart Mikrofon jest domyślnie wyciszony, gdy użytkownicy rozpoczynają udostępnianie prawda/fałsz prawda overwritable
allowModsToUnmuteUsers Daje moderatorom uprawnienia do wyłączania wyciszenia innych użytkowników prawda/fałsz fałsz overwritable
requireUserConsentBeforeUnmuting Umożliwia uczestnikom zaakceptowanie lub odrzucenie prośby moderatora o wyłączenie wyciszenia. prawda/fałsz fałsz overwritable
allowModsToEjectCameras Daje moderatorom pozwolenie na zamykanie kamer internetowych innych użytkowników prawda/fałsz fałsz overwritable
cameraBridge Most multimedialny używany do strumieni z kamer livekit, bbb-webrtc-sfu zestaw do życia
screenShareBridge Most multimedialny używany do strumieni udostępniania ekranu livekit, bbb-webrtc-sfu zestaw do życia
audioBridge Most multimedialny używany do strumieni audio livekit, bbb-webrtc-sfu, freeswitch zestaw do życia
disableRecordingDefault Jeśli ma wartość true, nie nagrywaj, nawet jeśli wywołanie /create ustawi record=true prawda/fałsz fałszywe
autoStartRecording Rozpocznij nagrywanie, gdy pierwszy użytkownik dołączy do spotkania prawda/fałsz fałsz overwritable
allowStartStopRecording Zezwalaj użytkownikom na rozpoczynanie/zatrzymywanie nagrywania podczas sesji prawda/fałsz prawda overwritable
defaultKeepEvents Zapisz wydarzenia spotkania, nawet jeśli spotkanie nie jest nagrywane prawda/fałsz fałsz overwritable (przez meetingKeepEvents)
allowFetchAllRecordings Jeśli ma wartość true, getRecordings bez meetingID zwraca każde nagranie na serwerze (potencjalnie duża odpowiedź) prawda/fałsz prawda
recordFullDurationMedia Czy multimedia (dźwięk, kamery, udostępnianie ekranu) są przechwytywane przez cały czas trwania record=true, ignorując bieżący stan nagrywania wstrzymanego/trwającego spotkania prawda/fałsz fałsz overwritable
notifyRecordingIsOn Powiadom użytkowników, że nagrywanie jest włączone prawda/fałsz fałsz overwritable
lockSettingsDisableCam Domyślne ustawienie blokady: wyłącz kamery internetowe prawda/fałsz fałsz overwritable
lockSettingsDisableMic Domyślne ustawienie blokady: wyłącz mikrofony prawda/fałsz fałsz overwritable
lockSettingsDisablePrivateChat Domyślne ustawienie blokady: wyłącz czat prywatny prawda/fałsz fałsz overwritable
lockSettingsDisablePublicChat Domyślne ustawienie blokady: wyłącz czat publiczny prawda/fałsz fałsz overwritable
lockSettingsDisableNotes Domyślne ustawienie blokady: wyłącz udostępnione notatki prawda/fałsz fałsz overwritable
lockSettingsHideUserList Domyślne ustawienie blokady: ukryj listę użytkowników przed osobami niebędącymi moderatorami prawda/fałsz fałsz overwritable
lockSettingsLockOnJoin Domyślne ustawienie blokady: zastosuj ustawienia blokady do wszystkich użytkowników po dołączeniu prawda/fałsz prawda overwritable
lockSettingsLockOnJoinConfigurable Zezwól na skonfigurowanie flagi blokady przy dołączaniu dla każdego spotkania prawda/fałsz fałsz overwritable
lockSettingsHideViewersCursor Domyślne ustawienie blokady: ukrywanie kursorów widzów przed sobą prawda/fałsz fałsz overwritable
lockSettingsHideViewersAnnotation Domyślne ustawienie blokady: ukrywanie przed sobą adnotacji widzów prawda/fałsz fałsz overwritable
lockSettingsPresenterPolicy Domyślne ustawienie blokady: kontroluje, kto może przejąć rolę prezentera wymaga zatwierdzenia, tylko moderator, freeForAll wymaga zatwierdzenia overwritable
breakoutRoomsRecord Włącz nagrania w pokojach podgrup prawda/fałsz fałsz overwritable
breakoutRoomsPrivateChatEnabled Włącz prywatny czat w pokojach podgrup prawda/fałsz prawda overwritable
breakoutRoomsMultiUserWhiteboardDefaultOn Włącz domyślnie tablicę dla wielu użytkowników w pokojach podgrup prawda/fałsz prawda
learningDashboardCleanupDelayInMinutes Minuty, w których Panel edukacyjny pozostaje dostępny po zakończeniu spotkania. W przypadku panelu pokoju podgrup odliczanie rozpoczyna się po zakończeniu spotkania rodziców Liczba całkowita (0=zachowaj na stałe) 2 overwritable
disabledFeatures Rozdzielana przecinkami lista funkcji do wyłączenia (pełna lista nazw funkcji znajduje się w dokumentacji /create) CSV (pusty) overwritable
maxSharedNotesInitialContentUrlPayloadSize Maksymalny rozmiar (w KiB) odpowiedzi pobieranej podczas umieszczania początkowej zawartości udostępnionych notatek z sharedNotesInitialContentJsonUrl / sharedNotesInitialContentMarkdownUrl Liczba całkowita (KiB) 1024
allowOverrideClientSettingsOnCreateCall Zezwól na przekazanie clientSettingsOverride / clientSettingsOverrideJsonUrl do /create prawda/fałsz fałszywe
clientSettingsOverrideStrictValidation Jeśli ma wartość true, odrzuć wywołanie /create (bbb-web) i odmów rozruchu bbb-apps-akka, jeśli zastąpienie ustawień klienta ma nieznane lub zniekształcone klucze. Przeznaczony do testów/pomostu (patrz Weryfikacja zastąpień ustawień klienta) prawda/fałsz fałszywe
clientSettingsFilePath Ścieżka do katalogu settings.yml użytego jako schemat dla powyższej ścisłej weryfikacji zastąpienia ustawień klienta ścieżka /usr/share/bigbluebutton/html5-client/private/config/settings.yml
pluginManifests Lista manifestów wtyczek w postaci tablicy JSON, np. [{"url": "https://example.com/manifest.json"}] Tablica JSON (pusty) overwritable
pluginManifestCacheEnabled Wtyczka pamięci podręcznej manifestuje się na dysku, aby przyspieszyć wywołania /create prawda/fałsz fałszywe
pluginManifestCacheDirectory Katalog podstawowy dla buforowanych plików manifestu wtyczek. Katalog jest czyszczony przy każdym uruchomieniu bbb-web; wpisy nieaktywne przez ponad tydzień są również automatycznie usuwane przez zadanie okresowego odświeżania ścieżka /var/bigbluebutton/plugin-manifests-cache/
pluginManifestCacheRefreshIntervalMinutes Jak często (w minutach) uruchamia się zadanie odświeżania pamięci podręcznej manifestu wtyczki Liczba całkowita 60
serviceEnabled Czy interfejs API BigBlueButton jest włączony prawda/fałsz prawda
allowRequestsWithoutSession Zezwalaj na obsługę żądań bez JSESSIONID (zmniejsza bezpieczeństwo; włączaj tylko dla zaufanych integracji, takich jak iframe) prawda/fałsz fałsz overwritable
supportedChecksumAlgorithms Algorytmy mieszające akceptowane podczas sprawdzania sum kontrolnych API (oddzielone przecinkami) sha1, sha256, sha384, sha512 sha1, sha256, sha384, sha512
pageTokenSecret Sekret używany do generowania tokenów dostępu do prezentacji na stronie (HMAC-SHA256). Zastąpienie dodatkowego oddzielenia zabezpieczeń pomiędzy tokenami prezentacji a resztą bbb-web Ciąg (domyślnie ${securitySalt})
beans.presentationService.pageTokenSecret Okablowanie fasoli Graila, które wstawia pageTokenSecret do usługi prezentacji. Zastąp tylko wtedy, gdy usługa prezentacji powinna używać innego klucza tajnego niż pageTokenSecret Ciąg (domyślnie ${pageTokenSecret})
allowRevealOfBBBVersion Pozwól punktowi końcowemu getMeetings ujawnić aktualną wersję BigBlueButton prawda/fałsz fałszywe
  • overwritable: Wartość domyślna jest zastępowana, gdy w żądaniu API /create występuje pasujący parametr. Jeżeli nazwa strony tworzenia różni się od nazwy właściwości, jest ona pokazana w nawiasach (np. defaultMeetingLayout → meetingLayout).

/create parametry bez odpowiednika bigbluebutton.properties

Niektóre parametry /create ustawiają stan dla każdego spotkania, ale nie mają wartości domyślnych w bigbluebutton.properties. Przykłady obejmują name, meetingID, parentMeetingID/sequence/freeJoin/isBreakout (tylko wybicie), bannerText/bannerColor, moderatorOnlyMessage, notifyRecordingAppend, meta_* metadane, logo, multiUserWhiteboardEnabled, parametry przesyłania prezentacji (preUploadedPresentation*, presentationUploadExternalUrl, presentationUploadExternalDescription), sharedNotesInitialContentJsonUrl, disabledFeaturesExclude, clientSettingsOverride / clientSettingsOverrideJsonUrl i pluginManifestsFetchUrl. Pełną listę i opisy można znaleźć w artykule Utwórz parametry API.

Przekazywanie metadanych użytkownika do klienta przy dołączaniu

Klient HTML5 obsługuje listę parametrów, które można dodać do wywołania API join, które modyfikują wygląd i domyślne zachowanie klienta. Ta lista jest dokładna od wersji BigBlueButton 2.2.17 (kompilacja 937). Parametry te zastępują globalne ustawienia domyślne ustawione w settings.yml. Ponieważ parametry są przekazywane podczas połączenia, pozwala to na pewne zaawansowane dostosowania, które mogą się różnić w zależności od tego, który użytkownik dołącza do sesji.

Przydatne narzędzia programistyczne:

  • Narzędzie takie jak (https://meyerweb.com/eric/tools/dencoder/) jest przydatne w procesie kodowania-dekodowania dla pól oczekujących przekazania zakodowanej wartości (patrz poniżej). — API mate umożliwia bezpośrednie eksperymentowanie z metadanymi użytkownika. Aby skorzystać z wiązania API, uruchom następującą komendę na komputerze BigBlueButton: sudo bbb-conf --secret. Spowoduje to utworzenie łącza z Twoim sekretem jako parametrem, dzięki czemu będziesz mógł od razu rozpocząć eksperymentowanie.

Parametry aplikacji

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_auto_join_audio= Jeśli ustawione na true, klient automatycznie rozpocznie proces dołączania do mostu audio po załadowaniu klienta false
userdata-bbb_client_title= Określa ciąg znaków, który ma zostać ustawiony jako tytuł klienta HTML5 DużyNiebieskiPrzycisk
userdata-bbb_force_listen_only= Jeśli ustawione na true, uczestnicy nie będą mogli dołączyć za pomocą mikrofonu jako opcji (nie dotyczy moderatorów) false
userdata-bbb_listen_only_mode= Jeśli ustawiona na false, użytkownik nie będzie mógł dołączyć do części audio spotkania bez mikrofonu (wyłącza tryb tylko słuchania) true
userdata-bbb_skip_check_audio= Jeśli ustawiono true, użytkownik nie zobaczy monitu „test echa” podczas udostępniania dźwięku false
userdata-bbb_skip_check_audio_on_first_join= (Wprowadzono w BigBlueButton 2.3) Jeśli ustawiono true, użytkownik nie zobaczy „testu echa” podczas udostępniania dźwięku po raz pierwszy w sesji. Jeśli użytkownik przestanie udostępniać dźwięk, przy następnej próbie udostępnienia dźwięku zostanie wyświetlone okno testu echa, umożliwiające wprowadzenie zmian w konfiguracji przed ponownym udostępnieniem dźwięku false
userdata-bbb_skip_echotest_if_previous_device= (Wprowadzone w BigBlueButton 3.0) Jeśli ustawione na true, użytkownik nie zobaczy „testu echa”, jeśli w sesji zapisane zostały wcześniej ważne urządzenia wejścia/wyjścia false
userdata-bbb_override_default_locale= (Wprowadzono w BigBlueButton 2.3) Jeśli ustawione na de, preferencje przeglądarki użytkownika zostaną zignorowane - klient będzie wyświetlany w języku „de” (tj. niemieckim), niezależnie od preferowanych ustawień regionalnych „en” (lub innych) null
userdata-bbb_direct_leave_button (Wprowadzone w BigBlueButton 2.7) Jeśli ustawione na true, przycisk umożliwiający opuszczenie spotkania pojawi się po lewej stronie menu Opcje. false
userdata-bbb_parent_room_moderator= (Wprowadzone w BigBlueButton 3.0) Używane tylko w przerwach: jeśli ustawione na true, użytkownik będzie miał uprawnienia do wyrzucania innych użytkowników do przerwania false
userdata-bbb_record_permission= (Wprowadzone w BigBlueButton 3.0) Jeśli ustawione na true, użytkownik będzie mógł kontrolować rozpoczęcie/zakończenie nagrywania. Jeśli ustawione na false, użytkownik nie będzie mógł kontrolować rozpoczęcia/zatrzymania nagrywania, nawet jeśli pełni rolę moderatora. W przeciwnym razie kontrolę będą mieli tylko moderatorzy (domyślnie). null
userdata-bbb_record_permission_tooltip= (Wprowadzone w BigBlueButton 3.0) Jeśli jest ustawione, podpowiedź wskaźnika nagrywania wyświetlana, gdy użytkownik nie ma uprawnień do nagrywania, zostanie zastąpiona jego zawartością. null
userdata-bbb_show_session_details_on_join= (Wprowadzone w BigBlueButton 3.0) Jeśli ustawione na false , okno szczegółów sesji nie będzie wyświetlane, gdy użytkownik dołączy do sesji. null
userdata-bbb_show_animations_default= Jeśli ustawione na false , animacje (deszcz emoji, wygaszanie pasków narzędzi tablicy itp.) nie będą wyświetlane użytkownikowi. true

Parametry marki

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_display_branding_area= Jeśli ustawisz true, klient wyświetli obszar brandingu w lewym górnym rogu true

Parametry skrótu

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_shortcuts= Przekazana wartość musi być zakodowana w adresie URL. Na przykład, jeśli chcesz wyłączyć skróty, przekaż %5B%5D, który jest zakodowaną wersją pustej tablicy [] Zobacz settings.yml

Parametry nośnika

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_auto_share_webcam= Jeśli ustawione na true, klient rozpocznie proces udostępniania kamery internetowej (jeśli jest) automatycznie po załadowaniu klienta false
userdata-bbb_preferred_camera_profile= Określa preferowany profil kamery spośród profili zdefiniowanych w settings.yml żaden
userdata-bbb_enable_video= Jeśli ustawione na false, klient wyświetli przycisk udostępniania kamery internetowej (w efekcie wyłączanie/włączanie kamer internetowych) true
userdata-bbb_record_video= Jeśli ustawione na false, użytkownik nie będzie nagrywał swojego strumienia wideo true
userdata-bbb_skip_video_preview= Jeśli ustawisz true, użytkownik nie zobaczy podglądu swojej kamery internetowej przed jej udostępnieniem false
userdata-bbb_skip_video_preview_on_first_join= (Wprowadzono w BigBlueButton 2.3) Jeśli ustawiono opcję true, użytkownik nie zobaczy podglądu swojej kamery internetowej przed udostępnieniem jej podczas pierwszego udostępniania w sesji. Jeśli użytkownik przestanie udostępniać, przy następnej próbie udostępnienia kamery internetowej wyświetlony zostanie podgląd wideo, umożliwiający wprowadzenie zmian w konfiguracji przed udostępnieniem false
userdata-bbb_skip_video_preview_if_previous_device= (Wprowadzone w BigBlueButton 3.0) Jeśli ustawione na true, użytkownik nie zobaczy podglądu swojej kamery internetowej przed udostępnieniem jej, jeśli w sesji zapisane zostało wcześniej prawidłowe urządzenie wejściowe false
userdata-bbb_mirror_own_webcam= Jeśli ustawisz true, klient zobaczy lustrzaną wersję swojej kamery internetowej. Nie ma wpływu na przychodzący strumień wideo dla innych użytkowników. false
userdata-bbb_fullaudio_bridge= Określa most audio, który ma być używany w kliencie. Obsługiwane wartości: fullaudio. fullaudio
userdata-bbb_transparent_listen_only= Jeśli ustawiona na true, używany będzie eksperymentalny tryb audio „tylko przezroczyste słuchanie” false
userdata-bbb_transcription_provider= (Wprowadzone w BigBlueButton 3.0) Zastępuje dostawcę zamiany mowy na tekst używanego do napisów/transkrypcji na żywo. Obsługiwane wartości: webspeech, vosk, gladia. Domyślnie public.app.audioCaptions.provider w settings.yml. webspeech

Parametry prezentacji

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_force_restore_presentation_on_new_events= Jeśli ustawisz true, nowe zdarzenia związane z prezentacją będą przesyłane do widzów. Aby uzyskać więcej informacji, zobacz to PR. false

Parametry tablicy

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_multi_user_pen_only= Jeśli ustawione na true, tylko narzędzie Pióro będzie dostępne dla osób niebędących uczestnikami, gdy włączona jest tablica dla wielu użytkowników false
userdata-bbb_presenter_tools= Przekaż szereg dozwolonych narzędzi z settings.yml. Obsługiwane przez nas opcje to: select, hand, draw, eraser, arrow, text, note, rectangle i *more. Przykład: userdata-bbb_presenter_tools=['eraser', 'note'] umożliwia korzystanie tylko z narzędzi gumki i notatek. wszystkie włączone
userdata-bbb_multi_user_tools= Przekaż szereg dozwolonych narzędzi dla osób nieprowadzących prezentacji z settings.yml. Obsługiwane przez nas opcje to: select, hand, draw, eraser, arrow, text, note, rectangle i *more. Przykład: userdata-bbb_multi_user_tools=['eraser', 'note'] umożliwia korzystanie tylko z narzędzi gumki i notatek. wszystkie włączone
userdata-bbb_initial_selected_tool= Podaj identyfikator narzędzia, które ma zostać wybrane początkowo, gdy użytkownik po raz pierwszy dołączy do sesji. Ta opcja nie będzie obowiązywać podczas odświeżania strony i może zostać zastąpiona, jeśli użytkownik wybierze inne narzędzie. rysuj
*więcej: More obejmuje resztę dodatkowych kształtów, czyli: rectangle, ellipse, diamond, triangle, trapezoid, rhombus, hexagon, cloud, star, oval, x-box, check-box, arrow-left, arrow-up, arrow-down, arrow-right, frame, line, laser.

Użycie *więcej obejmie wszystkie kształty wymienione powyżej.

Parametry motywu i stylizacji

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_custom_style= Ciąg zakodowany w adresie URL z niestandardowym CSS żaden
userdata-bbb_custom_style_url= Ten parametr działa tak samo jak userdata-bbb_custom_style, z tą różnicą, że zawartość CSS pochodzi z hostowanego pliku żaden
userdata-bbb_prefer_dark_theme= Ten parametr powoduje, że ciemny motyw jest domyślny fałszywe

Parametry układu

Tabela jest szersza od ekranu. Przewiń ją w poziomie.

Parametr Opis Wartość domyślna
userdata-bbb_auto_swap_layout= Jeśli ustawiono true, obszar prezentacji zostanie zminimalizowany, gdy użytkownik dołączy do spotkania. (Usunięte w 2.6) false
userdata-bbb_hide_presentation= Jeśli ustawiono true, obszar prezentacji nie będzie wyświetlany. (Usunięte w 2.6) false
userdata-bbb_hide_presentation_on_join= Jeśli ustawiono true, obszar prezentacji będzie początkowo zminimalizowany, ale można go przywrócić false
userdata-bbb_show_participants_on_login= Jeśli ustawisz true, panel uczestników zacznie się otwierać. This takes precedence over userdata-bbb_show_public_chat_on_login. false
userdata-bbb_show_public_chat_on_login= Jeśli ustawione na false, panel czatu nie będzie widoczny podczas ładowania strony, dopóki nie zostanie otwarty. To nie to samo, co wyłączenie czatu. true
userdata-bbb_hide_nav_bar= Jeśli ustawiono true, pasek nawigacyjny (górna część klienta) nie będzie wyświetlany. Wprowadzony w BBB 2.4-rc-3. false
userdata-bbb_hide_actions_bar= Jeśli ustawiono true, pasek działań (dolna część klienta) nie będzie wyświetlany. Wprowadzony w BBB 2.4-rc-3. false
userdata-bbb_default_layout= Początkowy układ po obciążeniu klienta. Dostępne opcje to: UNIFIED_LAYOUT, CAMERAS_ONLY, PRESENTATION_ONLY, PARTICIPANTS_AND_CHAT_ONLY, MEDIA_ONLY. Jeśli nie zostanie podany żaden, zostanie użyty układ spotkania (ustawiony fabrycznie w bbb-web). Wprowadzono w BBB 3.0.0-alfa.5. none
userdata-bbb_hide_notifications= Gdy ten parametr jest ustawiony na true, wszystkie toasty powiadomień są pomijane w kliencie. Wprowadzono w BBB 3.0.0-beta.4. false
userdata-bbb_hide_controls= Gdy ten parametr jest ustawiony na true, ukrywa pasek akcji i górny wiersz paska nawigacyjnego (w tym przycisk zamykania paska bocznego, tytuł pokoju, wskaźnik łączności i przycisk opuszczania spotkania), pozostawiając widoczny wiersz ze wskaźnikiem mówienia i wskaźnikiem licznika czasu. Wprowadzono w BBB 3.0.0-beta.4. false
userdata-bbb_hide_sidebar_navigation= (Wprowadzone w BigBlueButton 4.0) Jeśli ustawione na true, kolumna nawigacyjna na pasku bocznym (panel listy użytkowników / aplikacji i jego przełączniki) zostanie ukryta po dołączeniu. false

Przykłady

Zmiana koloru tła klienta HTML

Kolor tła klienta HTML5 możesz zmienić za pomocą następującego arkusza stylów:

:root {
  --loader-bg: #000;
}

.overlay--1aTlbi {
  background-color: #000 !important;
}

body {
  background-color: #000 !important;
}

Możesz dodać ten kod do hostowanego pliku .css i przekazać userdata-bbb_custom_style_url=https://someservice.com/customStyles.css

Alternatywnie (w przypadku prostych zmian) możesz osiągnąć to samo bez hostowanego pliku.

Możesz spróbować tego w API-MATE - potrzebujesz niekodowanej wersji CSS

userdata-bbb_custom_style=:root{--loader-bg:#000;}.overlay--1aTlbi{background-color:#000!important;}body{background-color:#000!important;}

Jeśli dodajesz to do adresu URL dołączenia, musisz zakodować ciąg URI (zobacz przykładowe narzędzie do kodowania powyżej)

%3Aroot%7B--loader-bg%3A%23000%3B%7D.overlay--1aTlbi%7Bbackground-color%3A%23000!important%3B%7Dbody%7Bbackground-color%3A%23000!important%3B%7D

Wyślij logi klienta na serwer

Instrukcje krok po kroku dotyczące konfigurowania logów od klientów do logowania się w pliku dziennika serwera znajdują się w Administracja -> Pliki konfiguracyjne

Inne zmiany konfiguracji

Wyodrębnij wspólny sekret

Każdy interfejs BigBlueButton potrzebuje dwóch informacji: nazwy hosta serwera BigBlueButton i jego wspólnego sekretu (do uwierzytelniania wywołań API). Aby wydrukować nazwę hosta i wspólny sekret dla Twojego serwera BigBlueButton, wpisz polecenie bbb-conf --secret:

$ bbb-conf --secret

    URL: https://bigbluebutton.example.com/bigbluebutton/
    Secret: 577fd5f05280c10fb475553d200f3322

    Link to the API-Mate:
    https://mconf.github.io/api-mate/#server=https://10.0.3.132/bigbluebutton/&sharedSecret=577fd5f05280c10fb475553d200f3322

Ostatnia linia zawiera łącze API-Mate, doskonałe narzędzie dostarczane przez Mconf Technologies (firmę, która na przestrzeni lat wniosła wiele wkładu w projekt BigBlueButton), które ułatwia tworzenie wywołań API.

Zmień wspólny sekret

Aby zweryfikować przychodzące wywołania API, wszystkie zewnętrzne aplikacje wykonujące wywołania API muszą sumować swoje wywołania API przy użyciu tego samego sekretu, jaki skonfigurowano na serwerze BigBlueButton.

Wspólny sekret znajdziesz w /etc/bigbluebutton/bbb-web.properties

securitySalt=<value_of_salt>

Aby zmienić wspólny sekret, wykonaj następujące czynności:

  1. Wygeneruj nowy uniwersalny unikalny identyfikator (UUID) z generatora UUID, np. http://www.somacon.com/p113.php. Otrzymasz długi ciąg liczb losowych, których nie będzie można odtworzyć.
  2. Uruchom komendę sudo bbb-conf --setsecret new_secret.

Uwaga: Jeśli stworzyłeś własny interfejs użytkownika lub używasz wtyczki innej firmy do łączenia się z BigBlueButton, jego wspólny sekret; w przeciwnym razie, jeśli współdzielone sekrety nie będą się zgadzać, suma kontrolna przychodzących wywołań API nie będzie się zgadzać, a serwer BigBlueButton odrzuci wywołanie API z błędem.

Zainstaluj wywołanie zwrotne dla zdarzeń (webhooków)

Chcesz otrzymywać wywołania zwrotne do swojej aplikacji, gdy wystąpi zdarzenie w BigBlueButton? BigBlueButton udostępnia opcjonalny pakiet web hooków, który instaluje aplikację node.js, która nasłuchuje wszystkich zdarzeń na BigBlueButton i wysyła żądania POST ze szczegółami dotyczącymi tych zdarzeń do hooków zarejestrowanych poprzez API. Hakiem może być dowolny zewnętrzny adres URL, który może odbierać żądania HTTP POST.

Aby zainstalować bbb-webhooks

$ sudo apt-get install bbb-webhooks

Informacje na temat konfigurowania elementów bbb-webhook można znaleźć w sekcji bbb-webhooks.

Skalowalność

Liczba instancji Hasury

BigBlueButton jest dostarczany z jedną instancją Hasury (bbb-graphql-server), której zadaniem jest obsługa Zapytania i subskrypcje GraphQL od klientów, a po wykupieniu subskrypcji ciągła aktualizacja, gdy tylko dostępne będą nowe dane. Działa to dobrze w przypadku obciążenia serwera poniżej kilkuset użytkowników (w zależności od ich aktywności). Późniejsze zapytania zwykle trwają dłużej. Włączenie więcej niż jednej instancji Hasury rozwiązuje ten problem.

Jak włączyć dodatkowe instancje Hasury?

Edytuj /etc/nginx/sites-available/hasura-loadbalancer.conf i dodaj do listy wewnątrz bloku hasura. Dodanie jeszcze jednej instancji nasłuchującej na porcie 8086 wygląda następująco:

upstream hasura {
    least_conn;
    server 127.0.0.1:8085;
    server 127.0.0.1:8086;
}

Po zapisaniu pliku użyj systemctl, aby włączyć tę nową instancję poprzez:

systemctl enable --now bbb-graphql-server@8086

Na koniec uruchom ponownie BigBlueButton

bbb-conf --restart

Możesz dokładnie sprawdzić, czy obie instancje działają poprawnie za pomocą systemctl status bbb-graphql-server*, który powinien wyświetlić usługi na obu portach jako „działające”.

Ile instancji Hasury powinienem uruchomić?

Począwszy od BigBlueButton 3.0, zalecamy pozostawienie ustawienia domyślnego (pojedyncza instancja), chyba że spodziewasz się, że Twój serwer BigBlueButton będzie obsługiwał setki jednoczesnych użytkowników. Druga instancja byłaby korzystna dla tych, którzy chcą obsługiwać większą liczbę (kilkaset użytkowników), szczególnie na sprzęcie, który jest wielokrotnie wydajniejszy niż to, co określono w minimalnych wymaganiach serwera. Nie zauważyliśmy jeszcze widocznej różnicy w przypadku więcej niż dwóch instancji Hasury, ponieważ na tym poziomie użytkowania istnieją inne aspekty BigBlueButton, które również zaczną wykazywać oznaki spowolnienia.