bigbluebutton / greenlight

A really simple end-user interface for your BigBlueButton server.
GNU Lesser General Public License v3.0
787 stars 3.8k forks source link

[v3] Problems when adding another recording format #5789

Closed ghost closed 3 months ago

ghost commented 3 months ago

We are using bbb-recording-exporter (https://github.com/danielpetri1/bbb-recording-exporter) to create a second format for processed recordings. We are currently experiencing problems when deploying the script in our test environment. While this script is for BigBlueButton, the issues only appear for Greenlight v3. Greenlight v2 is working as expected. We migrate from GL 2.14.9 to GL 3.3.2, with the problems only appearing in 3.3.2. The issues below occur regardless of a running GLv2 instance. They only occur when there is a second (additional) recording format present.

To reproduce the effects of the script, copy the presentation.rb to /usr/local/bigbluebutton/core/scripts/post_publish and the interval_tree.rb (found under lib) to /usr/local/bigbluebutton/core/lib/recordandplayback on the BBB Server (file permissions may need adjustment).

First problem - Can't change visibility when default recording visibility is set to unpublished: If the default recording visibility is set to unpublished, the visibility of all new recordings is set to unpublished and can not be changed (error.problem_completing_action is displayed). When changing the default recording visibility to anything else, it is possible to change the visibility of new recordings. However, recordings created when the default was set to unpublished can still not be changed. Expected behavior: The individual recording visibility can be changed to a visibility permitted by the role settings, regardless of the default recording visibility.

Second problem - mp4 recording format is not shown: when mitigating the visibility switch-issue described above, only the "Presentation" recording format is displayed as an option to view to the recording. However, the mp4 is still there as it appears in the corresponding GLv2 room. Deleting the recording in GLv3 does not delete the mp4 file. Expected behavior: The recording can be viewed with a button "Video" next to "Presentation", just like it was possible in Greenlight v2. The displayed recording format should be an mp4 file.

farhatahmad commented 3 months ago

For the first issue, Greenlight should be doing a simple publishRecordings and an updateRecordings call. Can you confirm that those calls succeed if you're doing them through API Mate?

For the second issue, what's the name of the actual format in the recording? Greenlight supports the following names: presentation, video, podcast, statistics, notes, capture. Anything else probably won't show up

ghost commented 3 months ago

First issue: via API publishRecordings returns SUCCESS. updateRecordings throws a 500 error with the log reading: java.lang.NullPointerException: Cannot invoke "org.bigbluebutton.api.domain.RecordingMetadata.getMeta()" because "<local4>" is null However, this only happens in GLv3 when the default recording visibility is set to unpublished. (regarded as visibility "inaccessible" in GLv2; when not having the script and setting the visibility as unpublished GLv3, GLv2 sets the GLv3-recording as "unlisted") Removing the script from BBB fixes this issue, so by now I think this is more on BigBlueButton's side than Greenlight.

Second issue: When checking in GLv2 the format is listed as "video". The script's code also puts the output as video: https://github.com/danielpetri1/bbb-recording-exporter/blob/4d7f8a356b0aae345a34b4a231aa9c5ae07a2af5/presentation.rb#L211

Edit: Using BBB 2.7.4

farhatahmad commented 3 months ago

Did the recording already exist? Or was it a new recording? If it already existed, you'll have to resync the room's recordings to pull the new format (Through admin > server rooms)

ghost commented 3 months ago

I tested with new recordings. Resync of the room's recording did add the new format. I'm gonna try and see if I can figure out why it doesn't appear initially but with resync.

farhatahmad commented 3 months ago

Greenlight depends on the recording_ready callback to create the recordings in it's database. I would check the external library to see why it's not being included there.