问题标签 [webrtc-android]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
820 浏览

google-chrome - 会话描述为空。在将 Chrome 更新到最新的 v 89 后在 web rtc 中。使用以前的 Chrome 版本

在将 Chrome 更新到最新的 v89(2021 年 3 月 9 日发布)后,SDP 报价的“答案”不会从 Android/iOS 应用程序发送到 Web App(在 Windows/Mac/Linux 上运行)。

它在 Chrome v88 及以下版本上运行良好。

提供 SDP :

Android上的错误日志:

iOS 上的错误日志:

0 投票
1 回答
22 浏览

android - Twilo 6.2.1 远程缩略图不可用

我使用迁移指南升级了我的 Android 应用程序以使用 Twilio Video SDK v6.2.1。该应用程序允许用户通过视频与办公室中的人进行交流;办公端使用 Web 应用程序与它们进行交互。由于将 SDK 版本更新到 6.2.1,该网站不再显示用户的缩略图,但仍然可以看到较大的“主视图”。(是的,应该有大的“主显示屏”和电话用户的冗余缩略图视图。)

是否应在 Android 应用程序中指定某些内容以启用远程端的缩略图?

0 投票
0 回答
77 浏览

android - 无法从 Android 中的信令服务器接收冰候选

我们有一个 webrtc 网络应用程序,它运行良好。对于信令服务器,我们使用 node.js 和 socket.io。我们也有眩晕和转向服务器(我们使用 coturn 作为转向服务器)。我们的信令服务器通过 kurento 客户端与 kurento 媒体服务器(KMS)进行通信。webapp 和 kms 之间的 Offer/Answer 和 icecandidate 是共享的信令服务器。现在我们正在开发一个 Native android 应用程序,并且我们使用的是原生 SDK。创建报价并发送到信令服务器后,我们能够收到答案。但是当我们从安卓客户端发送 icecandidate 时,我们没有收到 kms 的 iceccandidate 作为响应。但是,如果我们复制 web 客户端的报价并通过 andriod 发送,我们开始通过信令服务器接收 kms 的 icecandidate。

我不知道发生了什么,任何帮助或指导将不胜感激。

0 投票
1 回答
262 浏览

android - Android Webrtc 将流更改为 STREAM_MUSIC

我已经创建了一个从一个设备到另一个设备的 WebRTC 会话,该设备应该能够控制音乐流的音量,但是 WebRTC 最初是为流式传输 voice_call 而设计的,因此使用 voice_call 通道并且使用呼叫音量控制对于非通话应用。

我试图在 WebRTC 源WebRtcAudioTrack 中将STREAM_VOICE_CALL 更改为 STREAM_MUSIC以使用流音乐音量,但唯一的变化是 android 将其检测为音乐,但音量随通话音量而变化。

0 投票
0 回答
102 浏览

webrtc - 从 YUV420 ByteBuffer 创建 org.webrtc.JavaI420Buffer

您好我正在开发一个实时流媒体解决方案,我需要编辑本地视频帧并将其发送到连接的对等方,为此我正在编辑 https://webrtc.googlesource.com/src/+/master/sdk/ android/src/java/org/webrtc/Camera2Session.java#201,来自这里的 VideoFrame 被处理到编辑引擎,稍后它返回一个具有以下值的 YUV420 ByteBuffer:

  • 框架宽度=1280
  • 框架高度=720
  • 行步长:1280
  • 行步距U:640
  • 行步长V:640
  • 平面高度Y:720
  • 平面高度U:360
  • 平面高度V:360
  • 平面偏移Y:0
  • 平面偏移U:921600
  • 平面偏移V:1152000
  • 像素步幅Y=1
  • 像素步幅U=1
  • 像素步幅V=1

现在我想根据这些细节重新创建 VideoFrame 对象,我尝试了各种方法来实现这一点,并且几乎非常接近解决方案,只是无法将 Y、U 和 V ByteBuffer 从 ByteBuffer 中分离出来,因此输出有点失真.

在此处输入图像描述

我使用以下代码进行转换:

任何解决此问题的帮助将不胜感激,在此先感谢..!

0 投票
0 回答
142 浏览

webrtc - Webrtc 自定义编解码器并动态更改其配置

在我的 android 项目中,我使用的是org.webrtc:google-webrtc:1.0.32006预建库。

有什么办法可以使用自定义音频编解码器吗?另外,如何在流期间动态更改编解码器配置而不重新创建流/连接?

0 投票
0 回答
100 浏览

android - 在 Android Native App 的 Module 中使用 WebRTC

我想将 webRTC 添加到我的 Android 原生应用程序(Kotlin)中。当我用作单片模块时没有问题,但是当我决定创建模块化应用程序并将每个部分拆分为其模块时,我遇到了添加 webRTc 库(libwebrtc.aar)的问题。添加核心模块新>>模块>>Android库模块>>设置核心模块和...

将 libwebrtc.aar 移动到核心模块内的“libs”文件夹,并将这一行添加到核心模块 build.gradle 文件中

api files('libs/libwebrtc.aar')

为了

我收到不使用此标签的警告,然后我从项目的 build.gradle 文件中评论(删除)它

运行应用程序并显示项目结构时出现错误的图像

0 投票
0 回答
65 浏览

android - Webrtc 需要很长时间才能连接移动数据

我正在使用 Webrtc 创建一个视频通话应用程序。使用 WiFi 一切正常。但是当我切换到移动数据时,该应用程序需要很长时间(35-40 秒)才能建立连接。我检查了日志,发现

如果是 Wifi:

时立即调用

被触发。但是在移动数据的情况下

35-40 秒后调用

叫做。

该代码正在运行,只是在使用移动数据时存在巨大延迟。有人可以帮我解决这个问题。谢谢


编辑:

经过反复测试,有时即使在移动数据上也能正常工作,但一个小时左右后问题再次出现。我真的不知道为什么会这样。

请让我知道是否需要更多代码以供参考

0 投票
0 回答
33 浏览

android - 不支持 640x360 相机分辨率(RealMe 和 RedMi 设备)

我一直在尝试为我的 WebRTC 视频流使用 640x360 (360p) 屏幕分辨率。我的设备(Real Me 5 pro)不支持此分辨率(从 CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP 得知)。当我强制创建一个 640x360 分辨率的相机捕获会话时,它工作正常。如何知道所有支持的分辨率列表以及强制不支持的分辨率创建相机会话的后果是什么?

0 投票
1 回答
188 浏览

android - 640x360(360p) 相机分辨率

在我的 Android 应用程序中,我想使用 16:9 分辨率进行相机预览和通过 WebRTC 调用传输想要使用 360p (640x360),因为它很常见,并且不需要高比特率来传输

我正在使用 Camera2 API。作为最佳实践,我首先确定了设备上支持的分辨率列表,以检查是否支持 360p。验证后,我继续创建 cameraCapturesession

但此检查在某些设备中失败 - Real Me 5 Pro、Redmi Note 7S、redmi note 7(所有运行的 android 版本> = 9)虽然它似乎是一种流行的分辨率,但 360p 在支持的分辨率列表中不可用这些设备

列表是通过 cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(SurfaceTexture.class) 它也不适用于 getOutputSizes(ImageFormat.JPEG)

当我在没有验证支持的分辨率的情况下强制创建 640*360 的 cameraCaptureSession 时,它确实有效 - 它能够捕获 640x360 分辨率。看起来设备相机实际上支持它,但在从 cameraCharacteristics 获取的列表中不可用。

我假设我不能在不进行检查的情况下强制执行此分辨率 - 因为它可能在某些设备中不起作用并且会引发异常/崩溃我想通过选择最接近的 360p 匹配来添加回退 - 要么必须妥协 16:9 要么 1280x720必须选择 - 它需要更高的比特率来传输

我认为 360p 是一种标准分辨率 - 任何可能的原因为什么它没有被列为支持,但在强制时实际上有效?根据我对文档的理解,SCALER_STREAM_CONFIGURATION_MAP 应该返回硬件支持的详尽的分辨率列表我错过了什么吗?请提出解决方案或解决方法