Created
April 13, 2020 08:18
-
-
Save ShwetaChauhan18/8314b865c9830682d16345c60b9bf35d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private fun initializePeerConnections() { | |
localPeerConnection = createPeerConnection(factory, true) | |
remotePeerConnection = createPeerConnection(factory, false); | |
} | |
private fun createPeerConnection(factory: PeerConnectionFactory?, isLocal: Boolean): PeerConnection? { | |
val iceServers = ArrayList<PeerConnection.IceServer>() | |
iceServers.add(PeerConnection.IceServer.builder("stun:stun.l.google.com:19302").createIceServer()) | |
val rtcConfig = RTCConfiguration(iceServers) //new ArrayList<>() | |
val pcObserver: PeerConnection.Observer = object : PeerConnection.Observer { | |
override fun onSignalingChange(signalingState: SignalingState) { | |
Log.d(TAG, "onSignalingChange: $signalingState") | |
} | |
override fun onIceConnectionChange(iceConnectionState: IceConnectionState) { | |
Log.d(TAG, "onIceConnectionChange: $iceConnectionState") | |
} | |
override fun onIceConnectionReceivingChange(b: Boolean) { | |
Log.d(TAG, "onIceConnectionReceivingChange: $b") | |
} | |
override fun onIceGatheringChange(iceGatheringState: IceGatheringState) { | |
Log.d(TAG, "onIceGatheringChange:$iceGatheringState") | |
} | |
override fun onIceCandidate(iceCandidate: IceCandidate) { | |
Log.d(TAG, "onIceCandidate: $iceCandidate") | |
if (isLocal) { | |
remotePeerConnection?.addIceCandidate(iceCandidate); | |
} else { | |
localPeerConnection?.addIceCandidate(iceCandidate) | |
} | |
} | |
override fun onIceCandidatesRemoved(iceCandidates: Array<IceCandidate>) { | |
Log.d(TAG, "onIceCandidatesRemoved: ") | |
} | |
override fun onAddStream(mediaStream: MediaStream) { | |
Log.d(TAG, "onAddStream: " + mediaStream.videoTracks.size) | |
gotRemoteStream(mediaStream) | |
} | |
override fun onRemoveStream(mediaStream: MediaStream) { | |
Log.d(TAG, "onRemoveStream: ") | |
} | |
override fun onDataChannel(dataChannel: DataChannel) { | |
Log.d(TAG, "onDataChannel: ") | |
Log.d(TAG, "onDataChannel: is local: " + isLocal + " , state: " + dataChannel.state()) | |
} | |
override fun onRenegotiationNeeded() { | |
Log.d(TAG, "onRenegotiationNeeded: ") | |
} | |
override fun onAddTrack(rtpReceiver: RtpReceiver, mediaStreams: Array<MediaStream>) {} | |
} | |
return factory?.createPeerConnection(rtcConfig, pcObserver) | |
} | |
private fun gotRemoteStream(stream: MediaStream) { | |
//we have remote video stream. add to the renderer. | |
val videoTrack = stream.videoTracks[0] | |
runOnUiThread { | |
try { | |
binding?.remoteGlSurfaceView?.visibility = View.VISIBLE | |
videoTrack.addSink(binding?.remoteGlSurfaceView) | |
} catch (e: Exception) { | |
e.printStackTrace() | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment