How to Create a Live Video Chat APP
Tags: videocall, sdk, api, webrtc
Published: 2024-04-19 10:18:17


It is widespread to see people speak with their family members or friends through a live video chat rather than an ordinary phone call. Wondering how to create a live video chat app? In this article, we will demonstrate how to build free live video chat applications in the following section by using [ZEGOCLOUD live video call SDK](https://www.zegocloud.com/product/video-call).

## Live Video Chat Scenarios

### 1. Social Networking

It is a vast scope. It includes social apps, online dating, video chat rooms, etc. These apps allow users to make cyber-friends or find a partner for an intimate partner on the internet. Usually, they prefer full features for real-time interactions, including instant messaging, voice, video, etc.

### 2. Video Conferencing 

It is a very standard scenario for professional or office communication. Colleagues can communicate or collaborate in real-time through all means, including text messaging, voice, video chat, whiteboard, screen sharing, document sharing, etc. It is made for business scenarios. Thus, its style is more professional, neat, and clean.

### 3. Online Education 

It is quite like a video conference but differs in a few ways. It may include certain features designed for educational purposes. For example, it offers an intelligent quality to detect the status of students and find out who is sleepy or daydreaming. Moreover, there are various class modes, including small and large classes. A large class will transform into live streaming, and a live video chat offers real-time interaction between the teacher and students.

### 4. Live Video streaming

It is designed for entertainment or training purposes. For example, in a streaming program, the host may invite guests to speak and perform together live. During the live video chat session, the host and the guests can interact in a live video chat with background music. The audience can watch the live streaming and send text messages or even virtual gifts to interact.

## Must-have Features of Free Live Video Chat App

Although many video chat app exists, they still have some overlapping features.

The following is a list of features that any live video chat app has to have:

### 1. Registration

Most live video chat programs come equipped with user management and registration dashboards. Because of this, they can quickly and efficiently supply the user on the network with a means of identity.

### 2. Conversations in groups

Group calls allow more than two people to engage with one another and appealingly share information.

### 3. Sharing of screens

Screen sharing is a powerful feature of live video chat that enables users to easily share information displayed on their screen.

### 4. Encryption

This security feature makes it impossible for anyone other than those linked to view the information or data being exchanged.

### 5. The use of text messages

 It may be helpful in situations where participants in a chat cannot hear each other, wish to transmit more information, or just cannot speak.

### 6. A recording of the meeting

Recording a video chat can be an excellent method for producing moments that can later be used for reference or further distribution.

### 7. Notifications through push technology

This video chat feature ensures that users don't miss important moments, thanks to the push notifications function included in video chat apps. They notify users of new messages in the chat and missed calls and keep them informed about any new upgrades that have been released.

### 8. A list of contacts

This operates in the same way as the standard contact on your phone. It maintains a record of the persons with whom you chat.

## How to Make Real-Time Live Video Chats with ZEGOCLOUD

All this time, we have been talking, and now it is finally time to start developing our free video chat app. To put together our free video chat application, as I mentioned before, we will use the live Video Call SDK & API provided by [ZEGOCLOUD](https://www.zegocloud.com/).


The Video Call SDK is a robust real-time video and audio component that comes packed with a wide variety of features. It makes it easier for you to swiftly build video call capabilities that are dependable, efficient, and engaging in mobile, desktop, and web apps.

This SDK has a wide range of potential applications, some of which include one-on-one and group video conversations, online education, live video streaming for entertainment, and others.

The different use cases have already been discussed. Let's get the ball rolling by beginning the app creation process.

### Why You Should Use the ZEGOCLOUD Live Video Chats SDK

To keep this post manageable, we will focus on some of the most impressive capabilities of the live video call API. The following are the characteristics:

**1. Facilitates real-time video communications.**

You may quickly and easily create a free live video chat application with the help of ZEGOCLOUD's live video chat SDK. This app can then be used to enable real-time video communications. It doesn't matter where your friends and family are located. As long as you're using the same app, you'll always be able to stay in touch with each other. That's quite cool, isn't it? That is merely one of the fundamental capabilities of our SDK.

**2. Maintain your connection no matter where you are in the world**

It can be incredibly annoying when you cannot enter a building or facility due to your country or location. The encouraging news is that ZEGOCLOUD serves more than 200 different countries. Therefore, you don't need to be concerned about anything because ZECOCLOUD has covered you.

**3. Video and audio improvement**

Your media's video and audio quality can be improved using ZEGOCLOUD's professional enhancement services. You can, for instance, modify your voice or even alter your voice entirely if it is the only thing that interests you. Additionally, it comes with advanced AI face beautifying tools that may be utilized to improve the overall appearance of the user's face.

**4. Management of the network that is optimized**

The network administration support offered by ZEGOCLOUD is of the highest caliber right out of the box. It makes use of optimized algorithms to predict the amount of network bandwidth that is available based on the data that is currently available regarding the quality of the network, and it dynamically adjusts stream publishing and playback to control the amount of network traffic to corresponding with the conditions of the network.

### Preparation

A ZEGOCLOUD developer account on – – [Sign up](https://console.zegocloud.com/account/signup)

VS Code, or an alternative IDE or text editor

a computer with the ability to play music and video.

Understanding of the fundamentals of web development

### Live Video Chat SDK Integration

Follow these steps to add and use live video chat Kit SDK to build live video chats:

Create a new project.

Create index.html and index.js files for your project.

Please use the structure below folder structure.

```
├── index.html
├── index.js
```

2. Insert these codes to index.html:

```
<html>
<head>
    <meta charset="UTF-8">
    <title>Zego Express Video Call</title>
    <style type="text/css">
        * {
            font-family: sans-serif;
        }
        h1,
        h4 {
            text-align: center;
        }
        #local-video, #remote-video {
            width: 400px;
            height: 300px;
            border: 1px solid #dfdfdf;
        }
        #local-video {
            position: relative;
            margin: 0 auto;
            display: block;
        }
        #remote-video {
            display: flex;
            margin: auto;
            position: relative !important;
        }
    </style>
</head>
<body>
    <h1>
        Zego RTC Video Call
    </h1>
    <h4>Local video</h4>
    <div id="local-video"></div>
    <h4>Remote video</h4>
    <div id="remote-video"></div>
    <script src="index.js"></script>
</body>
</html>
```



3. Test your app on a local Web server.

You can use a life server to launch the development environment on the web browser in real time.

Run the code below to install life-server:

```
npm i live-server -g
```
Import the SDK

Project completed! Let’s include the SDK. Here’s how:

Execute “npm I zego-express-engine-webrtc” to install dependencies.

Import Video call SDK into index.js.

```
import {ZegoExpressEngine} from 'zego-express-engine-webrtc'
```

Implement a Basic Voice Call

The SDK has been added to our project. We can now continue implementing the live video chat feature using ZEGOCLOUD.

The illustration below shows User A playing a stream from User B:

Use ZEGOCCLOUD’s video call SDK to make free live video chat for free in the following steps:

Initialize ZegoExpressEngine

It is necessary to initialize the ZegoExpressEngine SDK before A and B can publish and play streams. After successfully generating a ZegoExpressEngine object, you must provide the Server URL and your AppID. The ZEGOCLOUD Admin Console is where the credentials can be located.

```
// Initialize ZegoExpressEngine
const zg = new ZegoExpressEngine(appID, server);
```

Check if the Browser is Compatible with WebRTC.

The Video Call SDK is compatible with a wide variety of today’s browsers. To determine whether or not yours is supported, please run the following codes:

```
const result = await zg.checkSystemRequirements();
// The [result] indicates whether it is compatible. It indicates WebRTC is supported when the [webRTC] is [true]. For more results, see the API documents.
console.log(result);
```
Log in to a room

We have finished making a new instance of ZegoExpressEngine. Now you can go log into a room. Calling the loginRoom method will let you do this.

```
// Log in to a room. It returns `true` if the login is successful.
// The roomUserUpdate callback is disabled by default. To receive this callback, you must set the `userUpdate` property to `true` when logging in to a room. 
const result = await zg.loginRoom(roomID, token, {userID, userName}, {userUpdate: true});
```
When you use the loginRoomFunction, a new room with the ID you provide will be created if it does not already exist, and you will be logged in immediately.

Callbacks provide access to the current room status. Implement the following callbacks with the code below:

roomStateUpdate displays the connection status of the current user.

```
// Callback for updates on the current user's room connection status.
zg.on('roomStateUpdate', (roomID,state,errorCode,extendedData) => {
    if (state == 'DISCONNECTED') {
        // Disconnected from the room
    }
    if (state == 'CONNECTING') {
        // Connecting to the room
    }
    if (state == 'CONNECTED') {
        // Connected to the room
    }
})
```
roomUserUpdate is a callback function that receives user status updates.

```
// Callback for updates on the status of the users in the room.
zg.on('roomUserUpdate', (roomID, updateType, userList) => {
    console.warn(
        `roomUserUpdate: room ${roomID}, user ${updateType === 'ADD' ? 'added' : 'left'} `,
        JSON.stringify(userList),
    );
});
```

roomStreamUpdate Receives updates on the streams in the room.

```
// Callback for updates on the status of the streams in the room.
zg.on('roomStreamUpdate', async (roomID, updateType, streamList, extendedData) => {
    if (updateType == 'ADD') {
        // New stream added, start playing the stream. 
    } else if (updateType == 'DELETE') {
        // Stream deleted, stop playing the stream.
    }
});

```
Publishing Streams

Use createStream to create an audio/video stream on your local machine. The function, when called, will automatically record both audio and video.

```
// After calling the CreateStream method, you need to wait for the ZEGOCLOUD server to return the local stream object before any further operation.
const localStream = await zg.createStream({camera :{audio:true,video:true}});
// Get the audio tag.
const localAudio = document.getElementById('local-video');
// The local stream is a MediaStream object. You can render audio by assigning the local stream to the srcObject property of video or audio.
localVideo.srcObject = localStream;
```

By using startPublishingStream, you can begin delivering a local audio and video stream to remote users.

The parameter value  StreamID is Stream ID.

The media stream object was obtained by localStream in the previous step.

```
// localStream is the MediaStream object created by calling creatStream in the previous step.
zg.startPublishingStream(streamID, localStream)
```

Playing Streams

Previously, we broadcasted live video. Start playing a stream by passing its ID to the streamID parameter of startPlayingStream.

```
const remoteStream = await zg.startPlayingStream(streamID);
// The remoteVideo object is the <video> or <audio> element on your webpage.
remoteVideo.srcObject = remoteStream;
```

Stop publishing streams

Stop broadcasting a local video stream by inputting the stream ID into stopPublishingStream.

zg.stopPublishingStream(streamID)

Destroy Stream

destroyStream is used to terminate a local media stream.

```
// localStream is the MediaStream object created when calling the createStream method.
zg.destroyStream(localStream)
```

Stop playing stream

Call stopPlayingStream with the stream IDto stop a remote video feed.

```
zg.stopPlayingStream(streamID)
```

Log out of a room

Call logoutRoom with the room and ID to log out.

```
zg.logoutRoom(roomID)
```


## Conclusion

The reality is that video chat is here to stay for good. We have used ZEGOCLOUD’s 10,000 free minutes to bring you free live video chats.