jitsi / jitsi-meet-sdk-samples

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

Automatic recording on android #247

Open noobiewoobie opened 3 months ago

noobiewoobie commented 3 months 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 3 months ago

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

noobiewoobie commented 3 months 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 3 months ago

Can you reproduce this consistently?

noobiewoobie commented 3 months 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 3 months ago

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

noobiewoobie commented 3 months 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 3 months 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 3 months 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 3 months 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 3 months 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 3 months ago

That is really odd.

Any chance transcriptions are enabled?

noobiewoobie commented 3 months 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 3 months 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 3 months 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 3 months ago

Excellent!

noobiewoobie commented 3 months 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 3 months ago

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

noobiewoobie commented 3 months 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 3 months ago

Can you share how you are initializing the conference options?

noobiewoobie commented 3 months ago

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

saghul commented 3 months ago

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

noobiewoobie commented 3 months 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 2 months 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 2 months ago

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

saghul commented 2 months ago

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

noobiewoobie commented 2 months 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 2 months ago

Ah, good, no worries.