写点什么

如何在 React Native 中实现视频通话(上)

  • 2019-11-30
  • 本文字数:1564 字

    阅读完需:约 5 分钟

如何在 React Native 中实现视频通话(上)

对于 Web、iOS、Android 开发者来讲,React Native 给跨平台开发工作带来了很大的帮助。仅用 JavaScript 就可以创建运行于移动端的应用。同时,你也可以将 React Native 代码与 Native 代码结合,不论你是用 Objective C、Java 还是用 Swift 开发。


有一位 Agora 开发者,同时也是 React Native 爱好者(Github:syanbo)采用 Agora SDK 写了一个 React Native 封装模块,可实现直播、多人语音或视频会议,当然,同时支持 Android、iOS 平台。


Github 地址:https://github.com/syanbo/react-native-agora


当他在 Agora 的交流群里发出来时,我们也是稍感意外。感谢开发者们对我们的支持。如果你也默默地做了什么新鲜尝试,并用到了 Agora SDK,欢迎私信告诉我们,我们也很乐意帮你分享给更多开发者。


另一方面,现在声网 Agora SDK 已经支持 React Native,能帮助你利用 React Native 为应用增加实时音视频功能。我们之前也开源了一个 Demo,点击「阅读原文」可以查看详细代码,实现了基本的视频通话功能,与 @syanbo 的有些差别。为了方便大家开发,我们简单介绍一下,做一个 React Native 实时视频通话应用的接口调用逻辑,如果你也正在做 React Native 开发,会对你有帮助:

开发环境

首先需要你注册一个 Agora 开发者账号,并准备好 Node.js 6.9.1+开发环境。


Android 开发者还需要:


  • Android Studio 2.0+

  • 编辑器,如 Sublime Text

  • Android 设备(不支持模拟器)


iOS 开发者则需要:


  • Xcode 8.0+

  • iPhone 或 iPad(不支持模拟器)

快速开始

下面我们来为应用创建 Agora React Native wrapper

注册账号,并获取一个 App ID

在 Agora.io 注册一个开发者账号,每个账号每个月有 10000 分钟的免费通话,可以满足大家日常开发与测试


进入 Dashboard ,选择左侧边栏的项目->项目列表


复制页面中的 App ID

更新并运行 Sample App

打开 App.js 文件。在 render() 中,将里面的 App ID 更新为你刚刚复制的 App ID。


1render() {2    AgoraRtcEngine.createEngine('YOUR APP ID');3}
复制代码


使用终端或 Command Prompt,cd 进入你的项目目录,然后输入 npm install,生成项目文件。


添加适当的 SDK,连接设备,然后按如下所述步骤运行项目:


Android:


下载 Agora Video SDK。


解压缩下载的 SDK 包并将 libs/agora-rtc-sdk.jar 文件复制到该 android/app/libs 文件夹中。


然后将 libs/arm64-v8a/x86/armeabi-v7a 文件夹复制到该 android/app/src/main/jniLibs 文件夹中。


在 Android Studio 中,打开 Android 项目文件夹并连接 Android 设备。


同步并运行项目。


iOS:


下载 Agora Video SDK。


解压缩下载的 SDK 包并将 libs/AograRtcEngineKit.framework 文件复制到该 ios/RNapi 文件夹中。


打开 RNapi.xcodeproj 并连接 iPhone 或 iPad 设备。


应用有效的配置文件并运行该项目。

为已有 React Native 应用添加视频通话

以下要介绍的接口主要实现:


  • 渲染视图

  • 加入频道

  • 离开频道

  • 切换摄像头

  • 切换 Audio Route

  • 添加事件监听器


文件中的 App 类扩展 App.js 包含 React Native Android/iOS 示例应用程序的相关 Agora SDK 代码。


1export default class App extends Component {2    ...3}
复制代码

渲染视图

该 render()方法在其 return 中生成 UI 元素。在 return 之前的代码中,根据需要来配置 Agora engine。


1render(){ 2  ... 3  return(4    ... 5  ); 6}
复制代码


在渲染之前,我们需要先创建 RTC Engine。在如下代码中填写你的 App ID。


1AgoraRtcEngine.createEngine('YOUR APP ID');
复制代码


创建完成之后,启用视频与音频


1AgoraRtcEngine.enableVideo();2AgoraRtcEngine.enableAudio();
复制代码


设置视频和频道配置文件。如下述代码中,视频被设定为宽度 360、高度 640,帧率为 15,比特率为 300:


1AgoraRtcEngine.setVideoProfileDetail(360,640,15,300); 2    AgoraRtcEngine.setChannelProfile(AgoraRtcEngine.AgoraChannelProfileCommunication);
复制代码


2019-11-30 22:071762

评论

发布
暂无评论
发现更多内容

Git遇到冲突?解决也太简单了!

Jackpop

8.3K Star!这才是我们苦苦寻找的PDF阅读器。。。

Jackpop

RayLink远程控制软件:叮~你收到一份年度关键词报告

RayLink远程工具

远程控制软件 RayLink

harbor从1.6.1升级至2.7.0

小黄鱼

Harbor

InfoQ写作社区 2022 年度优质创作者评选名单公布!

InfoQ写作社区官方

热门活动

科技创新实力受认可,网易有道入选 2022 中国技术品牌影响力企业榜

有道技术团队

技术 数据分析

一加11:新的赛场,“不温和”的答卷

脑极体

阿里云张献涛:无影,让计算触手可及

云布道师

无影云电脑

Apipost接口自动化测试功能详解

测试人生路

Postman 自动化测试 接口自动化测试

EditText(输入框)详解

芯动大师

android edittext 输入框设计 文本框(TextView)

同盾科技 x TiDB丨实时数据架构为风控智能决策保驾护航

PingCAP

#TiDB

Python专属搜索引擎!又一款Python库学习神器?

Jackpop

精华推荐 |【深入浅出Sentinel原理及实战】「原理探索专题」完整剖析Alibaba微服务架构体系之轻量级高可用流量控制组件Sentinel(1)

码界西柚

sentinel 1月日更 Sentinel 系统

云渲染动画价格一般多少?

Renderbus瑞云渲染农场

云渲染 云渲染价格

创作技术博客以来的一些成就

嵌入式视觉

知乎 博客 CSDN 博客园

CMD有哪些有趣的命令?

Jackpop

2022 InfoQ 写作社区年度优质企业号评选名单公布!

InfoQ写作社区官方

热门活动

关于接口测试自动化的总结与思考

阿里巴巴云原生

阿里云 云原生 TPS

TiDB 6.5 LTS 发版

PingCAP

#TiDB

WorkPlus平台多业务系统集成,让企业沟通协作更畅通

BeeWorks

软件测试 | 测试开发 | 相比Selenium,Web自动化测试框架Playwright

测吧(北京)科技有限公司

测试

2022 OpenMLDB 硕果累累,颁奖台上荣耀连连

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Apipost——让前端、后端、测试共用一份API文档!

不想敲代码

好家伙!阿里最新SpringBoot进阶笔记涵盖了SpringBoot所有骚操作

程序员小毕

程序员 后端 ssm springboot java面试

性能测试技术笔记(三):如何设计一个压测平台

老张

性能测试 压测平台

Github上有什么好的unity开源项目?

Jackpop

Kyligence 客户案例“泰康集团精细化经营分析与运营平台”获评数据智能最佳实践案例

Kyligence

数据分析 指标管理

企业专用的即时通讯产品如何选择?

BeeWorks

Flutter Hero 动画组件的飞行过程显示控制

岛上码农

flutter ios 安卓 移动端开发 跨平台开发

连续四年发布科技趋势预测,他们在探索中国科技的“主干道”

脑极体

Java学习者看过来!这些优质项目千万别错过

Jackpop

如何在 React Native 中实现视频通话(上)_文化 & 方法_声网_InfoQ精选文章