热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AgoraFlutterSDK使用Flutter开发的高性能音视频SDK|掘金技术征文

Flutter是当前最火的跨平台开发技术,而Agora是音视频的SDK,当这两者结合起来,就是AgoraFlutterSDK。AgoraF

Flutter 是当前最火的跨平台开发技术,而 Agora 是音视频的 SDK,当这两者结合起来,就是 Agora Flutter SDK。

Agora Flutter SDK 可以让你很轻松的使用 Flutter 来开发音视频应用,并且视频的渲染效率和 Native 几乎没有差别,效率一样,但是开发量减半,而且还是跨平台的,有没有觉得很兴奋呢(搓手)。

接下来,就跟着我一起体验吧。

准备工作

在正式体验 Agora Flutter SDK 之前,需要:

  1. 安装好 Flutter 的开发环境
  2. 注册 Agora SDK 的账号
  3. 创建项目
  4. 查看项目信息

1. 安装 Flutter 的开发环境

Flutter 开发环境的安装,我这里就不说了,不熟悉的同学可以去搜索相关文章。

2. 注册 Agora SDK 的账号

点击这个 网址 进入注册页面。

按照提示注册好账号。

3. 创建项目

进入自己的控制台,如下的样子:

点击创建项目,输入名字就可以创建了。

4. 查看项目信息

创建完项目之后,在项列表里点击项目的名字查看信息:

这里的 App ID 很重要,待会会用到。

运行 Agora Flutter SDK 的 Demo 工程

从 Github 上下载 Agora Flutter SDK 的 Demo 工程

可以在 GitHub 上下载 Agora Flutter SDK 的 Demo 工程,地址为:github.com/AgoraIO-Com…

将工程 clone 到本地:

git clone git@github.com:AgoraIO-Community/Agora-Flutter-Quickstart.git

在 VS Code 中打开工程

在 VS Code 中,File -> Open ...

选择 Agora-Flutter-Quickstart 的文件夹,然后打开。

在 setting.dart 里添加 App ID

在 lib/src/utils/settings.dart 里添加 App ID。

代码由:

// Agora AppId
const APP_ID = "";

变为:

// Agora AppId
const APP_ID = "******";//此处是你的 App ID

打开模拟器或连接真机

你可以先使用 Android Stuido 打开 Android 的模拟器,或者打开 iOS 的模拟器,或者连接真机(Android、iOS都行)。

运行工程

我这里打开的是 Android 的模拟器,你可以在 VS Code 的右下角,看到如下的标志:

说明模拟器打开成功。

然后在 VS Code 里,Debug -> Start Without Debugging,就可以运行成功:

这里你如果连接的是真机,可能会出现安装完,闪退的问题,如果出现这样的问题,可以将:

android/app/build.gradle 里的

ndk {abiFilters 'armeabi-v7a', 'x86'
}

改为:

ndk {abiFilters 'armeabi-v7a', 'x86' ,'arm64-v8a'
}

打开视频流

输入房间号(自己随便输入一串数字),点击按钮 Join 就可以打开视频流:

因为我用的是模拟器,所以这里的视频流是这样子的,如果你用的真机,就可以看到视频了

使用另一个手机加入视频房间

在另一台手机上也安装上 App,然后输入相同的房间号,就可以看到两路视频,相当于视频通话:

Agora Flutter SDK 的使用

看完实际运行效果后,我们在看 Agora Flutter SDK 的使用。

为 Flutter 工程添加 Agora Flutter SDK 的依赖

Agora Flutter SDK 也是 Flutter 的一个库,所以要在 pubspec.yaml 里添加依赖:

agora_rtc_engine: ^0.9.4

添加完之后运行:

flutter packages get

初始化 AgoraRtcEngine

初始化 AgoraRtcEngine 的时候需要传入 App ID:

AgoraRtcEngine.create(APP_ID);

开启视频的开关

AgoraRtcEngine.enableVideo();

打开本地预览并且将视频添加到屏幕上

AgoraRtcEngine.createNativeView(uid,(viewId) {AgoraRtcEngine.setupLocalVideo(viewId, VideoRenderMode.Hidden);AgoraRtcEngine.startPreview();....
})

将远程的视频添加到屏幕上

AgoraRtcEngine.createNativeView(uid,(viewId) {AgoraRtcEngine.setupRemoteVideo(viewId, VideoRenderMode.Hidden, uid);....
})

Agora Flutter SDK 的性能检测

为了看 Agora Flutter SDK 的性能,我打开了视频,对 CPU和GPU 进行监控,下面是监控的视频:

下面是 CPU 和 GPU 刷新的数据:

上面的是 GPU 的数据,一帧最大的渲染耗时 25.5 ms,平均耗时为 10.2 ms,FPS > 60 帧,非常流畅 下面的是 CPU 的数据,一帧渲染平均耗时才为 6.3 ms,FPS 远大于 60

在录制视频的同时,使用 Android Profile 监测性能:

发现 CPU 的使用率一直维持在个位数,而内存的使用也不是太多,可见 Agora Flutter SDK 显示视频的性能也很好,几乎和 Native 的没有差别。

总结

Agora Flutter SDK 不仅具有和 Native 一样的性能,而且开发速度更快,下次讲解 Agora Flutter SDK 的自定义功能开发。

转:https://juejin.im/post/5cc2ed6e6fb9a032265102b8



推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了GregorianCalendar类的基本信息,包括它是Calendar的子类,提供了世界上大多数国家使用的标准日历系统。默认情况下,它对应格里高利日历创立时的日期,但可以通过调用setGregorianChange()方法来更改起始日期。同时,文中还提到了GregorianCalendar类为每个日历字段使用的默认值。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
  • node.jsurlsearchparamsAPI哎哎哎 ... [详细]
  • PeopleSoft安装镜像版本及导入语言包的方法
    本文介绍了PeopleSoft安装镜像的两个版本,分别是VirtualBox虚拟机版本和NativeOS版本,并详细说明了导入语言包的方法。对于Windows版本,可以通过psdmt.exe登录进入,并使用datamover脚本导入语言包。对于Linux版本,同样可以使用命令行方式执行datamover脚本导入语言包。导入语言包后,可以实现多种语言的登录。参考文献提供了相关链接以供深入了解。 ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
author-avatar
木瓜香皂a
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有