处理 WebRTC 会话的眩光控制解决方案,在会话启动或应答时抓取媒体 (getusermedia)。
会话的双方(A 端和 B 端)同时发起会话,导致双方在等待 SDP 应答时收到 SDP 提议。
我使用的解决方案是将唯一的令牌分配给每个信令通道(即,A 侧和 B 侧具有不同的令牌)并使用类似于 ISUP 来执行眩光控制(例如,较低或较高侧令牌获胜)。
我使用的实际机制,并且似乎有效,是基于允许继续会话启动并忽略远程 SDP Offer 和远程端创建新 PeerConnection 然后处理两者中较低令牌的一方收到有关新 PeerConnection 的报价,并在准备好连接到新 PC 时附加其媒体。随后处理来自允许发起方的 ICE 候选者。
问题是 - 使用新 PC 处理收到的报价是否有任何不利或危险?(失败方试图启动的原始 PC 被丢弃,我假设在某个时候收集了垃圾)。
因此,可能(虽然我不确定)有问题的是,我目前不会删除在 SDP Offer 之后到达的 ICE 候选者,假设这些 ICE 候选者仍然有效,则忽略该候选者。
但对此的任何想法都非常感谢。
首先,我不清楚是否适当引用其他代码的链接,如果是这样的道歉并且想了解对于我引用库的这种情况可能有什么更合适的机制(这些链接主要是作为对相关方的引用而提供的) ).
我们有一个用于android的webrtc本机应用程序,在调用peerconnectionfactory的配置时会遇到困难.当用户选择结束活动会话时,我们有一个清理例程,关闭对等连接,然后处理它(虽然关闭并不是必需的,因为对dispose的调用也会在释放其他资源之前关闭连接 - 例如,例如流和本地观察者 - 参见libjingle - talk/app/webrtc/java/src/org/webrtc/PeerConnection.java).在我们的例子中,peerconnectionfactory的创建由通过runnable创建的线程执行,而工厂的处理是从主UI线程执行的.
这是我们遇到问题的地方 - 也就是说,当试图处理peerconnectionfactory时,应用程序崩溃了.
在审查与webRTC演示代码相关的帖子(请参阅https://chromium.googlesource.com/external/webrtc/+/master/webrtc/examples/androidapp/src/org/appspot/apprtc)时,他们似乎没有这个问题.
此外,在查看对等连接工厂实现的本机代码时(请参阅https://code.google.com/p/chromium/codesearch#chromium/src/third_party/webrtc/api/peerconnectionfactory.cc中的 peerconnectionfactory.cc )查看对等连接工厂析构函数的工作线程的展开和删除.
此外,在审查铬webrtc问题列表时,我们看到几个问题(例如https://bugs.chromium.org/p/webrtc/issues/detail?id=3100或4196)让人相信特别关注需要相对于使用peerconnectionfactory时要使用的线程/循环模型.
因此,我的基本问题是,从不同的线程创建peerconnectionfactory时是否存在问题,以及是否存在用于管理peerconnectionfactory的特定线程/循环要求集.
谢谢,
几年前实现了一种机制,用于通过数据通道消息发出信号,表明远程用户将其本地视频静音(例如,将启用设置为 false),然后在远程端采取适当的操作(例如,改为显示远程用户头像)的黑色视频流),我一直在对一个非直接相关的功能进行一些测试,这让我查看了视频轨道的状态(即对等连接的接收流上的视频轨道),并且我注意到远程视频的静音状态有时会在 true 和 false 之间波动(尽管远程流本身没有实际变化)。
很难确切地说这种情况何时发生,但似乎它可能(不知道是否确实如此)与长时间不将媒体附加到对象(例如,用于播放的 HTML 视频元素)相关(例如,10 秒),并且似乎如果在短时间内附加,则视频轨道在接收端不会显示 muted=true 的状态。
W3 媒体捕获和流规范(请参阅https://w3c.github.io/mediacapture-main/#track-muted)“当源暂时无法向轨道提供数据时,MediaStreamTrack 将静音。轨道可以由用户静音。通常此操作超出应用程序的控制范围。这可能是由于用户按下硬件开关或切换操作系统/浏览器镶边中的控件造成的。用户也可以将曲目静音代理人。” 该规范似乎没有解决造成这种情况的原因或可能的原因。
就 webRTC 而言,任何人都可以提供一些指示,说明为什么当来自远程的媒体实际流动时,从 webrtc 对等连接引用的远程视频流可能会显示静音状态 true。此外,当远程视频流上的静音状态实际上并不反映远程状态而是反映某些本地处理时,它的实际价值或用途可能是什么。
感谢您对此的任何想法。
大量(尽管不是全部)Android设备支持H.264视频编解码器的硬件加速,但不支持VP8/VP9编解码器.为了提供更高质量的用户体验,我们希望尽可能选择硬件加速的编解码器.因此,希望运行时检测特定设备是否具有H.264硬件加速支持,并且基于此将设置在SDP中用于webRTC对等连接的会话协商的特定编解码器.即,如果硬件支持H.264,则将其设置为优先级较高的编解码器而不是VP8/VP9.对此的任何想法将不胜感激.
webrtc ×4
android ×2
browser ×1
java ×1
libjingle ×1
mediacodec ×1
mediastream ×1
sdp ×1
session ×1