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

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

作者: 动哒APP | 来源:发表于2019-11-14 11:08 被阅读0次

    本文由动哒公众号(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"/>
    

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/yzqhictx.html