Questions regarding the new LocalRecording feature

I finally had a chance to play with the new Local Recording feature, and it is looking very promising indeed. Many thanks to all involved in making that happen! :bowing_man: :beers:

A couple of initial questions/issues based on my tinkering:

  1. Is it possible to enable local recording without the other recording services?
    • When fileRecordingsEnabled is false then the recording option does not show up at all.
    • I have deployments that has no Jibri support, and would be nice to still allow users to do local recording.
  2. Where does the recording go if the user leaves the room or closes the tab without first stopping recording?
    • I suppose there’s not much we can do if user closes the tab/window, but it would be nice not to lose the recording if we accidentally leave without stopping the recording.

Thanks.

That should be the case. @robertpin PTAL.

Good point. The browser doesn’t allow us to do anything really, we’d need to have a beforeunload handler for the whole conference, which I’m not sure we want…

If it helps, I’m testing on latest stable (2.0.7439-1) and observed that:

  • “Start recording” option not visible if enableLocalRecording: true and fileRecordingsEnabled: false
  • Option shows up once I set fileRecordingsEnabled: true, albeit with the unwanted option.

:see_no_evil: sounds like messy business.

In a pinch, I’d settle for the “Leave Meeting” button being replaced by a “Stop Recording” while local recording is in progress, but I’m aware that’s more a cheap workaround than a proper solution.

This also brushes on another very minor usability issue – up until I discovered that the “Stop sharing” button provided by the browser also stops recording, all my recordings end with a view of me hunting for the “Stop recording” option in menu, with the final frame always the confirmation modal.

  • Perhaps a more prominent button to stop recording, or to auto stop on leave, could help with a more natural stop to recordings
  • Do we need the confirmation modal? It is inconsistent with stopping using the the “Stop Sharing” browser action, which will terminate the recording without confirmation.
1 Like

Thanks for feedback, let me check with the rest of the team and get back to you.

Fix for 1. was just merged in master

1 Like

Finally had a chance to retest this in unstable (7551).

Fix for #1 works flawlessly. Thanks @robertpin !

For #2, the notification we now get which reminds users to stop recording before leaving helps a little, but I have a bad feeling that is insufficient and users are still going to forget after a long meeting.

I’m wondering, with the new UX for end meeting (WIP: feat(toolbox): add end conference by wfleischer · Pull Request #10838 · jitsi/jitsi-meet · GitHub) potentially landing soon, would this make it easier to change/add a button there in the case where local recording still running?

The only alternative I can think is a lot messier – have users only use via IFrame, use toolbarButtonClicked event and window beforeunload events to intercept meeting leave and tab close intent, then somehow check if local recording is running and handle accordingly.

Is either approach viable? Happy to attempt a PR with some guidance if it is not too complicated :saluting_face:

Honestly, I don’t like either solution very much :-/

We are still experimenting with this feature, it hasn’t even been “properly” launched, so I’d wait a bit until we see the need for it.

Understood. Thanks :slight_smile:

Any chance we could get LocalRecordingManager.isRecordingLocally() (or something to that effect) exposed to ExternalAPI? Or any other way to programmatically infer using IFrame API will do. I initially assumed we could infer local recording state from recordingStatusChanged event, but that does not appear to be the case.

P.S. I understand it is too soon to design a solution for the quit-without-stop-recording case, but I am compelled to explore short-term options in case a sudden need arise. Intercepting hangup from outside IFrame seems like the easiest to achieve and maintain.

OK, I managed to infer local recording state based on local.localRecording from features/base/participants state (via api.getIFrame()). This “works”, alas accessing state that way is of course brittle and could break at any time.

But at least I have a proof of concept working. Hopefully I don’t need it, but I sleep better at night knowing it is there :slight_smile:

For the record, this was what I did:

  1. Set buttonsWithNotifyClick: ['hangup'] in config.js so leave button does not actually leave but only triggers event.
    • Caveat: this breaks UX if someone goes direct to page and not via IFrame.
  2. Using IFrame API, listen to toolbarButtonClicked event.
    • if key is “hangup” and local recording running, alert user that recording must be stopped first.
    • otherwise, call executeCommand('hangup') to actually leave.

We should fix this @robertpin

Yep, and this is already possible :slight_smile:

I’ll add it to my list

I’ve just tested latest unstable and recordingStatusChanged events now include local recording.

Thank you @robertpin :bowing_man:

2 Likes

So with local recording state now inferable from recordingStatusChanged, it is now pretty straight-forward to intercept hangup and warn users if recording is still active.

The only missing piece here is a nice way to display warnings to users within the context of the app. I’ve implement this by manually building the SHOW_NOTIFICATION action payload and dispatching via APP.store.dispatch but this could get brittle over time.

Would you consider a PR to add either api.showNotification(...) or api.executeCommand("showNotification", ...) to IFrame API?

There is a setting to notify users, doesn’t that work?

Perhaps I missed that.

I’m looking to intercept and warn users when they attempt to leave the conference while recording is still active.

I do see the sticky notification at the start of the recording, but users are bound to forget after a long meeting and will inadvertently click Leave before stopping, then complain later when they cannot recover the recording :pensive:

Ah wait I misunderstood. For now you can use the hangup button override you already mentioned.

I think adding an API for in-meeting notifications would be acceptable.

yup. Already doing the hangup button override method. Just missing the notification bit. When done, I’ll post a sample in the forum so other users with similar concerns could use/adapt.

Cool. I’ll give it a shot and raise a PR.

1 Like

PR raised:

1 Like

Thanks! I’m a bit busy this week, I’ll try to get to it soon!