@Override public void onRemoveRemoteStream(int endPoint) { VideoRendererGui.update(localRender, LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING, LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING, scalingType, false); }
private VideoCapturer getVideoCapturer() { String frontCameraDeviceName = VideoCapturerAndroid.getNameOfFrontFacingDevice(); return VideoCapturerAndroid.create(frontCameraDeviceName); } }
/** * Call this method in Activity.onPause() */ public void onPause() { if (videoSource != null) videoSource.stop(); }
private void setCamera() { localMS = factory.createLocalMediaStream("ARDAMS"); if (pcParams.videoCallEnabled) { MediaConstraints videoConstraints = new MediaConstraints(); videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxHeight", Integer.toString(pcParams.videoHeight))); videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxWidth", Integer.toString(pcParams.videoWidth))); videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("maxFrameRate", Integer.toString(pcParams.videoFps))); videoConstraints.mandatory.add(new MediaConstraints.KeyValuePair("minFrameRate", Integer.toString(pcParams.videoFps))); videoSource = factory.createVideoSource(getVideoCapturer(), videoConstraints); localMS.addTrack(factory.createVideoTrack("ARDAMSv0", videoSource)); } AudioSource audioSource = factory.createAudioSource(new MediaConstraints()); localMS.addTrack(factory.createAudioTrack("ARDAMSa0", audioSource)); mListener.onLocalStream(localMS); }
public WebRtcClient(RtcListener listener, String host, PeerConnectionParameters params, EGLContext mEGLcontext) { mListener = listener; pcParams = params; PeerConnectionFactory.initializeAndroidGlobals(listener, true, true, params.videoCodecHwAcceleration, mEGLcontext); factory = new PeerConnectionFactory(); MessageHandler messageHandler = new MessageHandler(); try { client = IO.socket(host); } catch (URISyntaxException e) { e.printStackTrace(); } client.on("id", messageHandler.onId); client.on("message", messageHandler.onMessage); client.connect(); iceServers.add(new PeerConnection.IceServer("stun:23.21.150.121")); iceServers.add(new PeerConnection.IceServer("stun:stun.l.google.com:19302")); pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true")); pcConstraints.mandatory.add(new MediaConstraints.KeyValuePair("OfferToReceiveVideo", "true")); pcConstraints.optional.add(new MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true")); }
public void execute(String peerId, JSONObject payload) throws JSONException { Log.d(TAG, "CreateAnswerCommand"); Peer peer = peers.get(peerId); SessionDescription sdp = new SessionDescription( SessionDescription.Type.fromCanonicalForm(payload.getString("type")), payload.getString("sdp") ); peer.pc.setRemoteDescription(peer, sdp); peer.pc.createAnswer(peer, pcConstraints); } }
public void execute(String peerId, JSONObject payload) throws JSONException { Log.d(TAG, "SetRemoteSDPCommand"); Peer peer = peers.get(peerId); SessionDescription sdp = new SessionDescription( SessionDescription.Type.fromCanonicalForm(payload.getString("type")), payload.getString("sdp") ); peer.pc.setRemoteDescription(peer, sdp); } }
public Peer(String id, int endPoint) { Log.d(TAG, "new Peer: " + id + " " + endPoint); this.pc = factory.createPeerConnection(iceServers, pcConstraints, this); this.id = id; this.endPoint = endPoint; pc.addStream(localMS); //, new MediaConstraints() mListener.onStatusChanged("CONNECTING"); } }
@Override public void onAddRemoteStream(MediaStream remoteStream, int endPoint) { remoteStream.videoTracks.get(0).addRenderer(new VideoRenderer(remoteRender)); VideoRendererGui.update(remoteRender, REMOTE_X, REMOTE_Y, REMOTE_WIDTH, REMOTE_HEIGHT, scalingType, false); VideoRendererGui.update(localRender, LOCAL_X_CONNECTED, LOCAL_Y_CONNECTED, LOCAL_WIDTH_CONNECTED, LOCAL_HEIGHT_CONNECTED, scalingType, false); }
public void execute(String peerId, JSONObject payload) throws JSONException { Log.d(TAG, "AddIceCandidateCommand"); PeerConnection pc = peers.get(peerId).pc; if (pc.getRemoteDescription() != null) { IceCandidate candidate = new IceCandidate( payload.getString("id"), payload.getInt("label"), payload.getString("candidate") ); pc.addIceCandidate(candidate); } } }
@Override public void onCreateSuccess(final SessionDescription sdp) { // TODO: modify sdp to use pcParams prefered codecs try { JSONObject payload = new JSONObject(); payload.put("type", sdp.type.canonicalForm()); payload.put("sdp", sdp.description); sendMessage(id, sdp.type.canonicalForm(), payload); pc.setLocalDescription(Peer.this, sdp); } catch (JSONException e) { e.printStackTrace(); } }
public void execute(String peerId, JSONObject payload) throws JSONException { Log.d(TAG, "CreateOfferCommand"); Peer peer = peers.get(peerId); peer.pc.createOffer(peer, pcConstraints); } }
@Override public void call(Object... args) { JSONObject data = (JSONObject) args[0]; try { String from = data.getString("from"); String type = data.getString("type"); JSONObject payload = null; if (!type.equals("init")) { payload = data.getJSONObject("payload"); } // if peer is unknown, try to add him if (!peers.containsKey(from)) { // if MAX_PEER is reach, ignore the call int endPoint = findEndPoint(); if (endPoint != MAX_PEER) { Peer peer = addPeer(from, endPoint); peer.pc.addStream(localMS); commandMap.get(type).execute(from, payload); } } else { commandMap.get(type).execute(from, payload); } } catch (JSONException e) { e.printStackTrace(); } } };
private void removePeer(String id) { Peer peer = peers.get(id); mListener.onRemoveRemoteStream(peer.endPoint); peer.pc.close(); peers.remove(peer.id); endPoints[peer.endPoint] = false; }
@Override public void onRemoveStream(MediaStream mediaStream) { Log.d(TAG, "onRemoveStream " + mediaStream.label()); removePeer(id); }
/** * Call this method in Activity.onResume() */ public void onResume() { if (videoSource != null) videoSource.restart(); }
private void init() { Point displaySize = new Point(); getWindowManager().getDefaultDisplay().getSize(displaySize); PeerConnectionParameters params = new PeerConnectionParameters( true, false, displaySize.x, displaySize.y, 30, 1, VIDEO_CODEC_VP9, true, 1, AUDIO_CODEC_OPUS, true); client = new WebRtcClient(this, mSocketAddress, params, VideoRendererGui.getEGLContext()); }
@Override public void onLocalStream(MediaStream localStream) { localStream.videoTracks.get(0).addRenderer(new VideoRenderer(localRender)); VideoRendererGui.update(localRender, LOCAL_X_CONNECTING, LOCAL_Y_CONNECTING, LOCAL_WIDTH_CONNECTING, LOCAL_HEIGHT_CONNECTING, scalingType, false); }
@Override public void onAddStream(MediaStream mediaStream) { Log.d(TAG, "onAddStream " + mediaStream.label()); // remote streams are displayed from 1 to MAX_PEER (0 is localStream) mListener.onAddRemoteStream(mediaStream, endPoint + 1); }