This Flutter plugin is a wrapper for Agora Video SDK
Agora.io provides building blocks for you to add real-time voice and video communications through a simple and powerful SDK. You can integrate the Agora SDK to enable real-time communications in your own application quickly.
NOTE: The
main
branch is major update base on the Agora Native SDK 4.x, which introduces some break changes. previous releases please see the following branches(the version < 6.0.0):
To use this plugin, please add agora_rtc_engine
as a dependency to
your pubspec.yaml file.
Agora Video SDK requires Camera
and Microphone
permission to start a video call.
For the latest permission settings, please refer to the documentation at https://docs.agora.io/en/video-calling/get-started/get-started-sdk?platform=android#project-setup
See the required device permissions from the AndroidManifest.xml file.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- The Agora SDK requires Bluetooth permissions in case users are using Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<!-- For Android 12 and above devices, the following permission is also required. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
For the latest permission settings, please refer to the documentation at https://docs.agora.io/en/video-calling/get-started/get-started-sdk?platform=ios#project-setup
Open the Info.plist
and add:
Privacy - Microphone Usage Description
,and add some description into the Value
column.Privacy - Camera Usage Description
, and add some description into the Value
column.The
agora_rtc_engine
for web is currently in alpha stage, and the documentation is incomplete and it has only been tested on desktop web at this time.The
agora_rtc_engine
web is built on top of iris_web, a wrapper for the Agora Web SDK 4.x. This helps align the Native SDK (Android/iOS/macOS/Windows) APIs through the Agora Web SDK 4.x. Please note that the agora_rtc_engine web utilizes the Agora Web SDK 4.x underneath, so only a subset of the Native SDK APIs can be implemented on the web. If the APIs returnAgoraRtcException
with a-4
error code, this means these APIs are not supported at this time.
Download the iris_web
(see the link below) artifact and include it as a <script />
tag in your <your-project>/web/index.html
file. For example:
Project structure
<your-project>
|__web
|__index.html
|__iris-web-rtc_<x.y.z>.js
<!-- <your-project>/web/index.html -->
<!DOCTYPE html>
<html>
...
<body>
...
<script src="https://github.com/AgoraIO-Extensions/Agora-Flutter-SDK/raw/main/iris-web-rtc_<x.y.z>.js"></script>
</body>
</html>
Download: https://download.agora.io/sdk/release/iris-web-rtc_n440_w4220_0.8.0.js
For Testing Purposes
You can directly depend on the Agora CDN for testing purposes:
<!-- <your-project>/web/index.html -->
<!DOCTYPE html>
<html>
...
<body>
...
<script src="https://download.agora.io/sdk/release/iris-web-rtc_n440_w4220_0.8.0.js"></script>
</body>
</html>
NOTE: This feature requires
agora_rtc_engine
>= 6.3.0
Due to performance constraints, direct implementation of advanced features like video and audio raw data processing is not currently feasible in Flutter side.
We enable you to create an RtcEngine
within Flutter by utilizing the native handle from the RtcEngine
(Android) or AgoraRtcEngineKit
(iOS) of the Agora RTC Native SDK. This approach enables your application to directly utilize the advanced features of the Agora RTC Native SDK through the agora_rtc_engine
package, bridging the gap between native capabilities and Flutter's environment.
More detail, please check the ProcessVideoRawData example for reference.
If you experience issues with iOS not working in release mode, you may need to set the configuration below to avoid stripping symbols.
Please refer to the Flutter documentation for more information.
If you have any problems or suggestions regarding the sample projects, feel free to file an issue OR pull request.
To help work on this sdk, please refer to CONTRIBUTING.md.
The project is under the MIT license.