Jitsi Local recording not working

When I run startRecord command it shows this error in console log
[modules/API/API.js] <start-recording>: Failed starting recording: local recording is either disabled or not supported

I’m using startRecord command to record locally like this documentation. → Commands | Jitsi Meet.

this.meetAPI.executeCommand("startRecording", {
        mode: `local`, //recording mode, either `local`, `file` or `stream`.
        // dropboxToken: string, //dropbox oauth2 token.
        onlySelf: true, 
        shouldShare: false,
        // rtmpStreamKey: string, //the RTMP stream key.
        // rtmpBroadcastID: string, //the RTMP broadcast ID.
        // youtubeStreamKey: string, //the youtube stream key.
        // youtubeBroadcastID: string //the youtube broacast ID.
      });

I enabled recording services in /etc/jitsi/meet/mydomain-config.js like this.

recordingService: {
         enabled: true,
         sharingEnabled: true,
         hideStorageWarning: false,
     },

    // DEPRECATED. Use recordingService.enabled instead.
    // fileRecordingsServiceEnabled: true,

    // DEPRECATED. Use recordingService.sharingEnabled instead.
    // fileRecordingsServiceSharingEnabled: false,

    // Local recording configuration.
     localRecording: {
         disable: false,
         notifyAllParticipants: false,
         disableSelfRecording: true,
     },

In toolbar there is a recording button and when I click it, shows like this. There is no any save to local option.
image

Furthermore, I have installed latest jitsi version. Highly appreciate your guidance guys.

What browser are you using?

1 Like

I’m using firefox browser

Hi @saghul sorry to bother you. I checked the meeting in Chrome browser. And it shows local recording and worked perfectly. Do you have any idea why it not works in firefox browser?
Thanks again for your valuable time.
image

Firefox does not support local recordings.

2 Likes

Hi everybody, the ‘Start Recording’ option is not working after the latest jitsi-meet update [2.0.8218]. I tested on our private server as well as Jitsi’s public server. Tested using Google Chrome browser (and Opera). The recording starts but the file is not saving locally like it did before. Anyone experiencing similar issue?

@saghul @Freddie

1 Like

I’ve just tested this on on https://meet.jit.si and local recording appears to be working as expected.

I’ve also tested on my private server running latest Jitsi version (8252, not 8218) and that works too.

:man_shrugging:

Can you please share your browser console logs?

1 Like

Ok @saghul Here’s the browser logs from
sidespeak.herokuapp.com-1675201754531.log (11.2 KB)
using Google Chrome. Any suggestions?

Yup the local recording is working on https://meet.jit.si. Do you know if updating to latest jitsi version 8252 will help for our private server? Thanks!

Maybe? Seems to work for me.

1 Like

Actually no, I just updated our VPS to the latest v8525 (jitsi-meet), rebuilt the server but the local recording feature is still not working (using Chrome & Opera, latest versions). It did work before v8218. I also noticed in the config.js file there is a localRecording option but it did not help apart from enabling the lady’s voiceover saying “Recording is on.” The recording starts but still the file does not save locally. Logs attached. If anyone has any ideas or pointers would be greatly appreciated.
localhost-1675275516749.log (18.5 KB)
@saghul @shawn

hum, I just tested it on your deployment and it works for me.

1 Like

After a bit of trial end error, I finally managed to repro the issue. This issue occurs only if the user has denied the browser permission to the Microphone.

Here are the steps to repro:

  1. Join a meeting using incognito mode

  2. Deny permissions for camera and microphone

    • (the bug can be replicated even if you give browser access to camera but not microphone)
  3. Start local recording

    • The following error is seen in console logs:
    olm.js:11 2023-02-01T20:21:28.738Z [features/base/tracks] Failed to create local tracks ['audio'] 
    Gt {gum: {…}, name: 'gum.permission_denied', message: 'User denied permission to use
    device(s): audio', stack: 'Error\n    at new Gt (https://meet.domain.com/libs/lib-jitsi-meet.min.js? 
    v=6943:2:588990'}
    i @ olm.js:11
    (anonymous) @ functions.web.ts:140
    Promise.catch (async)
    (anonymous) @ functions.web.ts:140
    Promise.then (async)
    jP @ functions.web.ts:106
    muteAudio @ conference.js:1064
    (anonymous) @ LocalRecordingManager.web.ts:190
    (anonymous) @ LocalRecordingManager.web.ts:7
    w0 @ LocalRecordingManager.web.ts:3
    startLocalRecording @ LocalRecordingManager.web.ts:145
    
  4. Stop local recording

    • Expected behaviour: recording offered for download
    • Actual behaviour: no downloads, and the following error is output to console
    Logger.js:154 2023-02-01T19:46:37.391Z [JitsiMeetJS.ts] <Object.getGlobalOnErrorHandler>:  
    UnhandledError: Cannot read properties of undefined (reading 'dataEnd') Script: null Line: null 
    Column: null StackTrace:  TypeError: Cannot read properties of undefined (reading 'dataEnd')
        at t.makeMetadataSeekable (https://meet.domain.com/libs/app.bundle.min.js?v=6943:178:3210740)
        at https://meet.domain.com/libs/app.bundle.min.js?v=6943:178:3216107
       at https://meet.domain.com/libs/app.bundle.min.js?v=6943:178:3215414
        at Object.next (https://meet.domain.com/libs/app.bundle.min.js?v=6943:178:3215519)
        at o (https://meet.domain.com/libs/app.bundle.min.js?v=6943:178:3214233)
    

That traceback points to an error in the webm-duration-fix package: webm-duration-fix/tools.ts at 87a71bf304c8cb4fbf19248ed5663e6aff9524ac · buynao/webm-duration-fix · GitHub, although this could just be a side-effect of the bug and not the cause.

I can repro the issue on v8044 too so this is not a new issue.

2 Likes

Good one! Can you please open an issue on GH?

1 Like

Solved it with my team. Our issue was a bit different; the “allow-downloads” permission was missing from the sandbox attribute of the meeting iFrame. Because we use our deployment via our heroku url (SideSpeak Meet). However I do see you guys just fixed it here: fix(local-recording) after IFrame sandboxing · jitsi/jitsi-meet@cced416 · GitHub

Thanks to everyone for your feedback!

1 Like

Noticed another problem in the CDN version of external_api.js file. The ‘allow-downloads’ fix was not pushed (like on the repo^^). Here’s the link, you see the iFrame sandbox is missing the ‘allow-downloads’ permission: https://meet.jit.si/external_api.js

@damencho @saghul @shawn

Where are you sourcing external_api.js from? Indeed, we haven’t deployed the update to production yet.

1 Like