Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

⏺️ Call recording 🙇 Virtual participant #8327

Closed
10 of 11 tasks
nickvergessen opened this issue Nov 9, 2022 · 0 comments
Closed
10 of 11 tasks

⏺️ Call recording 🙇 Virtual participant #8327

nickvergessen opened this issue Nov 9, 2022 · 0 comments
Assignees
Labels
1. to develop enhancement feature: call 📹 Voice and video calls feature: meetings 📅 Covering the webinary usecase incl. Lobby feature: signaling 📶 Internal and external signaling backends feature: WebRTC 🚡 WebRTC connection between browsers and/or mobile clients high

Comments

@nickvergessen
Copy link
Member

nickvergessen commented Nov 9, 2022

See meta issue in #8324

Eta ?

  • Recording will be done with a virtual participant
    • Recording will be only speaker view for v1
    • First shared screenshare will be recorded if there is any
  • Decide architecture - Clients send recording requests to Nextcloud server which, in turn, sends requests to start or stop the recording to a recording server. The recording server launches a browser, connects as an internal client in the signaling server, and then joins the call. The browser UI is recorded and uploaded to the Nextcloud server when stopped.
  • Record all necessary data during the call - Not needed (or, rather, not needed as something additional), as the browser UI already shows the current speaker
  • Post processing - Not needed, the recorded browser UI is the final recording
  • Upload to the API endpoint of the server API

Eta ?

  • Recording Talk UI - Add specific UI for recording calls #8725
    • Custom UI to be used by the recorder
    • Entrypoint publicly accessible, but then the credentials of the recording server are needed to do something useful
    • Only CallView, no header, no navigation, no chat
    • Show message (and just wait) if there is no on-going call - Not really needed, as the Nextcloud server prevents starting the recording until there is a call, but as it uses the regular calling code it is done for free
      • Automatically join the call based on the received signaling messages
      • Show "Not started" if there is no call when the recorder joined and "Already ended" if the call ends while the recorder is in the call? - No, just the regular Waiting for other participants to join
    • Call sounds disabled
    • As it will use the same call code as the main UI the video of not visible users should be automatically blocked
    • If needed it might be possible to (remotely) control it (up to some point) by dispatching events to the store (for example, to switch between grid or speaker), but probably something for a future version - Recording UI customization #8768
    • In the future all the call related code could be published as a library so recording clients could use it to develop their own UI and the endpoint is no longer needed even for the "official" recorder. But... future :-)

Eta ?

  • Recording client - Add recording server #8708 (and follow ups)
    • Launches a browser using WebDriver and records the screen
    • Browser joins the call using the Recording Talk UI
    • WebDriver part similar to Talkbuchet.py or Talked
    • Recording part similar to Talked or Selenium 4.0 Docker containers

Eta ?

  • Recording server - Add recording server #8708 (and follow ups)
    • Spawns a recording client for each recording
    • Receives requests from the Nextcloud server or from the signaling server (clients could send them using control signaling messages)? - Only from the Nextcloud server
    • Talk clients should know if a recording server is available to enable the buttons to record or not - "isRecordingEnabled()" should check that a recording server is configured #8762
    • Make possible to notify the Nextcloud server / Talk clients that no more recordings are allowed if the load is too high? New recording should not break existing recordings, although this would be the same as reaching the hardware limits in the HPB (that is, everything breaks and that is it 🤷)
    • In the future it should support clustering; check how it is implemented in the signaling server to keep it in mind when designing it, as the clustering may not be ready in the first version, but the design should not prevent adding it later - Add clustering support for the recording server nextcloud-talk-recording#3
    • Package in .deb, OCI (Docker, Podman...) container, Flatpack/Appimage?

Eta ?

@nickvergessen nickvergessen added 1. to develop enhancement feature: WebRTC 🚡 WebRTC connection between browsers and/or mobile clients feature: signaling 📶 Internal and external signaling backends feature: meetings 📅 Covering the webinary usecase incl. Lobby feature: call 📹 Voice and video calls labels Nov 9, 2022
@nickvergessen nickvergessen added this to the 💟 Next Major (26) milestone Nov 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1. to develop enhancement feature: call 📹 Voice and video calls feature: meetings 📅 Covering the webinary usecase incl. Lobby feature: signaling 📶 Internal and external signaling backends feature: WebRTC 🚡 WebRTC connection between browsers and/or mobile clients high
Projects
Archived in project
Development

No branches or pull requests

2 participants