agora-inc / platform

Full code for mora.stream, the "Twitch.tv for academic researchers". The streaming platform served several thousands of concurrent viewers. This has now been acquired and absorbed by Cassyni.
https://cassyni.com/mora
4 stars 0 forks source link

(Doc) agora.io integration: core #301

Open RemyMess opened 3 years ago

RemyMess commented 3 years ago

A. Summary: We want agora administrators and speakers to be able to stream their seminars on agora.stream. Here, we will only implement the core functionalities.


B. Full vision? Here is an overview on how we envision the full thing on the long term. (Note: our first version is not going to have all of that! I wrote this section so that you know where we are going)

  1. How will it be for the agora administrator?

    • When creating an event, the admnistrator will be proposed 2 options: (1) using an external streaming tech (they will be asked to copy paste the videoconference URL of their event) (that is currently what we do) (2) host the streaming on agora.stream.
    • Before the seminar, the administrator will also have the option to generate a "speaker URL" than can be sent to the speaker; this speaker will not have to create an agora.stream account to be able to do his presentation.
    • During the seminar, the administrators will be able to do the following things: (1) speak and share their screen, (2) promote someone in the room to the rank of speaker (this person will have an augmented UI), (3) pass the mic to someone in the audience (this person will be able to speak + maybe video conference but thats it), (4) initiate/stop speaker introductions, initiate/stop seminar, initiate/stop q&a
    • The administrator will also be able to click on a button called "Thank the speaker" which will trigger the following event to all participant of the seminar: once triggered, they will have the option to press their space bar to generate a clap that will be broadcasted to the room. (only an administrator can trigger this).
  2. How will it be for the allowed participant?

    • The event page (e.g. agora.stream/event/432) will redirect the allowed user to agora.stream/stream/432). (Note: this is not very secure to keep the ID in the url like that, so we will want to encrypt that string into something else) Knowing whether a user is allowed or not depends on which privacy the organiser set (some talks are for "members only" while others are accessible by "everybody").
    • During the talk, the participant will be able to chat to people, ask/upvote/downvote/answer questions and press his space bar to clap.
    • "Request the mic" if they want to speak.
  3. How will it be for the speaker?

    • The speaker will join either using a speaker URL sent by an admin OR by requesting a promotion to the role of speaker when in the room (he will need to be logged in). Note: to start with, we focus on just having the speaker URL.

C. First version: Here are the core features we will have in version 1.

  1. How will it be for the agora administrator?

    • When creating an event, the admnistrator will be proposed 2 options: (1) using an external streaming tech (they will be asked to copy paste the videoconference URL of their event) (that is currently what we do) (2) host the streaming on agora.stream.
    • The administrator will be able to generate a URL for the speaker that they will share with them before the event starts.
    • During the seminar, the administrators will be able to do the following things: (1) speak with webcam, (2) pass the mic to someone who has a question, (3) start/stop the seminar
  2. How will it be for the allowed participant?

    • The event page (e.g. agora.stream/event/432) will redirect the allowed user to agora.stream/stream/432). Knowing whether a user is allowed or not depends on which privacy the organiser set (some talks are for "members only" while others are accessible by "everybody").
    • The participant will be able to chat in a general channel (no private messages)
  3. How will it be for the speaker?

    • The speaker will receive a URL from the adminsitrators before the seminar. Joining via this URL instantlty sets him as a speaker.
    • The speaker will have a button to share his screen, enable/disable his webcam and/or microphone.

      D. Todos to have version 1: Frontend:

    • Add option in event creation for the agora administrator to use agora.stream streaming tech (just an alternative to the field "streaming URL")
    • Make the view page for the speaker (abilities: button: screen sharing, camera on/off, mic on/off, chat)
    • Make the view page for the administrator (abilities: button give mic, remove mic, start the streaming, stop the streaming, chat)
    • Make the view page for the participant (abilities: ask for mic, chat)
    • Add button "copy paste speaker URL" for administrators (they will be able to press this button next to the "edit talk" in the admin view in the agora)
    • Grid handling for multiple parallel streams

Backend:

RemyMess commented 3 years ago

D. Todos to have for version 2.0.1 Basically, goal is to make streaming work + a couple things Frontend:

Backend:

RemyMess commented 3 years ago

D. Todos to have for version 2.0.2: Here is the minimal set of changes required for the streaming to be released.

Main changes:

Small bugs/hotfix: