问题标签 [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 回答
1539 浏览

android - 在 Android 应用程序中使用 WebRTC 进行视频流

我正在使用 WebRTC 在我的 android 应用程序和 Web 应用程序之间进行媒体流通信。对于信号,我使用了 socket.io 并使用 socket,我已经建立了 android 应用程序和 Web 应用程序之间的连接。我可以在移动应用程序上发送报价和接收答案,理想情况下,流媒体应该开始,但在我的情况下,它会在网络上抛出这个错误。

我认为这是因为无法与 TURN 服务器建立连接。有人可以帮我弄这个吗。我正在使用这段代码进行 TURN 服务器连接。另外请告诉我如何验证我与 TURN 的连接是否已建立。

这是我试图创建对等连接的一段代码。

如果有人想更好地查看代码,我将分享更多细节。请我需要帮助,因为我什至找不到这方面的文档。

0 投票
0 回答
179 浏览

android - Android WebRTC:从新的 getStats() API 消费数据的标准方式是什么

我使用 getStats(RTCStatsCollectorCallback callback) API 来获取“发送比特率”和“接收比特率”值。

我面临两个问题:

1)。当会议中只有 1 个用户时,有时“发送的比特率”值会变得非常大(以 mbps 为单位)。

2)。当会议中只有 2 个(或更多)用户并且一个用户(不是主持人)共享他的屏幕时,返回的值波动太大(意味着有时它非常小,有时它非常大(以 mbps 为单位))。

我想我在使用新 getStats() API 的数据时遗漏了一些东西。任何帮助或指导将不胜感激。

0 投票
1 回答
1423 浏览

webrtc - WebRTC:如何为视频编码器启用硬件加速

我正在尝试在 WebRTC 的帮助下将屏幕截图的视频发送到 mediasoup。WebRTC 库中有一个类:ScreenCapturerAndroid。它可以工作,但是某些设备上的性能确实很差。特别是如果我使用高清或更好的显示分辨率。

在 stackoverflow 上,我找到了调用setEnableVideoHwAcceleration(true)setVideoHwAccelerationOptions()的建议。但在较新版本的 WebRTC 库中,这些方法已被删除

这是我的代码:

我的问题是:如何使用较新的 WebRTC 库版本为屏幕捕获启用视频硬件加速。

0 投票
0 回答
126 浏览

android - 应用程序在关闭对等连接时崩溃 appRTC android

我已经在我的应用程序中实现了 appRTC,但将其流程更改为一位主持人的多位客人(如会议等)。但是我面临的问题是,当我从主机端断开连接时,应用程序崩溃了。它还在与 SQLite 和约束相关的日志上显示了不同的奇怪异常。我已经为此工作了一周,但找不到任何东西。这次我得到了这个。

2020-08-11 18:10:01.856 19916-19916/? E/SQLiteDatabase:无法打开数据库“/data/user/0/com.facebook.appmanager/databases/androidx.work.workdb”。android.database.sqlite.SQLiteCantOpenDatabaseException:未知错误(代码 14):无法打开数据库

我用来关闭对等连接的代码如下:

和 closeInternal() :

0 投票
1 回答
1827 浏览

android - Android WebRTC 远程流未在 SurfaceView 上显示,获得 0 帧

我正在尝试将我的网络摄像头从计算机上的网页本地流式传输到 Android 应用程序(本机 WebRTC)。我使用 WebRTC 进行对等连接,使用带有 Socket.io 的 NodeJS 进行信号传输。当我启动视频流时,所有 sdp 似乎都已正确设置,但在我的 Andorid 表面视图上没有播放任何曲目。我得到的只是一个黑屏和这个控制台输出:

这是我的代码,对不起,我只是不知道问题的根源在哪里。

Peer 1(网页,JS)

对等 2(Android、Java)

}

0 投票
1 回答
755 浏览

android - Webrtc Android:屏幕共享在 API 29 (Android 10) 上停止工作

在我的面向 Android API 28 的应用中,通过屏幕共享。Webrtc 工作正常。

根据最近的 Google 指南(Target API 29 任务的截止日期是 2020 年 11 月 2 日),今天我已将targetSdkVersioncompileSdkVersion更改为Android API 29,反过来,屏幕共享停止工作。

任何帮助或指导将不胜感激。

0 投票
1 回答
422 浏览

android - 连接耳机时,WebRTC android应用程序正在创建回声

设备之间正在建立对等连接,并且任何一方的人都能够进行通信。任何一个或两个设备都使用EARPIECE时不会出现任何问题。

当两个设备都使用EARPHONESINBUILT_SPEAKER进行音频通信时,就会出现问题。

依赖:'org.webrtc:google-webrtc:1.0.30039'

我已经尝试过以下选项

选项1

选项-2

请帮我弄清楚缺少什么。我怎样才能消除或减少这种回声?

0 投票
0 回答
585 浏览

java - 当我以横向/反向横向启动 Activity 时,Android webrtc SurfaceViewRenderer 预览变为空白

我正面临这个奇怪的问题,SurfaceViewRenderer每当我在横向/反向横向/传感器横向中运行活动时,预览就会变为空白。奇怪的问题是,在某些手机中,视频预览在反向横向模式和某些手机横向模式下工作。例如,当我在 中运行活动时Android 5.0,横向模式下的视频预览工作正常,但在反向横向模式下却不行。然后我尝试在我正在运行的 Oneplus 手机上做同样的事情Android 10。在这里,SurfaceViewRenderer 中的视频预览在反向横向模式下工作正常,但在横向模式下不行。

注意:即使预览变为空白,远程流也可以正常工作,只有视频预览不起作用。它以某种方式无法更新SurfaceViewRenderer但没有问题流向远程参与者。

这就是我初始化视频预览的方式。

我的摄像机设置以预览和流式传输

这就是我创建相机捕捉器的方式

这是我在清单文件中声明的活动。

我试图检查CameraX预览是否会发生这种情况。CameraXandroidx.camera.view.PreviewView视频预览中使用在各种方向上都可以正常工作。但是SurfaceViewRenderer视频预览不起作用。

在这方面的任何帮助将不胜感激。提前致谢。

0 投票
0 回答
215 浏览

ios - WebRTC iOS 原生 SDK 长期冻结

我正在开发一个 iOS 应用程序,该应用程序使用 WebRTC 的本机 SDK 来提供对来自不同摄像机的流的访问。使用的编解码器是 H264/AVC。

尽管大多数相机流都可以正常工作,但有些相机流在首次启动时会一直冻结。看起来这些帧没有被解码,但我不确定如何修复它。

当我启用调试日志记录时,我在 WebRTC 的日志中看到很多以下内容:

(rtp_frame_reference_finder.cc:240):数据包范围为 [21170, 21170] 的通用帧没有 GoP,丢帧。(rtp_frame_reference_finder.cc:240):数据包范围为 [21169, 21169] 的通用帧没有 GoP,丢帧。(video_receive_stream.cc:699):200 毫秒内没有可解码帧,请求关键帧。
(video_receive_stream.cc:699):200 毫秒内没有可解码帧,请求关键帧。

当出现冻结时,从不会调用video_broadcaster.cc上的VideoBroadcaster::OnFrame ,这会阻止整个流流启动。当我在 Xcode 上测试并暂停/取消暂停调试器时,几乎总是流将开始工作,我看到VideoBroadcaster::OnFrame被触发并且帧开始被解码。因此,暂停/取消暂停过程以某种方式解决了问题并启动了流。

在从未设置编码器的 iOS SDK 上。我使用了SDK提供的RTCVideoEncoderFactoryH264编码器。我已经为接口/协议RTCVideoEncoderFactory提供了实现,并尝试覆盖 SDK 中的编码器。在所有这些情况下,都不会调用createEncoder()函数。但是,解码器没有问题,它设置正确。

RTCInboundRTPVideoStream统计报告中,PLICountNACKCount正在稳步增加。我的理解是接收器让其他对等方知道编码视频中存在图片丢失。

由于我不知道究竟是什么阻止了帧被解码,所以我想在 PLICount 或 NACKCount 增加时重新启动流。

如果不经历整个 SDP 提供/回答过程,我怎么能做到这一点?我看到的唯一方法是切换RTCMediaStreamTrack上的isEnabled标志,但这并不能解决我的问题。

我可以更新任何编码/解码参数以重新启动流吗?
暂停/取消暂停修复问题的调试器的原因可能是什么?

0 投票
0 回答
223 浏览

reactjs - Web RTC 本地音频问题

我正在尝试实现一个基于 webrtc 的视频聊天室,但遇到了以下问题。
当呼叫开始并且我的本地流开始时,我会在其他设备接收之前在我的设备上收听我的音频。这些设备相距足够远,因此回声不会影响它们。我不知道这是不是因为我做错了什么,或者总是这样。我感谢任何建议。