fluttertpc_agora_rtc_engine:基于 Flutter 的实时音视频通信插件项目

agora_rtc_engine实现直播互动、播放音频文件

分支41Tags282
文件最后提交记录最后更新时间
10 个月前
6 个月前
6 个月前
2 个月前
6 个月前
6 个月前
6 个月前
6 个月前
6 个月前
6 个月前
6 个月前
2 年前
6 个月前
6 个月前
6 个月前
6 个月前
6 个月前
4 年前
3 年前
3 年前
29 天前
6 个月前
3 年前
4 年前
6 个月前
29 天前
29 天前
1 年前
3 年前
2 年前
4 个月前
6 个月前

agora_rtc

本项目基于 agora_rtc

1. 安装与使用

1.1 安装

由于gitcode对上传文件大小有限制,需要下载当前项目到本地进行本地引用,检查项目更目录下ohos/lib下的AgoraRtcSdk.har文件大小是否有22121kb,若没有,则需要删除该har,然后将同级目录下的三个压缩包一起解压缩,以获取正确的har

TAG 命名规则:原库版本-ohos-版本号-betax,不同 TAG 之间的变更详见 CHANGELOG.OpenHarmony.md。

TAG 版本对应表

Flutter 框架版本 TAG 分支
3.7 6.5.0-ohos-1.0.0 master
3.22 6.5.0-ohos-1.0.0 master
3.27 6.5.0-ohos-1.0.0 master
3.35 6.5.0-ohos-1.0.0 master

1.2 OpenHarmony 设置

如果您需要播放网络视频,请在 module.json5 文件中添加网络权限:

"requestPermissions": [
      // 访问互联网的权限
      {
        "name": "ohos.permission.INTERNET",
        "reason": "$string:Internet_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"  // 始终需要该权限
        }
      },
      // 访问麦克风的权限
      {
        "name": "ohos.permission.MICROPHONE",
        "reason": "$string:Audio_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"  // 始终需要该权限
        }
      },
      // 访问摄像头的权限
      {
        "name": "ohos.permission.CAMERA",
        "reason": "$string:Video_reason",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"  // 仅在使用时需要该权限
        }
      }
    ]

1.3 使用

完整用例请参阅 example

最小示例:

_engine = createAgoraRtcEngine();
    await _engine.initialize(RtcEngineContext(
      appId: config.appId,
    ));

    _rtcEngineEventHandler = RtcEngineEventHandler(
      onError: (ErrorCodeType err, String msg) {
        logSink.log('[onError] err: $err, msg: $msg');
      },
      onJoinChannelSuccess: (RtcConnection connection, int elapsed) {
        logSink.log(
            '[onJoinChannelSuccess] connection: ${connection.toJson()} elapsed: $elapsed');
        setState(() {
          isJoined = true;
        });
      },
      onRemoteAudioStateChanged: (RtcConnection connection, int remoteUid,
          RemoteAudioState state, RemoteAudioStateReason reason, int elapsed) {
        logSink.log(
            '[onRemoteAudioStateChanged] connection: ${connection.toJson()} remoteUid: $remoteUid state: $state reason: $reason elapsed: $elapsed');
      },
      onLeaveChannel: (RtcConnection connection, RtcStats stats) {
        logSink.log(
            '[onLeaveChannel] connection: ${connection.toJson()} stats: ${stats.toJson()}');
        setState(() {
          isJoined = false;
        });
      },
      onAudioRoutingChanged: (routing) {
        logSink.log('[onAudioRoutingChanged] routing: $routing');
      },
    );

    _engine.registerEventHandler(_rtcEngineEventHandler);

    await _engine.enableAudio();
    await _engine.setClientRole(role: ClientRoleType.clientRoleBroadcaster);
    await _engine.setAudioProfile(
      profile: AudioProfileType.audioProfileDefault,
      scenario: AudioScenarioType.audioScenarioGameStreaming,
    );

2. 约束条件

本文档基于以下版本验证:

  1. Flutter: 3.7.12-ohos-1.1.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;
  2. Flutter: 3.22.0-ohos-1.0.3; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;
  3. Flutter: 3.27.5-ohos-1.0.1; SDK: 5.0.0(12); IDE: DevEco Studio: 5.1.0.828; ROM: 5.1.0.130 SP8;
  4. Flutter: 3.35.8-ohos-0.0.2; SDK: 6.0.2(22); IDE: DevEco Studio: 6.0.2.640; ROM: 6.0.0.130 SP8;

3. API

"OpenHarmony 支持" 列中,"是" 表示支持;"否" 表示不支持。

名称 描述 类型 输入 输出 OpenHarmony 支持
initialize 创建并初始化 RtcEngine 方法 {"appId": appId} Future
release 销毁 RtcEngine 对象 方法 NA Future
setChannelProfile 设置频道场景 方法 ChannelProfileType profile Future
joinChannel 加入频道 方法 String token,String channelId,int uid,ChannelMediaOptions options Future
joinChannelEx 加入频道 方法 String token,RtcConnection connection,ChannelMediaOptions options Future
updateChannelMediaOptions 加入频道后更新频道媒体选项 方法 ChannelMediaOptions options Future
updateChannelMediaOptionsEx 加入频道后更新频道媒体选项 方法 ChannelMediaOptions options,RtcConnection connection Future
leaveChannel 设置频道选项并离开频道 方法 LeaveChannelOptions? options Future
leaveChannelEx 设置频道选项并离开频道 方法 RtcConnection connection, LeaveChannelOptions? options Future
renewToken 更新 Token 方法 String token Future
setClientRole 设置直播场景下的用户角色和观众端延时级别 方法 ClientRoleType role, ClientRoleOptions? options Future
muteLocalAudioStream 取消或恢复发布本地音频流 方法 bool mute Future
muteLocalAudioStreamEx 取消或恢复发布本地音频流 方法 bool mute, RtcConnection connection Future
muteRemoteAudioStream 取消或恢复订阅指定远端用户的音频流 方法 int uid, bool mute Future
muteRemoteAudioStreamEx 停止/恢复接收指定的音频流 方法 int uid,bool mute,RtcConnection connection Future
muteAllRemoteAudioStreams 取消或恢复订阅所有远端用户的音频流 方法 bool mute Future
muteAllRemoteAudioStreamsEx 取消或恢复订阅所有远端用户的音频流 方法 bool mute, RtcConnection connection Future
muteLocalVideoStream 取消或恢复发布本地视频流 方法 bool mute Future
muteLocalVideoStreamEx 取消或恢复发布本地视频流 方法 bool mute, RtcConnection connection Future
muteRemoteVideoStream 取消或恢复订阅指定远端用户的视频流 方法 int uid, bool mute Future
muteRemoteVideoStreamEx 停止/恢复接收指定的视频流 方法 int uid, bool mute, RtcConnection connection Future
muteAllRemoteVideoStreams 取消或恢复订阅所有远端用户的视频流 方法 bool mute Future
muteAllRemoteVideoStreamsEx 取消或恢复订阅所有远端用户的视频流 方法 bool mute, RtcConnection connection Future
adjustUserPlaybackSignalVolume 调节本地播放的指定远端用户信号音量 方法 int uid, int volume Future
adjustUserPlaybackSignalVolumeEx 调节本地播放的指定远端用户信号音量 方法 int uid, int volume, RtcConnection connection Future
adjustPlaybackSignalVolume 调节本地播放的所有远端用户信号音量 方法 int volume Future
enableAudio 启用音频模块 方法 NA Future
disableAudio 关闭音频模块 方法 NA Future
enableAudioVolumeIndication 启用用户音量提示 方法 int interval, int smooth,bool reportVad Future
enableAudioVolumeIndicationEx 启用用户音量提示 方法 int interval, int smooth,bool reportVad,RtcConnection connection Future
setAudioProfile 设置音频编码属性 方法 AudioProfileType profile,AudioScenarioType scenario Future
setAudioScenario 设置音频场景 方法 AudioScenarioType scenario Future
enableLocalAudio 开启或关闭本地音频采集 方法 bool enabled Future
adjustRecordingSignalVolume 调节音频采集信号音量 方法 int volume Future
enableInEarMonitoring 开启耳返功能 方法 bool enabled,EarMonitoringFilterType includeAudioFilters Future
setInEarMonitoringVolume 设置耳返音量 方法 int volume Future
enableVideo 启用视频模块 方法 NA Future
disableVideo 关闭视频模块 方法 NA Future
setVideoEncoderConfiguration 设置视频编码属性 方法 VideoEncoderConfiguration config Future
setVideoEncoderConfigurationEx 设置视频编码属性 方法 VideoEncoderConfiguration config,RtcConnection connection Future
startPreview 开启视频预览并指定预览的视频源 方法 VideoSourceType sourceType Future
stopPreview 停止视频预览 方法 VideoSourceType sourceType Future
enableLocalVideo 开关本地视频采集 方法 bool enabled Future
startCameraCapture 开始通过摄像头采集视频 方法 VideoSourceType sourceType,CameraCapturerConfiguration config Future
stopCameraCapture 停止通过摄像头采集视频 方法 VideoSourceType sourceType Future
startScreenCapture 开始屏幕采集 方法 ScreenCaptureParameters2 captureParams Future
updateScreenCaptureParameters 更新屏幕采集的参数配置 方法 ScreenCaptureParameters captureParams Future
stopScreenCapture 停止屏幕采集 方法 NA Future
enableContentInspect 开启/关闭本地截图上传 方法 bool enabled, ContentInspectConfig config Future
takeSnapshot 获取视频截图 方法 int uid, String filePath Future
enableVirtualBackground 开启虚拟背景并指定媒体源,或关闭虚拟背景 方法 bool enabled, VirtualBackgroundSource backgroundSource,SegmentationProperty segproperty,MediaSourceType type Future
enableFaceDetection 开启/关闭本地人脸检测 方法 bool enabled Future
setDualStreamModeEx 在发送端设置双流模式 方法 SimulcastStreamMode mode,SimulcastStreamConfig streamConfig,RtcConnection connection Future
startLocalVideoTranscoder 开启本地合图 方法 LocalTranscoderConfiguration config Future
stopLocalVideoTranscoder 停止本地合图 方法 NA Future
updateLocalTranscoderConfiguration 更新本地合图配置 方法 LocalTranscoderConfiguration config Future
setLocalRenderMode 更新本地视图显示模式 方法 RenderModeType renderMode,VideoMirrorModeType mirrorMode Future
setRemoteRenderMode 更新远端视图显示模式 方法 int uid,RenderModeType renderMode,VideoMirrorModeType mirrorMode Future
setupLocalVideo 初始化本地视图 方法 VideoCanvas canvas Future
setupRemoteVideo 初始化远端用户视图 方法 VideoCanvas canvas Future
setupRemoteVideoEx 初始化远端用户视图 方法 VideoCanvas canvas, RtcConnection connection Future
createCustomVideoTrack 创建一个自定义的视频轨道 方法 NA Future
destroyCustomVideoTrack 销毁指定的视频轨道 方法 int videoTrackId Future
startAudioMixing 开始播放音乐文件 方法 String filePath,bool loopback,int cycle,int startPos Future
stopAudioMixing 停止播放音乐文件 方法 NA Future
pauseAudioMixing 暂停播放音乐文件 方法 NA Future
resumeAudioMixing 恢复播放音乐文件 方法 NA Future
adjustAudioMixingVolume 调节音乐文件的播放音量 方法 int volume Future
adjustAudioMixingPlayoutVolume 调节音乐文件在本地播放的音量 方法 int volume Future
getAudioMixingDuration 获取音乐文件总时长 方法 NA Future
getAudioMixingCurrentPosition 获取音乐文件的播放进度 方法 NA Future
playEffect 播放指定的本地或在线音效文件 方法 required int soundId,String filePath,int loopCount,double pitch,double pan,int gain,publish,int startPos Future
stopEffect 停止播放指定音效文件 方法 NA Future
createMediaPlayer 创建媒体播放器对象 方法 NA Future
createMediaRecorder 创建音视频录制对象 方法 RecorderStreamInfo info Future
startAudioRecording 开始客户端录音 方法 AudioRecordingConfiguration config Future
stopAudioRecording 停止客户端录音 方法 NA Future
destroyMediaRecorder 销毁音视频录制对象 方法 MediaRecorder mediaRecorder Future
startOrUpdateChannelMediaRelay 开始或更新跨频道媒体流转发 方法 ChannelMediaRelayConfiguration configuration Future
startOrUpdateChannelMediaRelayEx 开始或更新跨频道媒体流转发 方法 ChannelMediaRelayConfiguration configuration,RtcConnection connection Future
stopChannelMediaRelay 停止跨频道媒体流转发。一旦停止,主播会退出所有目标频道 方法 NA Future
pauseAllChannelMediaRelay 暂停向所有目标频道转发媒体流 方法 NA Future
resumeAllChannelMediaRelay 恢复向所有目标频道转发媒体流 方法 NA Future
startRtmpStreamWithTranscoding 开始旁路推流并设置转码属性 方法 String url, LiveTranscoding transcoding Future
updateRtmpTranscoding 更新旁路推流转码属性 方法 LiveTranscoding transcoding Future
stopRtmpStream 结束旁路推流 方法 String url Future
createDataStream 创建数据流 方法 DataStreamConfig config Future
createDataStreamEx 创建数据流 方法 DataStreamConfig config, RtcConnection connection Future
sendStreamMessage 发送数据流 方法 int streamId, Uint8List data,int length Future
setDefaultAudioRouteToSpeakerphone 设置默认的音频路由 方法 bool defaultToSpeaker Future
setEnableSpeakerphone 开启或关闭扬声器播放 方法 bool speakerOn Future
isSpeakerphoneEnabled 检查扬声器状态启用状态 方法 NA Future
switchCamera 切换前置/后置摄像头 方法 NA Future
setCameraCapturerConfiguration 设置摄像头采集配置 方法 CameraCapturerConfiguration config Future
getCameraMaxZoomFactor 获取摄像头支持最大缩放比例 方法 NA Future
setCameraZoomFactor 设置摄像头缩放比例 方法 double factor Future
isCameraFocusSupported 检测设备是否支持手动对焦功能 方法 NA Future
setCameraExposureFactor 设置当前摄像头的曝光系数 方法 double factor Future
setCameraFocusPositionInPreview 设置手动对焦位置,并触发对焦 方法 double positionX, double positionY Future
startLastmileProbeTest 开始通话前网络质量探测 方法 LastmileProbeConfig config Future
stopLastmileProbeTest 停止通话前网络质量探测 方法 NA Future
getCurrentMonotonicTimeInMs 获取 SDK 当前的 Monotonic Time 方法 NA Future
setParameters SDK 的 JSON 配置信息,用于提供技术预览或特别定制功能 方法 String parameters Future
getCallId 获取通话 ID 方法 NA Future
getCallIdEx 使用连接 ID 获取通话 ID 方法 RtcConnection connection Future
enableEncryption 开启或关闭内置加密 方法 bool enabled, EncryptionConfig config Future
adjustPlayoutVolume 调节本地播放音量 方法 int volume Future
adjustPublishSignalVolume 调节远端用户听到的音量 方法 int volume Future
getDuration 获取媒体文件总时长 方法 NA Future
getMediaPlayerId 获取播放器 ID 方法 NA int
getMute 获取当前播放的媒体文件是否静音 方法 NA Future
getPlayoutVolume 获取当前本地播放音量 方法 NA Future
getPlayPosition 获取当前播放进度 方法 NA Future
getPlaySrc 获取播放的媒体资源的路径 方法 NA Future
getPublishSignalVolume 获取远端用户听到的音量 方法 NA Future
getState 获取播放器当前状态 方法 NA Future
getStreamCount 获取当前媒体文件中媒体流的数量 方法 NA Future
getStreamInfo 通过媒体流的索引值获取媒体流信息 方法 int index Future
mute 设置是否静音 方法 bool muted Future
open 打开媒体资源 方法 String url, int startPos Future
openWithMediaSource 打开媒体资源并进行播放设置 方法 MediaSource source Future
pause 暂停播放 方法 NA Future
play 播放媒体文件 方法 NA Future
playPreloadedSrc 播放预加载的媒体资源 方法 String src Future
preloadSrc 预加载媒体资源 方法 String src, int startPos Future
resume 暂停后恢复播放 方法 NA Future
seek 定位到媒体文件的指定播放位置 方法 int newPos Future
selectAudioTrack 指定当前音频文件的播放音轨 方法 int index Future
selectMultiAudioTrack 选择本地播放和发送至远端的音轨 方法 int playoutTrackIndex, int publishTrackIndex Future
setAudioPitch 调整当前播放的媒体资源的音调 方法 int pitch Future
setAudioDualMonoMode 设置当前音频文件的声道模式 方法 AudioDualMonoMode mode Future
setLoopCount 设置循环播放 方法 int loopCount Future
setPlaybackSpeed 设置当前音频文件的播放速度 方法 int speed Future
setRenderMode 设置播放器视图的渲染模式 方法 RenderModeType renderMode Future
setView 设置播放器渲染视图 方法 int view Future
stop 销毁播放器 方法 NA Future
switchSrc 切换媒体资源 方法 String src, bool syncPts Future
unloadSrc 释放预加载的媒体资源 方法 String src Future
startRecording 开始录制 方法 MediaRecorderConfiguration config Future
stopRecording 停止录制 方法 NA Future

4. 许可证

遵循 BSD 3-Clause License 分发。详见 LICENSE

5. 补充说明

AgoraRtcSdk.har来源:声网官方下载地址 AgoraRtcSdk.part1.rar AgoraRtcSdk.part2.rar AgoraRtcSdk.part3.rarAgoraRtcSdk.har的分卷压缩包

项目介绍

agora_rtc_engine实现直播互动、播放音频文件

定制我的领域