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

Add the Voice Broadcast option in the room functionalities #7127

Closed
19 of 21 tasks
giomfo opened this issue Sep 14, 2022 · 3 comments
Closed
19 of 21 tasks

Add the Voice Broadcast option in the room functionalities #7127

giomfo opened this issue Sep 14, 2022 · 3 comments
Assignees
Labels
T-Enhancement New features, changes in functionality, performance boosts, user-facing improvements

Comments

@giomfo
Copy link
Member

giomfo commented Sep 14, 2022

Your use case

What/Why would you like to do?

As a user I want to be able to send a voice broadcast to all users of a room, so that I can easily provide information by just talking. Compared to already existing voice messages it should be possible to listen to voice broadcast at the time they are being recorded. Think of this being a live-podcast over Matrix.

Some use-case scenarios for this feature can be to verbally provide updates, trainings, or talk to a large number of people.

How would you like to achieve it?

With the Voice Broadcast function, it should be possible to share longer audio messages in rooms with a short time delay.

  • Add a feature flag to implement this feature. This flag may be used later to enable it via the labs section.
  • Add in the room permission the voice broadcast option
  • Add in the build settings or config file:
    • a max voice broadcast length (240 minutes)
    • a voice broadcast chunk length (TBD)
  • Add “Voice broadcast“ to the room composer options
  • Make the “Voice broadcast“ option available only if the end user is allowed to use it
  • There can be a maximum of one simultaneous audio stream per room.
  • The sending client generates individual voice messages of x minutes (configurable via Build Setting), which are sent almost immediately.
  • In case of bad network connections, the sending client saves messages locally and automatically sends them when the connection is restored. In case of an interruption of the network during a voice broadcasting, the sending client pauses the broadcast until the connection is restored. The end user is then able to resume the VB or stop it.
  • When activating the recording, the user would have a PIP recorder widget (or a bubble widget) to control the record (stop/pause, audio input device selection…)
  • The sender gets a countdown of the remaining recording time is displayed.
  • Recording can be paused and resumed at any time. During the paused recording, the app can be exited or other functions in the app can be used. The recording can be continued afterwards.
  • During the recording, the other clients are using the same User profile still functional
  • On the receiver side you only see a widget in the timeline, which dynamically reloads incoming audio chunks and plays them without any user action without interruption (for the listener).
  • There are buttons for play, pause, +/- 30 seconds
  • There is a progress slider that can be used to "scroll".
  • The volume of the system is to be applied so that the user can also control it with the physical buttons
  • The paused position during playback must be preserved in the client, to continue playback at a later point in time, even after reopening the client.
  • The live stream must always be visible to the user as long as it is active.
  • There can be chat messages in the room of others parallel to this stream be sent.
  • A session that has already ended can also be listened to afterwards. People who didn't have time during the "live streaming".
  • On mobile devices, no automatic Screen lock can be activated

Have you considered any alternatives?

No response

Additional context

Related to element-hq/element-meta#632
Design hand off: https://www.figma.com/file/5zlCPsSOJELBzIiQdHC2LV/Voice-Broadcasting

I'm live broadcasting:
image

I'm listening to a live broadcast, and decide to rewind:
image

Are you willing to provide a PR?

Yes

@giomfo giomfo added the T-Enhancement New features, changes in functionality, performance boosts, user-facing improvements label Sep 14, 2022
@hoka99
Copy link

hoka99 commented Sep 15, 2022

Is this a similar feature to like the app "clubhouse" ? Can more than 1 person be on a broadcast at once? Maybe 3 -4 people are broadcasting to an entire room of people

Im not sure the best implementation but maybe you could utilize the opensource tool called JAM which feels like a very similar feature and provides an sdk or use it in a webview as a plugin / widget instead.

@giomfo
Copy link
Member Author

giomfo commented Sep 15, 2022

This feature is different from the video rooms which has been released as a beta feature in Element-web: element-hq/element-web#21962

Here only one person will be allowed to broadcast a live audio recording.
This issue is an intermediate solution to implement voice broadcasts. The final solution will be described in MSC3888

@giomfo
Copy link
Member Author

giomfo commented Apr 11, 2023

Done
Note:

  • We didn't add VB permission in the room permissions (This option is available in Element Web client)
  • the PIP widget has not been implemented

@giomfo giomfo closed this as completed Apr 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T-Enhancement New features, changes in functionality, performance boosts, user-facing improvements
Projects
None yet
Development

No branches or pull requests

3 participants