Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebRTC Android-createPeerConnection()始终返回null_Android_Webrtc - Fatal编程技术网

WebRTC Android-createPeerConnection()始终返回null

WebRTC Android-createPeerConnection()始终返回null,android,webrtc,Android,Webrtc,我是Android和WebRTC的新手,我一直在努力在网站和我的Android设备之间建立p2p视频连接。我已经让这两个网站之间的工作,所以我相当肯定我的问题在于安卓方面 当我尝试使用PeerConnectionFactory.createPeerConnection()创建新的PeerConnection对象时,结果总是空的。我正在使用WebRTC的版本vesion M58 PeerConnection.IceServer iceServer = new PeerConnection.IceS

我是Android和WebRTC的新手,我一直在努力在网站和我的Android设备之间建立p2p视频连接。我已经让这两个网站之间的工作,所以我相当肯定我的问题在于安卓方面

当我尝试使用PeerConnectionFactory.createPeerConnection()创建新的PeerConnection对象时,结果总是空的。我正在使用WebRTC的版本vesion M58

PeerConnection.IceServer iceServer = new PeerConnection.IceServer("http://stun.stun.l.google.com:19302/");
List<PeerConnection.IceServer> servers = new ArrayList<PeerConnection.IceServer>();
servers.add(iceServer);

// Media Constraints
final MediaConstraints mediaConstraints = new MediaConstraints();
mediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true"));
mediaConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveVideo", "true"));
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"));

// Set up remote rendering stuff
rootEGLBase = EglBase.create();
svr = (SurfaceViewRenderer) findViewById(R.id.remote_video);
svr.init(rootEGLBase.getEglBaseContext(), null);
svr.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
svr.setZOrderMediaOverlay(true);
svr.setEnableHardwareScaler(true);

remoteProxyRenderer.setTarget(svr);
remoteRender = remoteProxyRenderer;

// Create a peer connection factory
PeerConnectionFactory.initializeAndroidGlobals(this.ctx, true);
PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
options.networkIgnoreMask = 0;

PeerConnectionFactory peerConnectionFactory = new PeerConnectionFactory(options);

// wait until my websocket has connected
System.out.println("waiting for websocket to be inited...");
while (this.ws == null);
System.out.println("done wait");
final WebSocket in_scope_ws = this.ws;

// create peer connection observer
PeerConnection.Observer pcObserver = new PeerConnection.Observer() {/* not included - mostly just prints */};

// Create peerconnection
final PeerConnection peerConnection = peerConnectionFactory.createPeerConnection(servers, mediaConstraints, pcObserver);

您需要创建LocalMediaStream并设置videoHeight videoWidth、createVideoSource和createAudioSource
在创建PeerConnection之前。

可以启用详细日志记录来跟踪问题

org.webrtc.Logging.enableLogToDebugOutput(Logging.Severity.LS_VERBOSE);

另外,请确保您已授予所需的运行时权限(摄像头、录制)

另一个问题是
createPeerConnection()
返回null可能是由于
IceServer
的配置错误,请确保您设置了正确的
IceServer
和正确的凭据。

谢谢!我试试看。我只需要单向视频,所以我是否只创建本地媒体流而忽略它?还是我只是把它寄出去,相信另一端不会对它做任何事?
org.webrtc.Logging.enableLogToDebugOutput(Logging.Severity.LS_VERBOSE);