Flutter即时通讯插件jrtc_sdk的使用

Flutter即时通讯插件jrtc_sdk的使用

概况

JRTCExpressEngine 是 SDK 的核心接口类,用于实现实时音视频的主要功能。

JRTCErrorCode 是错误码。

初始化相关的前置功能

方法 描述
createEngine 初始化SDK
destroyEngine 释放资源
setMediaConfig 设置媒体配置

设备管理

方法 描述
getCamera 获取当前已打开的摄像头或者默认摄像头
getAllCameras 获取摄像头列表
switchCamera 切换摄像头
enableAudioOutput 开启/关闭音频输出,本地禁音
enableSpeaker 开启/关闭扬声器
setCameraFocus 设置触屏对焦
getCameraMaxZoom 获取摄像头支持的最大变焦倍数
setCameraZoom 设置摄像头变焦倍数
isCameraTorchSupported 查询摄像头是否支持闪光灯
setCameraTorchOn 设置是否打开闪光灯
setCameraExposureLevel 设置手动曝光度
getAudioRoute 获取音频路由

频道管理

方法 描述
joinChannel 创建并加入频道
leaveChannel 离开频道

音视频管理

方法 描述
startLocalVideoDevice 启动视频模块,是否开启本地视频采集并渲染
publishLocalAudioStream 开启或关闭发送本地音频流
publishLocalVideoStream 开启或关闭发送本地视频流
playRemoteAudioStream 订阅或取消订阅指定用户音频,并播放
playRemoteVideoStream 开始或停止渲染视频对象
muteLocalAudioStream 是否发送静音包
muteLocalVideoStream 是否停止本地视频流
getStatistics 获得当前通话统计信息

频道消息管理

方法 描述
sendMessage 发送文本消息

屏幕共享

方法 描述
enableScreenShare 开关屏幕分享
startScreenShareVideo 启动屏幕共享视频渲染

日志

方法 描述
uploadLog 上传日志
info 打印info等级的日志
debug 打印debug等级的日志
error 打印error等级的日志

网络

方法 描述
getNetType 获取网络类型
hasNet 是否有网

媒体高级功能

方法 描述
enableVideoFile 启动视频文件输入源
inputVideoFileFrame 输入视频文件数据
inputCustomAudioData 将音频输入数据输入到媒体层
getAudioOutputData 获取音频输出数据
setLocalCaptureAngle 设置本地视频采集窗体角度
setRenderMirror 设置本地渲染的画面镜像
setRenderEffect 设置渲染特效
freezeRenderEffect 是否冻结渲染
takeOnceSnapshot 视频通话单次截图
setRenderAngle 设置远端视频在本地渲染的旋转角度
getMinExposureCompensation 获取摄像头曝光补偿最小值
getMaxExposureCompensation 获取摄像头曝光补偿最大值
getExposureCompensationStep 获取摄像头曝光补偿步长

频道事件

方法 描述
onSelfJoinStateChange 自身状态变化回调
onChannelUpdate 频道属性变化回调
onSelfJoined 加入频道结果回调
onSelfLeft 离开频道结果回调
onOtherJoined 成员加入回调
onOtherLeft 成员离开回调
onUserUpdate 成员更新回调
onMessageReceived 接收频道消息的回调
onVolumeChange 成员声音变化回调
onError SDK 运行时出现的错误回调
onCameraUpdate 摄像头变化回调
onAudioOutputTypeChange 音频输出类型变化回调
onRenderReceived 收到第一帧数据回调
onRenderStart 渲染开始回调
onVideoError 视频渲染错误回调
onNeedKeyFrame 标记下一次输入关键帧回调

其他

方法 描述
getSdkVersion 获取当前SDK的版本号

示例代码

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:jrtc_flutter_example/home_page.dart';
import 'package:jrtc_flutter_example/log_info.dart';
import 'package:jrtc_flutter_example/remote_user_info.dart';
import 'package:jrtc_flutter_example/self_user_info.dart';
import 'package:jrtc_flutter_example/speak_state_info.dart';
import 'package:oktoast/oktoast.dart';
import 'package:provider/provider.dart';

import 'channel_info.dart';
import 'login_info.dart';

void main() {
  runApp(MultiProvider(
    providers: [
      ChangeNotifierProvider(create: (context) => LoginInfo()),
      ChangeNotifierProvider(create: (context) => SelfJoinUserInfo()),
      ChangeNotifierProvider(create: (context) => RemoteUserInfo()),
      ChangeNotifierProvider(create: (context) => JoinChannelInfo()),
      ChangeNotifierProvider(create: (context) => SpeakStateInfo()),
      ChangeNotifierProvider(create: (context) => LogInfo())
    ],
    child: MyApp(),
  ));
  //runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return OKToast(
        child: MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: HomePage(),
      ),
      theme: Theme.of(context).copyWith(
        listTileTheme: ListTileThemeData(
          horizontalTitleGap: 0, //这里调整基于你的需求
        ),
      ),
    ));
  }
}

更多关于Flutter即时通讯插件jrtc_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter即时通讯插件jrtc_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


jrtc_sdk 是一个用于 Flutter 的即时通讯(IM)插件,通常用于实现实时聊天、音视频通话等功能。以下是如何在 Flutter 项目中使用 jrtc_sdk 的基本步骤。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 jrtc_sdk 依赖:

dependencies:
  flutter:
    sdk: flutter
  jrtc_sdk: ^x.x.x  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化 SDK

在你的 Flutter 应用中初始化 jrtc_sdk。通常需要在应用启动时进行初始化。

import 'package:jrtc_sdk/jrtc_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Jrtc SDK
  await Jrtc.init(
    appId: 'your_app_id',  // 你的 App ID
    appKey: 'your_app_key', // 你的 App Key
  );

  runApp(MyApp());
}

3. 登录与用户管理

使用 Jrtc 提供的 API 来进行用户登录和登出。

// 用户登录
Future<void> login(String userId, String token) async {
  await Jrtc.login(userId: userId, token: token);
}

// 用户登出
Future<void> logout() async {
  await Jrtc.logout();
}

4. 发送和接收消息

你可以使用 Jrtc 提供的 API 来发送和接收消息。

// 发送文本消息
Future<void> sendTextMessage(String targetUserId, String message) async {
  await Jrtc.sendMessage(
    targetUserId: targetUserId,
    message: message,
    messageType: 'text',
  );
}

// 监听接收消息
Jrtc.onMessageReceived.listen((message) {
  print('Received message: ${message.content}');
});

5. 音视频通话

jrtc_sdk 通常也支持音视频通话功能。你可以使用以下 API 来发起和接听通话。

// 发起音视频通话
Future<void> startCall(String targetUserId, bool isVideoCall) async {
  await Jrtc.startCall(
    targetUserId: targetUserId,
    isVideoCall: isVideoCall,
  );
}

// 接听通话
Future<void> acceptCall() async {
  await Jrtc.acceptCall();
}

// 挂断通话
Future<void> hangUp() async {
  await Jrtc.hangUp();
}

// 监听来电
Jrtc.onIncomingCall.listen((call) {
  print('Incoming call from ${call.callerId}');
});

6. 处理用户状态

你还可以监听用户在线状态的变化。

// 监听用户状态变化
Jrtc.onUserStatusChanged.listen((status) {
  print('User status changed: ${status.userId} is ${status.online ? 'online' : 'offline'}');
});

7. 处理异常

在使用 SDK 的过程中,可能会遇到各种异常情况。你可以通过监听异常来处理错误。

// 监听异常
Jrtc.onError.listen((error) {
  print('Error occurred: ${error.message}');
});

8. 清理资源

在应用退出或不再需要 SDK 时,可以清理资源。

Future<void> dispose() async {
  await Jrtc.dispose();
}
回到顶部