Skip to main content
Version: 2.x.x

Concept and Architecture - React Native

VideoSDK provides the APIs to build audio and video apps. It typically includes features such as video and audio calls, chat, cloud recording, simulcasting (RTMP), interactive live streaming (HLS).

Concepts​

img.png

1. Room​

  • Room object in the VideoSDK provides a virtual place for participants to interact and engage in real-time voice, video, and screen-sharing sessions.

  • Room can be uniquely identified by roomId.

2. Participant​

  • Participant is a VideoSDK object that represents each user/client in the room and allows them to share audio/video assets.

  • 2.1 Local Participant : The local participant is the one that runs on the user's device. The local participant has control over their own media streams, including the ability to start and stop audio and video.

    • The local participant in a room can also connect with other participants by transmitting and receiving audio and video streams, exchanging chat messages, and more.
  • 2.2 Remote Participant : The remote participant receives audio and video streams from both the local participant and other remote participants. Additionally, they have the ability to exchange audio, video, and chat messages with the local participant.

  • Each participant in VideoSDK can be uniquely identified by participantId.

3. RTCStream & Track​

  • An RTCStream is one kind of media a participant publishes: audio, video, share or shareAudio. useParticipant returns them as webcamStream, micStream, screenShareStream and screenShareAudioStream.

  • A track is a continuous flow of audio or video data. Each RTCStream holds one track in its track property.

  • To render a video stream, wrap its track in the SDK's MediaStream and pass new MediaStream([stream.track]).toURL() to RTCView. The SDK plays remote audio for you.

4. Events / Notifications​

  • Events / Notifications can be used to inform users about various activities happening in a Room, including participant join/leave and new messages. They can also be used to alert users about any SDK-level errors that occur during a call.

5. Session​

  • A Session is the instance of an ongoing room which has one or more participants in it. A single room can have multiple sessions.
  • Each session can be uniquely identified by sessionId.

img.png


img.png

6. Cloud Recording​

  • Cloud recording in VideoSDK refers to the process of recording audio or video content and storing it on a remote server or VideoSDK server.

7. Simulcasting (RTMP)​

  • RTMP is a popular protocol for live streaming video content from the VideoSDK to platforms such as YouTube, Twitch, Facebook, and others.
  • Provide the platform-specific stream key and stream URL to stream to that platform.

8. Interactive Live Streaming (ILS)​

  • Interactive Live Streaming (ILS) is a low-latency live streaming experience where viewers can actively engage with the host and participate in the live stream in real time.

  • In an interactive live stream (ILS), participants join a room with different modes (SEND_AND_RECV for hosts, RECV_ONLY for the audience). Hosts can publish audio/video and promote or demote audience members during the stream, allowing viewers to participate in activities such as live polling, Q&A sessions, and sending virtual gifts.

9. HTTP Live Streaming (HLS)​

  • HTTP Live Streaming (HLS) is a live streaming protocol that delivers video over HTTP using .m3u8 playlists and media segments, making it suitable for distributing live content to large audiences.

  • In an HTTP live stream (HLS), hosts can publish audio/video, while viewers can participate in activities such as live polling, Q&A sessions, and sending virtual gifts.

Architecture​

This diagram shows the flow for audio and video calls, recording, and live streaming to social media platforms.

Video-sdk-architecture!

Got a Question? Ask us on discord