jitsi / jitsi-meet-sdk-samples

Jitsi Meet mobile SDK examples (Android, iOS and React Native)
Apache License 2.0
278 stars 240 forks source link

Automatic recording on android #247

Open noobiewoobie opened 1 month ago

noobiewoobie commented 1 month ago

In my android app , I don't have any recording option enabled at all. But still the recording is being automatically. Moreover, I have not provided any option for users for recording the meeting. So it's really confusing why and how is it getting recorded ? The screen shows an icon for it and when clicked on it, it says " This meeting is being recorded."

https://github.com/user-attachments/assets/881327ab-b1c7-451f-a74d-3981437d9454

saghul commented 1 month ago

Did you start a recording on another endpoint in the meeting?

noobiewoobie commented 1 month ago

No not all. Nobody in the meeting started the recording. Like I said above, there is no ui available in the app for them to start recording.

saghul commented 1 month ago

Can you reproduce this consistently?

noobiewoobie commented 1 month ago

How do I reproduce it , if I have no control on it ? I mean if I had a button for recording or some piece of code which was leading to this then I would have been able to reproduce it. But sadly, that's not the case. But one thing I noticed that this happens only in those meetings in which the number of participants is higher than 50.

saghul commented 1 month ago

I mean do you get the indicator every time you join a meeting?

noobiewoobie commented 1 month ago

No , not everytime. But since yesterday this has been happenings for meetings with over 50 participants. If participats are below 50 , this doesn't happen. I don't know how these things are related.

saghul commented 1 month ago

Is there a chance a participant running Chrome (or any chromium derivative) used local recordings?

They don't require any service as the recording is done locally and we broadcast that information so all participants know it's happening.

noobiewoobie commented 1 month ago

No nobody is running chrome. Also by chromium device if you mean chromebook , then yes there are chromebook users. But , in chromebook also the are using my app and not jitsi meet app . So this means that if any user uses my app on chromebook then it will auto record the meeting ? Also how can I disable it if that's the case ?

saghul commented 1 month ago

There is no auto-recording unless you enabled a 3rd party server plugin to do so.

What is possible in Chrome is to do a local recording, even without a backend. That would explain the notification.

Can you get some logs?

noobiewoobie commented 1 month ago

Here is the full scenario. The meetings are conducted through my app. The meeting name is generated randomly for each meeting shared through my app server for others to join and it is not even shown to users. Moreover, I don't even have lobby mode enabled so they cannot even get the meeting name from there to be able to join via chrome or jitsi meet app. So as far as joining the meeting from outside the app is concerned, it's not happening. Now, during test runs I have never faced this issue. But in release build the users are experiencing this issue. Got multiple users complaining about this. So, getting logs is going to be hard provided it's happening in release build. But I will try my best to provide it. Also , if I set the following to false will it work ? /**

saghul commented 1 month ago

That is really odd.

Any chance transcriptions are enabled?

noobiewoobie commented 1 month ago

No transcriptions are not enabled. Anyways I will release an update with recording.enabled set to false, and test it. Also, trying to figure out a way for getting logs.

saghul commented 1 month ago

I took a look at the code and I don't see how that label could be rendered without a recording being active.

Without any logs, alas, there is no much more I can look into.

noobiewoobie commented 1 month ago

I know it's really confusing issue. I have released a version in which I am setting recording.enabled flag to false. And also I have set logs to be recorded on my server. So if the issue happens I will share the log.

saghul commented 1 month ago

Excellent!

noobiewoobie commented 1 month ago

Turns out JettMeetView has a button named "Start recording". Which is appearing for some users only. Where is this in the UI and how can I remove it ? It is shown inside the toolbox. I checked Jitsi Meet app also , there is no such button in that also.

IMG-20240821-WA0003

saghul commented 1 month ago

Is that a modified SDK? Our menu is much larger.

noobiewoobie commented 1 month ago

No it's not modified sdk , but reduced menu by setting the flags. Anyways, I didn't see any flag for Start recording so how is this appearing only for some users. Moreover it should be Show Whiteboard and not Start Recording. Because in my app I couldn't find any flags for hiding whiteboard button also, so I had to leave it. So in the toolbox , 3 buttons are available for users namely:- Low Bandwidth Mode , Raise Your Hand and Show Whiteboard. But strangely for some users Show Whiteboard is getting replaced by Start Recording button. So is there any way of removing this from the toolbox or make it appear for everyone ?

saghul commented 1 month ago

Can you share how you are initializing the conference options?

noobiewoobie commented 1 month ago

JitsiMeetConferenceOptions.Builder() .setRoom(channelName) .setAudioMuted(true) .setVideoMuted(true) .setAudioOnly(false) .setUserInfo(JitsiMeetUserInfo(mBundle)) .setFeatureFlag("raise-hand.enabled", false) .build()

saghul commented 1 month ago

You said you hide more things, there are a ton of flags missing here.

noobiewoobie commented 1 month ago

val defaultOptions = JitsiMeetConferenceOptions.Builder() .setServerURL(serverURL) .setRoom(channelName) .setAudioMuted(true) .setVideoMuted(true) .setAudioOnly(false) .setUserInfo(JitsiMeetUserInfo(mBundle)) .setConfigOverride("reqiureInviteOthers", false) .setConfigOverride("disableModeratorIndicator", true) .setConfigOverride("requireDisplayName", true) .setFeatureFlag("raise-hand.enabled", false) .setFeatureFlag("prejoinpage.enabled", false) .setFeatureFlag("pip.enabled", true) // Enable PiP mode .setFeatureFlag("invite.enabled", false) .setFeatureFlag("invite-dial-in.enabled", false) .setFeatureFlag("meeting-name.enabled", false) .setFeatureFlag("add-people.enabled", false) .setFeatureFlag("live-streaming.enabled", false) .setFeatureFlag("reactions.enabled", false) .setFeatureFlag("recording.enabled", false) .setFeatureFlag("video-share.enabled", false) .setFeatureFlag("android.screensharing.enabled", false) .setFeatureFlag("car-mode.enabled", false) .setFeatureFlag("breakout-rooms.enabled", false) .setFeatureFlag("call-integration.enabled", false) .setFeatureFlag("calendar.enabled", false) .setFeatureFlag("help.enabled", false) .setFeatureFlag("notifications.enabled", false) .setFeatureFlag("security-options.enabled", false) .setFeatureFlag("tile-view.enabled", false) .setFeatureFlag("lobby-mode.enabled", false) .build()

saghul commented 1 month ago

.setRoom(channelName)

Not that it would cause the label to show, but this is not a good idea and IIRC it should throw an exception. Don't specify the room in the defult options but in the options passed to launch(), they get merged internally.

noobiewoobie commented 1 month ago

okay, so how is this related to the recordings option ?

saghul commented 1 month ago

It isn't, I was just pointing out a potential problem. Are you calling JitsiMeet.setDefaultOptions with that?

noobiewoobie commented 1 month ago

No no , in default options I am just setting the url and these all flags are being set while joining. I guess I mixed both of them here while commenting.

saghul commented 1 month ago

Ah, good, no worries.