问题标签 [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.
swift - 如何在 Swift 中获取 WebRTC iOS SDK 中的 getStats()?
我正在尝试在 Swift 的 iOS SDK 中获取 ICE 候选配对统计信息。我看到了这个特定的界面:statsForTrack
但我不确定如何使用它。以前有人做过吗?
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 上的错误日志:
swift - GoogleWebRTC 在 swift 本机应用程序 (OpenVidu) 中挂起(冻结)主线程
我们的 iOS (swift) 本机应用程序带有OpenVidu实现(在后台使用GoogleWebRTC ),我们遇到了挂起问题(应用程序由于主线程锁定而冻结)。所需的具体条件:需要加入现有房间,至少有 8 名参与者已经在直播。有 6 名参与者时,这种情况发生的频率较低,而且几乎从来没有少于 6 人。如果参与者一一加入,它不会挂起,只有当您加入房间时所有其他参与者都已经流式传输。这表明问题的并发性质。
GoogleWebRTCsetRemoteDescription
待命:
正如您在上面的屏幕截图中看到的那样,主线程挂起__psynch_cvwait
。似乎没有任何其他线程被锁定。锁永远不会释放,使应用程序完全冻结。
在尝试解决它时,我尝试了以下方法:
我将 OpenVidu 信令服务器处理(RPC 协议)从主线程移到单独的线程中。这仅导致锁定现在发生在我创建的单独线程之一中。它现在不会阻塞 UI,但会阻塞 OV 信号。问题仍然存在。
我添加了锁以同步(一个接一个)处理每个信令事件(参与者加入事件、发布视频等)。这也无济于事(它实际上使情况变得更糟)。
我没有使用来自 Cocoapods 的 GoogleWebRTC v. 1.1.31999,而是下载了最新的 GoogleWebRTC 源,在发布配置中构建它们并包含在我的项目中。这无助于解决问题。
任何建议/意见将不胜感激。谢谢!
编辑1:
signaling_thread
and are 都在worker_thread
等待同一种锁中的东西。在锁定的那一刻,它们都没有执行我的任何代码。
我还尝试在 DEBUG build of 中运行GoogleWebRTC
,在这种情况下不会发生任何锁定,但一切都会慢得多(这对于调试来说是可以的,但我们不能在生产环境中使用它)。
编辑2:
我试图包装额外DispatchQueue
的 foroffer
和setLocalDescription
回调,但这没有任何改变。问题仍然可以很好地重现(几乎 100% 的时间,如果我有 8 个参与者有流):
ios - AirPlay HTML5 视频不播放视频,只播放音频
我有一个<video></video>
通过 Javascript 获取 src 的。我们正在使用 Millicast 和 WebRTC 来连接和附加找到的提要。
在浏览器中加载时,会出现一个 Airplay 图标,并通过 iPhone 连接到我们的三星电视。但是,它看起来像是在播放音频播放列表。音频质量很好,连接也很牢固。
JS 比我在下面提供的要多,但视频元素的附件是:
除了允许 Apple 设备识别和播放视频的 srcObject 之外,我还需要添加什么吗?
ios - webrtc 原生 ios usb 耳机
我们正在尝试使用原生 webrtc 库(来自 cocoapods)在 ios 上使用 USB 耳机(扬声器+麦克风)
以下代码激活 USB 麦克风:
但是我们的 USB 扬声器没有任何输出
任何提示?
swift - IOS Swift WebRtc insertDtmf 问题
我正在构建一个通过 websocket 和 webrtc 与 janus 网关一起使用的应用程序。一切正常,我可以成功发送和接收语音呼叫,但 insertDtmf 方法不会将我的 dtmf 发送给其他对等方。android中相同的帐户和相同的代码可以正常工作。这是我准备webrtc的地方
在这里我尝试发送 dtmf
mobile-safari - 如何在 iOS Safari 上使用 Daily.co 录制麦克风同时进行视频通话
问题
使用 iPad 的 iOS Safari,我可以使用Daily.co 的视频 API调用其他设备。但是,当我开始通过audio-recorder-polyfill 库录制本地麦克风时,其他人将不再能够听到我的声音,即使我仍然可以听到他们的声音并共享我的相机。即使录音会话结束,音频通话仍然中断(尽管录音机工作正常)。
它似乎是特定于 iOS 的,因为我的 Surface 的 Windows Chrome 没有问题。
如何重现
大约需要2分钟
- 使用 iPad Safari 和任何其他设备访问explain.mit.edu 。按下绿色呼叫按钮。
- 确认视频通话正常后,按 iPad 上的录制按钮
- 请注意,其他设备无法再听到任何声音
我试过的
首先,我猜想 MediaRecorder 会使 Daily 视频通话对麦克风的访问无效,所以我曾经setLocalDevice
每隔 5 秒重新指定对 Daily 的访问,看看会发生什么。在录制过程中没有任何区别,但是当录制结束时,它确实恢复了音频通话。
所以剩下的问题是音频调用流在录制过程中不起作用:我阅读了有关 MediaCapture API 的 MDN 文档,它提到一个流有一个输入和一个输出,但我不知道那是什么手段,以及是否可以由两个“事物”同时访问一个麦克风流。
相关代码
我只使用 Daily 和 audio-recorder-polyfill 提供的基本最小 API
视频通话(完整代码在这里)
录音(完整代码在这里)
我不相信这个问题是在其他地方引起的,但如果需要,这里是完整的存储库代码
真实世界的上下文 对于上下文,我在https://explain.mit.edu上工作。你去那里寻求帮助,然后其他人会到达并使用实时黑板和语音聊天向你解释一些事情 - 并且作为副产品制作了 KhanAcademy 视频。但是现在如果有人按下“录音”,语音聊天将停止工作。
ios - React Native Xcode WebRTC 在发布模式下不编译
我正在使用 WebRTC 开发一个反应原生 iOS 应用程序。我正在使用调试模式(来自 Xcode)还没有问题。今天,我在 Xcode 上将构建配置从调试切换到发布,现在我遇到了构建错误,即:
我卸载并重新安装了所有 webrtc 单元,再次使用 pod install 并没有任何改变。我可以在调试模式下构建和运行应用程序,但不能在发布模式下运行。
Xcode 版本:12.5.1 IOS 版本:14.4.2(Iphone XS,不是模拟器)
ios - 无法在启用 Bitcode 的情况下构建 Webrtc
我正在尝试在启用 Bitcode 的情况下重建 WebRTC iOS 框架,但它不工作它给了我错误。错误信息是
clang++:错误:未知参数:'-ffile-compilation-dir=.'
clang++:错误:-fembed-bitcode 不支持 -gdwarf-aranges
如果我在没有 bitcode enable true 的情况下构建它,那么它就可以工作。谁能知道我为什么会遇到这个问题?我的 Xcode 版本是 12.5.1