Go to file
Calvin Walton d402f519c6 fix(recording): Deskshare audio processing hang
This is a refinement of the fix introduced in 3c1a9cd7c4.

Further investigation of the issue reveals that the cause of the bad
timestamps which result in error messages or hang is when the `apad`
filter does not receive any input audio frames. This happens if the
seekpoint is after the end of audio. The existing seekpoint checks can't
cover this, because in a deskshare file the video stream can continue on
after the audio stream ends.

The `,asetpts=N` filter was added to deal with this problem, and it
works in most cases. But there is a case where it fails - when the
"mismatched length" audio stretching to work around broken recordings
from BigBlueButton 0.81/0.90 kicks in.

The issue there is that the `atrim=start=S` filter (used due to the
difficulty of calculating seeks when stretching) hits the invalid
timestamps and hangs.

I'm working around this issue with a "defense in depth" combination of
two changes:

* Move the `,asetpts=N` filter to be applied before the audio stretch
  filters. This fixes the processing hang.
* Adjust the conditions on the "mismatched length" audio stretching so
  that it only gets applied on audio files likely to be from extremely
  old BigBlueButton versions - those with audio in wav files, or encoded
  to vorbis.

BigBlueButton has been using audio recorded directly to opus by
FreeSWITCH for quite a while, and the handling for gaps or lost packets
is done in current BBB versions by a combination of the libopus decoder
and the use of ffmpeg's `aresample=async=1000` filter to dynamically
stretch, squish, or fill in audio so it becomes a continuous stream
that's locked to the file timestamps. Applying the "mismatched length"
processing on top of that is probably making audio sync issues worse.
2023-10-03 14:21:50 -04:00
.github use bbb-install from github 2023-08-31 07:13:59 -04:00
akka-bbb-apps build: use Java17 to build akka projects 2023-08-31 07:03:04 -04:00
akka-bbb-fsesl feat(audio): add experimental transparent listen only mode 2023-08-07 19:43:18 -03:00
bbb-common-message Change target to release for java 17 2023-08-31 07:00:42 -04:00
bbb-common-web Change target to release for java 17 2023-08-31 07:00:42 -04:00
bbb-export-annotations chore: allow newer nodejs to be used on bbb-export-annotations 2023-08-31 07:16:32 -04:00
bbb-fsesl-client Change target to release for java 17 on fsesl 2023-08-31 07:01:00 -04:00
bbb-learning-dashboard darken activity score green boxes for compliant contrast ratio 2023-07-16 14:21:50 +00:00
bbb-libreoffice Switch bbb-soffice parent image to amazoncorretto:17-alpine 2022-09-28 08:16:38 -03:00
bbb-recording-imex add .gitignore for bbb-recording-imex 2023-01-25 18:40:58 +00:00
bbb-voice-conference/config/freeswitch build(freeswitch): load mod_audio_fork by default 2023-04-25 10:05:06 -03:00
bigbluebutton-config chore: bump up release to 2.7.1 2023-09-12 11:04:16 -04:00
bigbluebutton-html5 fix video dropdown in rtl 2023-09-28 14:02:32 -03:00
bigbluebutton-tests Merge pull request #18664 from antonbsa/shard-tests-ci 2023-09-15 08:49:09 -04:00
bigbluebutton-web Upgrade gorm and groovy versions 2023-08-31 07:02:30 -04:00
build Merge pull request #18789 from antobinary/docs27 2023-09-15 10:23:50 -04:00
docs Merge pull request #18884 from prlanzarin/u27/docs/screenshare-qos-conf 2023-10-02 14:07:29 -04:00
labs/stress-testing Removes vertx-akka file 2022-06-30 16:51:23 -03:00
record-and-playback fix(recording): Deskshare audio processing hang 2023-10-03 14:21:50 -04:00
.gitignore bbb-presentation-video: Update to 4.0.0-rc.1 2023-03-06 11:57:53 -05:00
.gitlab-ci.yml use package building image with java17 node18 2023-08-31 07:09:35 -04:00
.nvmrc Add .nvmrc 2018-10-03 13:33:59 -04:00
bbb-etherpad.placeholder.sh Fix permission issue with Etherpad 1.9.1 2023-07-04 21:37:20 +00:00
bbb-lti.placeholder.sh build: add placeholder to pull bbb-lti from other repo 2022-02-28 20:29:11 +00:00
bbb-pads.placeholder.sh chore: Bump bbb-pads to 1.5.1 2023-07-25 11:05:27 -04:00
bbb-playback.placeholder.sh chore: Bump bbb-playback to 5.0.1 2023-09-15 09:53:59 -04:00
bbb-presentation-video.placeholder.sh bbb-presentation-video: Update to 4.0.3 2023-07-17 12:01:12 -04:00
bbb-transcription-controller.placeholder.sh build: add bbb-transcription-controller 2023-05-19 13:03:17 -03:00
bbb-webhooks.placeholder.sh build(webhooks): v2.6.0 2022-05-24 14:08:12 +00:00
bbb-webrtc-recorder.placeholder.sh build(bbb-webrtc-recorder): v0.5.1 2023-09-07 10:12:05 -03:00
bbb-webrtc-sfu.placeholder.sh build(bbb-webrtc-sfu): v2.12.0-beta.1 2023-09-07 10:11:52 -03:00
freeswitch.placeholder.sh build(freeswitch): v1.10.10 2023-08-22 14:27:28 -04:00
LICENSE Add license file 2020-04-23 13:51:05 -03:00
README.md build: swap bionic with focal 2022-03-14 19:04:23 +00:00
SECURITY.md Update SECURITY.md 2023-09-06 15:37:56 -04:00
transifex.yml fix: Change naming of resulting translated locales file 2022-12-20 13:50:44 -05:00

BigBlueButton

BigBlueButton is an open source web conferencing system.

BigBlueButton supports real-time sharing of audio, video, slides (with whiteboard controls), chat, and the screen. Instructors can engage remote students with polling, emojis, multi-user whiteboard, and breakout rooms.

Presenters can record and playback content for later sharing with others.

We designed BigBlueButton for online learning, (though it can be used for many other applications as well). The educational use cases for BigBlueButton are

  • Online tutoring (one-to-one)
  • Flipped classrooms (recording content ahead of your session)
  • Group collaboration (many-to-many)
  • Online classes (one-to-many)

You can install on a Ubuntu 20.04 64-bit server. We provide bbb-install.sh to let you have a server up and running within 30 minutes (or your money back 😉).

For full technical documentation BigBlueButton -- including architecture, features, API, and GreenLight (the default front-end) -- see https://docs.bigbluebutton.org/.

BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc .