Introduction to Agora RTC
Agora RTC (Real-Time Communication) provides developers with a comprehensive set of APIs to create real-time audio and video communication applications. From basic one-to-one video calls to complex interactive live streaming, Agora RTC empowers app developers to deliver high-quality, low-latency video experiences.
Key Features and API Examples
Below are some of the essential APIs provided by Agora RTC, along with code snippets to help you get started:
1. Initialize the Agora Engine
This API initializes the Agora engine, essential for all RTC interactions.
RtcEngine *engine; engine = createAgoraRtcEngine(); RtcEngineContext context; context.appId = "your-app-id"; engine->initialize(context);
2. Join a Channel
Enables a user to join a channel. All users in the same channel can communicate with each other.
engine->joinChannel("your-token", "your-channel", nullptr, 0);
3. Leave a Channel
This API allows the user to leave the channel, stopping all communication.
engine->leaveChannel();
4. Enable Video
Turns on video communication and configures the video settings.
engine->enableVideo(); VideoEncoderConfiguration config; config.dimensions = VideoDimensions(1280, 720); config.frameRate = FRAME_RATE_FPS_30; config.bitrate = STANDARD_BITRATE; engine->setVideoEncoderConfiguration(config);
5. Enable Audio
Turns on audio communication and applies audio configurations.
engine->enableAudio();
6. Mute/Unmute Audio
Mute or unmute the audio stream.
bool mute = true; // Set to false to unmute engine->muteLocalAudioStream(mute);
7. Setup Local Video
Setup the local video configuration and view.
VideoCanvas canvas; canvas.uid = 0; // Local user canvas.view = yourView; canvas.renderMode = RENDER_MODE_HIDDEN; engine->setupLocalVideo(canvas);
8. Setup Remote Video
Setup the remote video configuration and view for a user.
VideoCanvas canvas; canvas.uid = remoteUid; // Remote user ID canvas.view = remoteView; canvas.renderMode = RENDER_MODE_HIDDEN; engine->setupRemoteVideo(canvas);
9. Send Data Stream
Send data messages to other users in the channel.
int streamId = engine->createDataStream(true, true); std::string message = "Hello, Agora!"; engine->sendStreamMessage(streamId, message.c_str(), message.length());
App Example
Below is a simple example of an application utilizing Agora RTC APIs:
void startAgoraApp() {
RtcEngine *engine;
engine = createAgoraRtcEngine();
RtcEngineContext context;
context.appId = "your-app-id";
engine->initialize(context);
engine->enableVideo();
engine->enableAudio();
engine->joinChannel("your-token", "your-channel", nullptr, 0);
VideoCanvas localCanvas;
localCanvas.view = localView;
localCanvas.renderMode = RENDER_MODE_HIDDEN;
engine->setupLocalVideo(localCanvas);
// Simulate waiting to receive a user
VideoCanvas remoteCanvas;
remoteCanvas.uid = 12345; // Dummy remote user uid
remoteCanvas.view = remoteView;
remoteCanvas.renderMode = RENDER_MODE_HIDDEN;
engine->setupRemoteVideo(remoteCanvas);
// ... Other app logic ...
engine->leaveChannel();
engine->release();
}
By leveraging these powerful APIs, developers can create versatile and high-performance communication applications using Agora RTC.
Hash: 2000b2b384e6f8fb339a81ef9ba91660bbf26a8e47149c24c767b0df062825b8