在你的应用中实现视频通话(二)——声网接入

2019-11-14  本文已影响0人  动哒APP

本文由动哒公众号(dongda_5g),QQ群(174353204)提供,欢迎关注获取技术支持,有任何问题群里都会回复。

上一篇中,咱们探讨了下视频通话的布局,这一篇咱们来探讨利用声网的flutter插件实现视频通话。

在APP中实现视频通话,目前可采用的sdk有网易云信,腾讯云,以及声网。而在我们的flutter系列课程中,使用的则是声网,之所以选择声网,原因很简单,声网有支持flutter的plugin,而其他平台目前还没有flutter插件的支持或者并不完善。

除此之外,声网的另外一个好处就是,每月前10000分钟时免费的,这样我们可以在不需要付费的情况下就先行把视频通话功能做好,超过了10000分钟,咱们再付费。

第一步:声网注册

https://console.agora.io

image

登录之后,在项目管理里面创建你的项目,然后会生成一个App ID,这个App ID就是我们要用到的配置在项目中的一个关键信息。

image

进入右上角开发者社区,可以了解开发和社区相关的一些信息。

image.png

好了,下面我们正式来配置和开发

以前面的布局为基础,如果没有看的同学,左拐https://www.jianshu.com/p/e3c0253e6e85

1.在pubspec.yaml添加agora_rtc_engine插件,目前最新版本是1.0.1

  agora_rtc_engine: ^1.0.1

2.初始化
2.1配置App ID
引入dart文件

import 'package:agora_rtc_engine/agora_rtc_engine.dart';

配置App ID并启用视频功能

  void _initAgoraRtcEngine() {
    AgoraRtcEngine.create("140e572f7a4a4bcaa359155b2a9ccec0");
    AgoraRtcEngine.enableVideo();
  }

注意是enableVideo,我第一次使用的时候,错误的写成了AgoraRtcEngine.enableAudio();,导致视频一直出不来。

2.2 添加事件处理
事件方法先添加在这里,暂时未处理。

  void _addAgoraEventHandlers() {

    AgoraRtcEngine.onError = (dynamic code) {};

    AgoraRtcEngine.onJoinChannelSuccess = (String channel, int uid, int elapsed) {};

    AgoraRtcEngine.onLeaveChannel = () {};

    AgoraRtcEngine.onUserJoined = (int uid, int elapsed) {};

    AgoraRtcEngine.onUserOffline = (int uid, int reason) {};

    AgoraRtcEngine.onFirstRemoteVideoFrame = (int uid, int width, int height, int elapse) {};
    
  }

2.3 最后配置其他初始化参数,并将上面两个方法整合

  void initAgora() {
    _initAgoraRtcEngine();
    _addAgoraEventHandlers();
    // 支持web端的交互吧
    AgoraRtcEngine.enableWebSdkInteroperability(false);
    AgoraRtcEngine.setParameters('{\"che.video.lowBitRateStreamParameter\":{\"width\":320,\"height\":180,\"frameRate\":15,\"bitRate\":140}}');
    AgoraRtcEngine.joinChannel(null, widget.conversationId, null, 0);
  }

其中类方法中加上conversationId, 别的文档里面可能是channelName,实际上是可以理解为房间号,我这里定义为会话id,即conversationId。

  // 我这里定义为ConversationId
  final String conversationId;

  Lession2Page({Key key, this.conversationId}) : super(key: key);

2.4 将以上初始化配置在initState中

  @override
  void initState() { 
    super.initState();
    initAgora();
  }

忘了,还有一茬,AndroidManifest.xml里面加上网络权限

<uses-permission android:name="android.permission.INTERNET"/>

好了,下回分解将之前的布局和声网接口结合起来,实现视频通话,请听下回分解。

上一篇下一篇

猜你喜欢

热点阅读