问题标签 [webrtc-ios]

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 投票
2 回答
388 浏览

swift - 如何在 Swift 中获取 WebRTC iOS SDK 中的 getStats()?

我正在尝试在 Swift 的 iOS SDK 中获取 ICE 候选配对统计信息。我看到了这个特定的界面:statsForTrack但我不确定如何使用它。以前有人做过吗?

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 投票
2 回答
388 浏览

swift - GoogleWebRTC 在 swift 本机应用程序 (OpenVidu) 中挂起(冻结)主线程

我们的 iOS (swift) 本机应用程序带有OpenVidu实现(在后台使用GoogleWebRTC ),我们遇到了挂起问题(应用程序由于主线程锁定而冻结)。所需的具体条件:需要加入现有房间,至少有 8 名参与者已经在直播。有 6 名参与者时,这种情况发生的频率较低,而且几乎从来没有少于 6 人。如果参与者一一加入,它不会挂起,只有当您加入房间时所有其他参与者都已经流式传输。这表明问题的并发性质。

GoogleWebRTCsetRemoteDescription待命:

主线程挂起

正如您在上面的屏幕截图中看到的那样,主线程挂起__psynch_cvwait。似乎没有任何其他线程被锁定。锁永远不会释放,使应用程序完全冻结。

在尝试解决它时,我尝试了以下方法:

  1. 我将 OpenVidu 信令服务器处理(RPC 协议)从主线程移到单独的线程中。这仅导致锁定现在发生在我创建的单独线程之一中。它现在不会阻塞 UI,但会阻塞 OV 信号。问题仍然存在。

  2. 我添加了锁以同步(一个接一个)处理每个信令事件(参与者加入事件、发布视频等)。这也无济于事(它实际上使情况变得更糟)。

  3. 我没有使用来自 Cocoapods 的 GoogleWebRTC v. 1.1.31999,而是下载了最新的 GoogleWebRTC 源,在发布配置中构建它们并包含在我的项目中。这无助于解决问题。

任何建议/意见将不胜感激。谢谢!

编辑1:

signaling_threadand are 都在worker_thread等待同一种锁中的东西。在锁定的那一刻,它们都没有执行我的任何代码。

我还尝试在 DEBUG build of 中运行GoogleWebRTC,在这种情况下不会发生任何锁定,但一切都会慢得多(这对于调试来说是可以的,但我们不能在生产环境中使用它)。

在此处输入图像描述

编辑2:

我试图包装额外DispatchQueue的 foroffersetLocalDescription回调,但这没有任何改变。问题仍然可以很好地重现(几乎 100% 的时间,如果我有 8 个参与者有流):

0 投票
0 回答
176 浏览

ios - AirPlay HTML5 视频不播放视频,只播放音频

我有一个<video></video>通过 Javascript 获取 src 的。我们正在使用 Millicast 和 WebRTC 来连接和附加找到的提要。

在浏览器中加载时,会出现一个 Airplay 图标,并通过 iPhone 连接到我们的三星电视。但是,它看起来像是在播放音频播放列表。音频质量很好,连接也很牢固。

JS 比我在下面提供的要多,但视频元素的附件是:

除了允许 Apple 设备识别和播放视频的 srcObject 之外,我还需要添加什么吗?

0 投票
0 回答
134 浏览

ios - webrtc 原生 ios usb 耳机

我们正在尝试使用原生 webrtc 库(来自 cocoapods)在 ios 上使用 USB 耳机(扬声器+麦克风)

以下代码激活 USB 麦克风:

但是我们的 USB 扬声器没有任何输出

任何提示?

0 投票
1 回答
292 浏览

ios - iOS WebRTC网状视频电话会议内存增加问题

在此处输入图像描述问题: 我正在处理 4 人的 iOS WebRTC 网格电话会议,在运行 5 或 6 分钟的视频电话会议后,内存大小正在增加,整个应用程序挂起。

场景: 仅音频或仅视频(无音频)的 4 人电话会议工作正常。但在视频电话会议上面临 4 人的内存大小增加问题。

我们在做什么:

  1. 我们使用非常低的比特率和帧以及默认的视频编解码器。

分析器屏幕截图:

4 人使用以下配置: 最小比特率:10000 最大比特率:40000 当前比特率:20000

我们通过以下方式使用设备的最低分辨率:

}

0 投票
1 回答
110 浏览

swift - IOS Swift WebRtc insertDtmf 问题

我正在构建一个通过 websocket 和 webrtc 与 janus 网关一起使用的应用程序。一切正常,我可以成功发送和接收语音呼叫,但 insertDtmf 方法不会将我的 dtmf 发送给其他对等方。android中相同的帐户和相同的代码可以正常工作。这是我准备webrtc的地方

在这里我尝试发送 dtmf

0 投票
1 回答
127 浏览

mobile-safari - 如何在 iOS Safari 上使用 Daily.co 录制麦克风同时进行视频通话

问题

使用 iPad 的 iOS Safari,我可以使用Daily.co 的视频 API调用其他设备。但是,当我开始通过audio-recorder-polyfill 库录制本地麦克风时,其他人将不再能够听到我的声音,即使我仍然可以听到他们的声音并共享我的相机。即使录音会话结束,音频通话仍然中断(尽管录音机工作正常)。

它似乎是特定于 iOS 的,因为我的 Surface 的 Windows Chrome 没有问题。

如何重现

大约需要2分钟

  1. 使用 iPad Safari 和任何其他设备访问explain.mit.edu 。按下绿色呼叫按钮。
  2. 确认视频通话正常后,按 iPad 上的录制按钮
  3. 请注意,其他设备无法再听到任何声音

我试过的

首先,我猜想 MediaRecorder 会使 Daily 视频通话对麦克风的访问无效,所以我曾经setLocalDevice每隔 5 秒重新指定对 Daily 的访问,看看会发生什么。在录制过程中没有任何区别,但是当录制结束时,它确实恢复了音频通话。

所以剩下的问题是音频调用流在录制过程中不起作用:我阅读了有关 MediaCapture API 的 MDN 文档,它提到一个流有一个输入和一个输出,但我不知道那是什么手段,以及是否可以由两个“事物”同时访问一个麦克风流。

相关代码

我只使用 Daily 和 audio-recorder-polyfill 提供的基本最小 API

视频通话(完整代码在这里

录音(完整代码在这里

我不相信这个问题是在其他地方引起的,但如果需要,这里是完整的存储库代码

真实世界的上下文 对于上下文,我在https://explain.mit.edu上工作。你去那里寻求帮助,然后其他人会到达并使用实时黑板和语音聊天向你解释一些事情 - 并且作为副产品制作了 KhanAcademy 视频。但是现在如果有人按下“录音”,语音聊天将停止工作。

0 投票
0 回答
58 浏览

ios - React Native Xcode WebRTC 在发布模式下不编译

我正在使用 WebRTC 开发一个反应原生 iOS 应用程序。我正在使用调试模式(来自 Xcode)还没有问题。今天,我在 Xcode 上将构建配置从调试切换到发布,现在我遇到了构建错误,即:

我卸载并重新安装了所有 webrtc 单元,再次使用 pod install 并没有任何改变。我可以在调试模式下构建和运行应用程序,但不能在发布模式下运行。

Xcode 版本:12.5.1 IOS 版本:14.4.2(Iphone XS,不是模拟器)

0 投票
3 回答
849 浏览

ios - 无法在启用 Bitcode 的情况下构建 Webrtc

我正在尝试在启用 Bitcode 的情况下重建 WebRTC iOS 框架,但它不工作它给了我错误。错误信息是

clang++:错误:未知参数:'-ffile-compilation-dir=.'

clang++:错误:-fembed-bitcode 不支持 -gdwarf-aranges

如果我在没有 bitcode enable true 的情况下构建它,那么它就可以工作。谁能知道我为什么会遇到这个问题?我的 Xcode 版本是 12.5.1