- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我必须在 android 应用程序中实现 WebRTC,因为我正在使用 libjingle
库,ver-11139。在这里我总是得到 pc(PeerConnection class instance)
总是空的。我检查了值
factory(PeerConnectionFactory)
iceServers(LinkedList<IceServers>
mediaConstraints
Peer.this(PCObserver interface))
但它们都不为空。那为什么我总是得到空的结果。我在这里做错了吗???
pc = factory.createPeerConnection(iceServers, mediaConstraints, Peer.this);
编辑:
public CallManager(TagoveApplication context, CustomSocket server, CallType callType) {
this.server = server;
this.context = context;
initializeFactoryFieldTrials(); //initialize peer conn factory field trials
PeerConnectionFactory.initializeAndroidGlobals(context, true, true, true);
//PeerConnectionFactory.initializeAndroidGlobals(context, true, true, true, VideoRendererGui.getEGLContext());
factory = new PeerConnectionFactory();
iceServers.add(new PeerConnection.IceServer("turn:xxx.xxx.xxx.xxx:xxxx?transport=udp", "xxxxxxxx", "xxxxxxxxx"));
iceServers.add(new PeerConnection.IceServer("stun:stunserver.org"));
iceServers.add(new PeerConnection.IceServer("stun:stun.ekiga.net"));
iceServers.add(new PeerConnection.IceServer("stun:stun.fwdnet.net"));
iceServers.add(new PeerConnection.IceServer("stun:stun.ideasip.com"));
iceServers.add(new PeerConnection.IceServer("stun:stun.iptel.org"));
iceServers.add(new PeerConnection.IceServer("stun:stun.rixtelecom.se"));
iceServers.add(new PeerConnection.IceServer("stun:stun.schlund.de"));
pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true"));
pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveVideo", "true"));
pcConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));
this.callType = callType;
}
创建 Peer 构造函数:
public Peer(
String label,
PeerConnectionFactory factory,
LinkedList<PeerConnection.IceServer> iceServers,
MediaConstraints mediaConstraints,
PeerCallbacks peerCallbacks,
StreamChangeListener listener,
boolean incoming){
this.label=label;
this.peerCBacks=peerCallbacks;
//Create Peer connection using RTCConfiguration
Log.d("PCTest","Peer factory value - "+String.valueOf(factory));
Log.d("PCTest","ice servers size - "+iceServers.size());
Log.d("PCTest","media constraints - "+String.valueOf(mediaConstraints));
PeerConnection.RTCConfiguration rtcConfig = new PeerConnection.RTCConfiguration(iceServers);
rtcConfig.bundlePolicy = PeerConnection.BundlePolicy.MAXBUNDLE;
rtcConfig.rtcpMuxPolicy = PeerConnection.RtcpMuxPolicy.REQUIRE;
rtcConfig.keyType = PeerConnection.KeyType.ECDSA;
Log.d("","");
this.pc = factory.createPeerConnection(rtcConfig, mediaConstraints, this);
Log.d("PCTest","Peer constructor called pc value - "+String.valueOf(this.pc));
this.streamListener=listener;
log("new +"+" "+label+ " "+(peerCallbacks!=null? "notNull":"issNull")+" ++ "+incoming);
}
最佳答案
答案是针对官方 webRTC android API compile 'org.webrtc:google-webrtc:1.0.+'
在创建 IceServers 时,你应该使用正确的 TlsCertPolicy
。如果您的 stun/turn 服务器不安全,例如:stun:stun1.l.google.com:19302
而不是 stuns:stun1.l.google.com:19302
那么您应该将 TLS 证书策略设置为 TLS_CERT_POLICY_INSECURE_NO_CHECK
。可以使用 IceServerBuilder 以这种方式完成:
List<PeerConnection.IceServer> iceServers = new ArrayList<>();
PeerConnection.IceServer.Builder iceServerBuilder = PeerConnection.IceServer.builder("stun:stun1.l.google.com:19302");
iceServerBuilder.setTlsCertPolicy(PeerConnection.TlsCertPolicy.TLS_CERT_POLICY_INSECURE_NO_CHECK); //this does the magic.
PeerConnection.IceServer iceServer = iceServerBuilder.createIceServer();
iceServers.add(iceServer);
localPeer = peerConnectionFactory.createPeerConnection(iceServers, sdpConstraints,sdpObserver);
关于android - android 中的 PeerConnection 实例始终为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38762061/
我正在尝试创建报价,但我得到的 sdp-offer 不完整,如下所示 sdp: "v=0↵o=- 981077471509521330 2 IN IP4 127.0.0.1 ↵s=- ↵t=0 0 ↵
这个问题在这里已经有了答案: How to set remote description for a WebRTC caller in Chrome without errors? (1 个回答)
我正在为 Android 开发 WebRTC。并成功创建和建立 session 。使用单个 MediaStream 和多个 PeerConnection。 现在我想找到一个更好的方法,其中之一就是中继
我想要的是,基本上,在同一本地网络上的两台不同计算机之间创建连接。但我想通过计算机的本地 IP 来做到这一点。 (如 192.168.2.23 等) 这必须是完全本地连接。没有 TURN 或 STUN
我正在开发一个 WebRTC 客户端,我希望允许客户端修改正在进行的音频/视频 session 以添加或删除音频或视频流。 因此,例如,如果两个客户端之间正在进行音频/视频通话,则一个客户端可以修改
嘿,我想知道在 WebRTC 中创建报价/答案时是否有任何方法可以选择编解码器。目前可供选择的视频编解码器并不多,但有音频编解码器,如 Opus、PCMU、PCMA 等。 最佳答案 一般来说,是的。这
有没有办法在对等连接已经建立时创建数据通道? 这是我正在做的事情: peerConnection.onstatechange = function(event){ var state
我必须在 android 应用程序中实现 WebRTC,因为我正在使用 libjingle 库,ver-11139。在这里我总是得到 pc(PeerConnection class instance)
有没有办法以编程方式获取有关 WebRTC 中使用的连接类型的信息? 例如,在我的应用程序中,我使用本地连接以及 STUN 和 TURN。如果候选类型是主机或中继,我可以从 ICE 候选中收集,并且在
阅读有关 Webrtc 的信息,我感觉“它将显着降低服务器带宽的使用”,除了“一些角落的企业防火墙案例”,其中需要一个 TURN 服务器来中继对等方之间的整个流量。 例如,虽然与 webrtc 无关,
目标: 使用 webRTC(无视频或音频)在网页上创建一个非常基本的文本聊天室。首先,我不关心创建聊天室、拥有用户名或支持大量连接。我只想将其设置为支持前 2 个人访问该网页,以便他们可以发送/查看消
这个问题已经有答案了: WebRTC video is not displaying (1 个回答) 已关闭 4 年前。 我正在尝试附加使用 getusermedia() 捕获的流上startPeer
我可以为一个 PeerConnection 创建多个数据 channel 吗? 您能否提供有关如何实现的示例,否则无法实现的原因? 最佳答案 是的,您可以在单个对等连接上创建多个数据 channel
我已经为 android 构建了 webrtc,并将 jar 文件包含在我的项目中。我想将数据通道附加到我的 PeerConnection 对象。在网络上,我们在 javascript 中执行以下操作
我正在尝试让 ubuntu 上的 WebRTC PeerConnection 客户端与 nodejs 一起工作。 首先我尝试了 wrtc ( https://github.com/js-platfor
我正在尝试实现纯语音 WebRTC 应用程序。我在 Chrome Version 29.0.1547.0 dev 上运行它。我的应用使用 Socket.IO 作为信号机制。 peerConnectio
我已经用尽了所有可能来让稳定的 WebRTC 实现正常工作,并且希望得到一些建议。 处理跨浏览器工作连接的所有可能解决方案都已考虑在内,例如: 在 Chrome 浏览器上发送 SDP 之前等待所有候选
onremovestream已弃用(并从 Firefox 中删除),而 onremovetrack尚未在 Firefox 中实现。 如何检测何时在 Firefox 中删除流或轨道? 最佳答案 您使用
我一直在玩 WebRTC 并阅读它的工作方式,但我仍然完全不知道在点连接方面到底发生了什么。如果视频 session 中有太多参与者而没有某种中央服务器,如果他们都必须相互连接,那么流的路由方式是否会
我创建了一个应用程序,我可以在其中使用 webRTC peerConnection api 在两个客户端之间开始视频 session 。 我使用 node.js服务器端脚本和用于套接字实现的 sock
我是一名优秀的程序员,十分优秀!