[简体中文](https://github.com/Tencent-RTC/TRTC_Flutter/blob/master/SDK/README-zh_CN.md) | English

# **Tencent RTC Flutter SDK**

Leveraging Tencent's 21 years of experience in network and audio/video technologies, Tencent Real-Time Communication (TRTC) offers solutions for group audio/video calls and low-latency interactive live streaming. 
With TRTC, you can quickly develop cost-effective, low-latency, and high-quality interactive audio/video services.

## **SDK Overview**

[tencent_rtc_sdk](https://pub.dev/packages/tencent_rtc_sdk): `tencent_rtc_sdk` is an upgraded version of `tencent_trtc_cloud` plugin. In `tencent_rtc_sdk`, we optimized some usage pain points in `tencent_trtc_cloud`, including but not limited to the following aspects:
- Improved the usage of TRTCCloudListener
- Standardized the definition of enumeration

## **Demo quick start**

Please see [Demo Quick Start(Flutter)](https://trtc.io/document/39243?platform=flutter&product=rtcengine&menulabel=sdk)

## **SDK quick integration**

Please see [Quick integration(Flutter)](https://trtc.io/document/64203?platform=flutter&product=rtcengine&menulabel=sdk)

## **SDK class files**

* trtc_cloud - Tencent Cloud TRTC Core Function Interface.
* trtc_cloud_video_view - Provides widgets for rendering video `TRTCCloudVideoView`.
* tx_audio_effect_manager - Tencent Cloud Audio Effect Management Module.
* tx_device_manager - Tencent Cloud Audio Effect Management Module.
* trtc_cloud_def - TRTC key class definition Description: definitions of interfaceerated and constant values such as resolution and quality level
* trtc_cloud_listener - Tencent Cloud TRTC Event Notification Interface.

## **Sample call**

1.**Initialization**
```
// Create TRTCCloud singleton
trtcCloud = await TRTCCloud.sharedInstance();
// Tencent Cloud Audio Effect Management Module
txDeviceManager = trtcCloud.getDeviceManager();
// Tencent Cloud Audio Effect Management Module
txAudioManager = trtcCloud.getAudioEffectManager();
```

2.**Room entry/exit**
```
// Room entry/exit
trtcCloud.enterRoom(
        TRTCParams(
            sdkAppId: sdkAppId,
            userId: userId,
            userSig: userSig,
            roomId: roomId),
        TRTCCloudDef.TRTC_APP_SCENE_VIDEOCALL);
// Leave a room
trtcCloud.exitRoom();
```

3.**Listener registration**
```
// Register a listener
TRTCCloudListener listener = TRTCCloudListener(
    onError: (errorCode, errorMessage) {
      debugPrint("TRTCCloudListener onError errCode:$errCode errMsg: $errMsg");
    }
    ……
)
trtcCloud.registerListener(listener);
//Remove a listener
trtcCloud.unRegisterListener(listener);
```

4.**Playing local video**
```
// Parameters:
// frontCamera: `true`: front camera; `false`: rear camera
// viewId: view ID generated by `TRTCCloudVideoView`
TRTCCloudVideoView(
    onViewCreated: (viewId) {
      trtcCloud.startLocalPreview(true, viewId);
});
```

5.**Display remote video**

```
// Parameters:
// userId: Specifies the userid of the remote user
// streamType: Specifies the type of video stream to watch userid：
//* HD big picture：TRTCVideoStreamType.big
//* Low definition large picture：TRTCVideoStreamType.small
// viewId: view ID generated by `TRTCCloudVideoView`
TRTCCloudVideoView(
    onViewCreated: (viewId) {
      trtcCloud.startRemoteView(userId, TRTCVideoStreamType.big, viewId);
});
```

5.**Display remote screen sharing**

```
/// Parameters:
/// userId: Specifies the userid of the remote user
/// streamType: type of the remote user’s video stream to play:
///* Substream (screen sharing): TRTCVideoStreamType.sub
/// viewId: view ID generated by `TRTCCloudVideoView`
TRTCCloudVideoView(
    onViewCreated: (viewId) {
      trtcCloud.startRemoteView(userId, TRTCVideoStreamType.sub, viewId);
});
```

### How do I view TRTC logs?
TRTC logs are compressed and encrypted by default with the XLOG extension. You can set setLogCompressEnabled to specify whether to encrypt logs. If a log filename contains C (compressed), the log is compressed and encrypted; if it contains R (raw), the log is in plaintext.
* iOS：Documents/log of the application sandbox
* Android
  * 6.7 or below: /sdcard/log/tencent/liteav
  * 6.8 or above: /sdcard/Android/data/package name/files/log/tencent/liteav/
