Implement dynamic layout in video recording format#2
Closed
kepstin wants to merge 306 commits into
Closed
Conversation
b6e0dfc to
31e5401
Compare
|
This pull request has conflicts ☹ |
6c7ae6c to
28acac9
Compare
…patch-6 docs: Note renaming pngCreationExecTimeoutInMs pngCreationExecTimeout
100% translated source file: 'en.json' on 'ja'.
Adds a check to the audio alert playing logic, to check whether the new message is from a chat that is already opened - if so, the sound is not played.
100% translated source file: 'en.json' on 'eu'.
100% translated source file: 'en.json' on 'zh_TW'.
The thumbnail and text conversion implementations in bbb-web use the incorrect timeout unit (ms rather than s) when fetching the base timeout against the max presentation conversion one (which is seconds). This causes both of them to intermittently fail intermittently. Use the correct unit (s) for thumbnail creation and text file creation timeouts. Their configurations changed name: - thumbnailCreationExecTimeoutMs -> thumbnailCreationExecTimeout - textFileCreationExecTimeoutMs -> textFileCreationExecTimeout
…cTimeout, textFileCreationExecTimeoutInMs -> textFileCreationExecTimeout
100% translated source file: 'en.json' on 'et'.
Adds the info about layout when presenter changes something with push layout enabled (BroadcastLayoutEvtMsg):
<event timestamp="677408846" module="PARTICIPANT" eventname="LayoutBroadcastedEvent">
<focusedCamera>none</focusedCamera>
<presentationVideoRate>0.0</presentationVideoRate>
<cameraPosition>contentTop</cameraPosition>
<presentationIsOpen>false</presentationIsOpen>
<layout>CUSTOM_LAYOUT</layout>
<timestampUTC>1763562184363</timestampUTC>
<date>2025-11-19T11:23:04.363-03</date>
<isResizing>false</isResizing>
</event>
…resets Add support for multiple presets to 'video' recording format
…res-timeouts fix(bbb-web): thumbnail and text conversion fails due to timeouts
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
docs(plugins): Added documentation for sidekick area ui-commands
…4-antobinary-patch-7 Revert "conf: Hide nginx version in bigbluebutton.nginx"
…ures feat(plugin): private chat messages commands
…s_2935847a4e24479f947b810bd25cd703_it_IT Updates for project BigBlueButton v3.0 HTML5 client and language it_IT
…s_2935847a4e24479f947b810bd25cd703_ja Updates for project BigBlueButton v3.0 HTML5 client and language ja
…s_2935847a4e24479f947b810bd25cd703_eu Updates for project BigBlueButton v3.0 HTML5 client and language eu
…s_2935847a4e24479f947b810bd25cd703_zh_TW Updates for project BigBlueButton v3.0 HTML5 client and language zh_TW
…ta hook (bigbluebutton#24213) * feat(plugin): Add nameSortable in the UsersBasicInfo data hook * feat(plugin): Add bot in the UsersBasicInfo data hook * Fix typing * upgrade plugin sdk to 0.0.96 * upgrade plugin sdk to 0.0.96 on bbb-web * fix ts error --------- Co-authored-by: Ramón Souza <contato@ramonsouza.com>
chore: Added data-test to all extensible-area components
feat: added more fields to useMeeting hook and created a projection feature
…indow feat(plugin): added z-index to floating-window
Downgrade livekit-server to 1.9.9 (from v1.9.10) as the latest version is panicking.
…176a1634179b4da32c6886bf87c96b test: [Snyk] Fix for 1 vulnerabilities
100% translated source file: 'en.json' on 'tr'. Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
…igbluebutton#24434) * Translate en.json in ja 100% translated source file: 'en.json' on 'ja'. * Translate en.json in ja 100% translated source file: 'en.json' on 'ja'. --------- Co-authored-by: transifex-integration[bot] <43880903+transifex-integration[bot]@users.noreply.github.com>
chore(client): bump tldraw to 2.0.0-alpha.32
bbb-livekit's after-install script is explicitly setting up the override config file with logging.level: debug. This is not necessary.
v2.22.0 --- * feat(livekit): add histogram metrics for mute/unmute duration * fix(livekit): honor user-scoped conditional recording flags * chore: disable Kurento by default in base/example config file
…h-fix fix(html5): exclude worker.ts from ReactRefresh so hot reload can work
fix: Leave button opens empty dropdown
The current video recording format supports multiple layouts depending on the media shared in the recording, but the layout has to be selected before processing the recording and a single layout is used for the entire recording length. This causes problems with, for example, meetings that use deskshare and webcams, but do not use presentation. Either the webcams are fullscreen when deskshare isn't being used but the deskshare covers up the webcams, or the webcams are beside the deskshare but remain small and at the side of the recording. The new system uses the same layouts but instead of selecting the layout once before generating the video, it selects the layout separately for each individual cut of the video. This allows, for example, webcams to be fullscreen when deskshare isn't used, but when deskshare starts the webcams will become smaller and move to the side. As part of this work, to allow the presentation video to change size as the layout changes between cuts, the handling for video sources was refactored to be generic, allowing a new video source to be made for presentation video which generates presentation video on demand for each cut. This also speeds up recording processing and reduces disk space requirements by removing the separate step to generate the presentation video before rendering the recording.
With the new system for selecting the layout separately for each cut depending on which type of content is present, it is also possible to make the layout selection depend on other things relating to the current state of the meeting. The EDL and layout data structures are updated to support "conditions". When the EDL is generated, various conditions can be included which identify things about the state of the session at that time. Then, when selecting a layout, the layout is only used if the conditions specified in the layout match the conditions in the session. Two conditions are added initially: * `presentation_used`: Indicates whether any actions have been done on the presentation/whiteboard area. * `screenshare_as_content`: Indicates the current state of the presentation/screenshare swap feature. The video recording format's code is simplified since it no longer needs to detect whether the presentation area was used itself; it can rely on the conditions to handle this instead. The default configuration file has been updated with layouts which handle the two new conditions.
To make it easier to handle layout events, which usually deal with the "content" area rather than specifically presentation or screenshare, refactor the generator methods to create the EDL with layout-related conditions in a separate method.
44fb75e to
a461dcb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The current video recording format supports multiple layouts depending on the media shared in the recording, but the layout has to be selected before processing the recording and a single layout is used for the entire recording length.
This causes problems with, for example, meetings that use deskshare and webcams, but do not use presentation. Either the webcams are fullscreen when deskshare isn't being used but the deskshare covers up the webcams, or the webcams are beside the deskshare but remain small and at the side of the recording.
The new system uses the same layouts but instead of selecting the layout once before generating the video, it selects the layout separately for each individual cut of the video. This allows, for example, webcams to be fullscreen when deskshare isn't used, but when deskshare starts the webcams will become smaller and move to the side.
As part of this work, to allow the presentation video to change size as the layout changes between cuts, the handling for video sources was refactored to be generic, allowing a new video source to be made for presentation video which generates presentation video on demand for each cut. This also speeds up recording processing and reduces disk space
requirements by removing the separate step to generate the presentation video before rendering the recording.
This is created as a draft PR because it depends on bigbluebutton#23887 which is not yet merged (commits from that PR are included here, which makes this part of the changes difficult to review). Additionally, bigbluebutton/bbb-presentation-video#69 is required.