使用 Firebase 的 WebRTC 语音聊天

2023-11-30

我以前从未尝试过 webrtc。我有一个使用 Firebase 制作的应用程序。现在我正在尝试在其中添加语音通话功能。

因此尝试搜索一些教程,大多数都使用 PubNub 或大多数教程基于网络应用程序。

我看到了这个 stackoverflow 线程,并且知道可以通过 Firebase 来使用 webrtc。

使用 Firebase 通过聊天应用进行语音通话

在尝试了一些教程之后,我编写了这段代码,

    PeerConnectionFactory.initializeAndroidGlobals(this,false,true,true);
    PeerConnectionFactory peerConnectionFactory = new PeerConnectionFactory();
    AudioSource audioSource = peerConnectionFactory.createAudioSource(new MediaConstraints());
    AudioTrack audioTrack = peerConnectionFactory.createAudioTrack("4444",audioSource);
    audioTrack.setEnabled(true);
    MediaStream mediaStream = peerConnectionFactory.createLocalMediaStream("4444");
    mediaStream.addTrack(audioTrack);

但后来我很困惑如何使用 Firebase 与其他设备共享流。需要帮忙 :(


据我所知我不认为Firebase目前有语音通话支持吗?

在另一方面WebRTC((Web 实时通信)是一个免费的开源项目,它通过简单的应用程序编程接口 (API) 为 Web 浏览器和移动应用程序提供实时通信 (RTC)。

基本上你需要的是Socket用于发信号SignallingServer and PeerConnection用于在两个客户端之间建立连接。 下面是一些可以开始的链接。

  1. 开始使用
  2. Android 的逐步示例

SignallingServer示例中还提供了实现。你将需要NODE.JS运行它。WebRTC是相当惊人的。

如果你想使用Firebase as SignallingServer你可以使用它。但我认为这会是一个开销,而一个简单的Socket能行得通 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Firebase 的 WebRTC 语音聊天 的相关文章

  • 字符串 a == 字符串 b 的规则 [重复]

    这个问题在这里已经有答案了 我试图了解字符串池的工作原理以及一个字符串等于另一个字符串的规则是什么 例如这个片段 public static void main String hi String s1 lol String s2 lol S
  • 基于磁盘的 HashMap [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Java 是否有 或者是否有可用的库 允许我拥有基于磁盘的 HashMap 它不需要是原子的或任何东西
  • 相对重力

    我最近开始使用jMonkey引擎 这非常好 但我在尝试实现相对重力时陷入了困境 我想让行星彼此围绕轨道运行 不一定是完美的圆形轨道 取决于速度 所以每个对象都应该影响其他对象 我现在拥有的 关闭全球重力 bulletAppState get
  • Android:调用超类的原因?

    我正在查看 Android 开发人员网站上的记事本教程 我有一个关于调用活动超类的重写函数的问题 例如 public class Notepadv3 extends ListActivity Override public boolean
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • Firebase 邀请发送电子邮件,但不发送短信。返回结果代码 0

    我正在尝试使用 Firebase 在我的 Android 应用程序中实现应用程序邀请系统 该代码与他们中给出的完全相同guide https firebase google com docs invites android private
  • Java中如何将Object[]转换为String[]?

    我有一个关于 Java 的问题 我有一个Object Java默认的 不是用户定义的 我想将它转换为String 谁能帮我 谢谢 这是转换 for int i 0 i lt objectArr length i try strArr i o
  • 为什么我无法使用 HttpUrlConnection 上传第一个文件块?

    在我的项目中 我应该从一台服务器逐块下载文件 并将每个块立即上传到另一台服务器 我有一个应该下载的文件的 URL 我们就这样称呼它吧downloadUrl 因此 这就是我逐块下载文件的方式 val chunkSize 1024 1024 B
  • 在Android项目中引用(纯java)项目(找不到类)

    我试图在我的 Android 项目中引用一个纯 java 项目 gt Java 项目有一大堆我需要使用的类 哦 正如第一个回复所指出的 我正在使用 eclipse 是的 唯一的问题是 我总是找不到类 XXX 从方法 com example
  • jasper 报告文件中出现错误

    首先 我在 iReport 5 1 0 中创建一个 R D1 jrxml 文件 我执行该报告的 Java 代码如下所示 import java sql Connection import java sql DriverManager imp
  • 使用 Google 语音服务查询支持的语言不适用于 Android 13

    我使用以下命令查询语音服务支持的语言RecognizerIntent ACTION GET LANGUAGE DETAILS action val intent Intent RecognizerIntent ACTION GET LANG
  • java.lang.IllegalStateException:FragmentManager 已被销毁

    活动中onResume我称之为 volley request 的方法 它获取项目列表 然后将它们加载到此活动内的 ListFragment 中 当我第一次进入活动时 一切正常 但当我重新进入活动时 ListFragment 为空 并且控制台
  • 访问手机内部存储以推送 SQLite 数据库文件

    我正在使用 Netbeans 和 java 开发我的 Android 应用程序 当我使用模拟器时 我可以访问文件资源管理器并通过访问以下路径将 SQLite 数据库插入到设备内存中 data data com example helloan
  • Java 中有类似 .NET 的 NotImplementedException 的东西吗?

    有没有类似 NET 的东西NotImplementedException在Java中 康芒斯朗 http commons apache org proper commons lang javadocs api 2 6 org apache
  • 找出对象列表中是否包含具有指定字段值的内容?

    我有一个从数据库收到的 DTO 列表 它们有一个 ID 我想确保我的列表包含具有指定 ID 的对象 显然 在这种情况下创建具有预期字段的对象不会有帮助 因为 contains 调用 Object equals 并且它们不会相等 我想出了这样
  • 优雅地避免 Java 中的 NullPointerException

    考虑这一行 if object getAttribute someAttr equals true 显然这一行是一个潜在的错误 属性可能是null我们会得到一个NullPointerException 因此我们需要将其重构为以下两个选择之一
  • Android Google 地图:在 2 个位置设置边界并以其中一个位置为中心

    我知道如何在两个位置设置边界 以便两个位置都以最大缩放显示 使用LatLngBounds 我知道如何以某个位置为中心 请问我该如何同时做这两件事 在 2 个位置设置边界AND将地图置于 2 个位置之一的中心 googleMap setCen
  • 当框架被拖动时,如何设置 JWindow 的位置位于文本字段下方?

    我正在制作一个自动完成项目 就像谷歌一样 我的框架中有一个 jtextfield 每当我在该字段中输入内容时 该文本字段下方就会出现一个 JWindow 并且该窗口来自另一个类 现在的问题是 每当我拖动框架时 如何使窗口始终出现在文本字段下
  • 片段已添加 IllegalStateException

    我在容器 Activity 上使用此方法来显示 BFrag public void showBFrag Start a new FragmentTransaction FragmentTransaction fragmentTransact
  • 如何在Android手机上而不是模拟器上运行或调试?

    Android 模拟器速度太慢 无法测试运行的应用程序 有没有办法使用 IDE 而不是模拟器在真实手机上调试 运行应用程序 通常 您可以在手机上打开 USB 调试 然后通过 USB 将其连接到 PC 然后 手机将以与模拟器相同的方式出现在

随机推荐

  • SQL Server 2008,根据订单类型和订单日期时间将库存分配给销售订单数量

    我根据以下订单类型将库存先进先出分配给销售订单 DECLARE tblOrder TABLE DealerCode NVARCHAR 50 PartCode NVARCHAR 50 OrderQty INT OrderType NVARCH
  • 使用 Newtonsoft.Json 解析 json 时出现 RuntimeBinderException

    我正在尝试将简单的 json 解析为 Windows Phone 8 中的动态对象 我使用 Newtonsoft JSON 库和以下代码 dynamic response JObject Parse responseText string
  • cypress 中的条件语句

    我正在尝试在 cypress 上执行条件语句 以检查标题中的登录链接是否为 登录 或 帐户 或 类 然后单击它 if 条件不起作用 cy get header then header gt if header find Sign in le
  • 错误:文件路径太长

    我正在尝试使用 C 中的各种文件函数 例如File GetLastWriteTime 对放置在大于 Windows 7 上允许的最大路径 即 260 的路径上的文件执行复制命令 它在长路径名上给我一个错误 在 MSDN 支持上 我他们要求使
  • 我可以将 R8G8B8A8 放入 UBO 中,并将其用作 vec4 吗?

    我尝试优化工作计算着色器 它的目的是创建一个图像 找到合适的颜色 使用一个小调色板 然后调用imageStore image ivec2 vec4 颜色在 UniformBuffer 的 uint 数组中进行索引 该 UBO 中的一种颜色封
  • 通过访问路由名称参数来自动化委托权限并检查用户的权限

    我已经为 ACL 层实现了委托角色 现在 我计划自动对每个请求进行权限检查 这样每次我就不必为用户角色编写权限 例如 我有公司资源 用户角色为 管理员 他只能查看公司 另一个用户角色为 超级 可以管理公司 在数据库中 我为他们提供了适当的权
  • Android操作栏自定义图标

    I want to create Action Bar like this 我在开发指南中看到操作栏图标应该具有特定的大小 是否可以 是否可以在操作栏中添加没有可点击指示的项目 我理解您对操作栏图标大小的担忧 我也有同样的担忧 直到我发现这
  • 如何将 ezComponents 与 magento 集成

    在 本机 Zend Framework 应用程序中 我将通过将 ezComponents 的自动加载器添加到 Zends 自动加载器来启用 ezComponents autoLoader Zend Loader Autoloader get
  • 刷新node.js脚本!

    我正在从终端 mac 运行带有 node js 的脚本 当我更改脚本时 我希望能够重新运行它 而不必关闭并重新打开终端 我是 mac 新手 不知道如何执行此操作 Thanks How are you starting Node You sh
  • Python 多重处理和序列化数据

    我正在学校计算机上运行脚本multiprocessing模块 我经常序列化数据 可以用下面的代码来概括 import multiprocessing as mp import time pickle def simulation j dat
  • hibernate和mappedBy:是否可以自动设置外键而不设置对象之间的双向关系?

    Welcome 我有两门课 对话和问题 一场对话有很多问题 对话 java package com jcg jpa mappedBy import java io Serializable import java util ArrayLis
  • 将文档末尾的元素放置在页面顶部

    我有一个div就在之前文档的标签 在文档结束之前 我想使用 CSS 或 JavaScript 在页面顶部显示这个 div 我知道关于position absolute 问题是 如果我使用它 div 将显示在位于顶部的其他内容之上 而不是显示
  • Power Bi Desktop - 如何在表之间添加值?

    我正在尝试创建一个列 该列的总值介于 3 个表中的 3 列之间 我该怎么做呢 这两个表是共享一个 id 的值表 并且它们都通过 Id 链接到帐户表 目标是将 3 列相加 并将其放入按 Id 分组的表中 我尝试对它们进行求和 尝试使用 USE
  • 包含用户名数据的 AutoCompleteCustomSource 不起作用

    我正在尝试创建一个具有自动完成功能的文本框 在我的表单的构造函数中 我从数据库获取数据并设置文本框AutoCompleteCustomSource属性到用户名数组 由于某种原因 自动完成功能不起作用 我确信没有任何问题db getUsers
  • C++ 中指针的地址交换

    如何在具有签名的函数内交换指针地址 比方说 int weight height void swap int a int b 因此 在退出该函数之后 实际参数的地址 weight and height 将被改变 有可能吗 如果要交换指针指向的
  • 为什么不使用 MD5 进行密码哈希处理?

    我有一个朋友 他是白帽黑客 他说 md5 并没有那么糟糕 而且实际上非常安全 只要我们正确使用它 我相信他是对的 据我所知 有3种方法可以破解哈希值 使用彩虹表 可以通过长 随机盐来保护 碰撞 可以通过多种盐或哈希来防止 如下例所示 生成时
  • 使用cmake为vs2013配置cuda项目并得到“无效设备功能”错误

    我使用cmake gui工具在vs2013中配置我的cuda项目 CMakeLists txt如下 project CUDA PART required cmake version cmake minimum required VERSIO
  • 为什么我会收到带有受保护静态成员的 C2248(无法访问的成员)?

    假设我有 include
  • 使 JFormattedTextField 的行为类似于 ATM 输入

    我想知道是否有办法使 JformattedTextField 或 jtextField 表现得像 atm 货币输入 我的意思是你从右到左输入 假设你输入 10 你需要再按 2 个 0 这样它就会是 10 00 当他从右向左打字时 程序会自动
  • 使用 Firebase 的 WebRTC 语音聊天

    我以前从未尝试过 webrtc 我有一个使用 Firebase 制作的应用程序 现在我正在尝试在其中添加语音通话功能 因此尝试搜索一些教程 大多数都使用 PubNub 或大多数教程基于网络应用程序 我看到了这个 stackoverflow