Created
May 11, 2019 01:20
-
-
Save quangtqag/26d9f2932a402215eba5c71428fe1ae9 to your computer and use it in GitHub Desktop.
This file contains 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 func createMediaSenders() { | |
let streamId = "stream" | |
// Audio | |
let audioTrack = self.createAudioTrack() | |
self.peerConnection!.add(audioTrack, streamIds: [streamId]) | |
// Video | |
let videoTrack = self.createVideoTrack() | |
self.localVideoTrack = videoTrack | |
self.peerConnection!.add(videoTrack, streamIds: [streamId]) | |
self.remoteVideoTrack = self.peerConnection!.transceivers.first { $0.mediaType == .video }?.receiver.track as? RTCVideoTrack | |
// Data | |
if let dataChannel = createDataChannel() { | |
dataChannel.delegate = self | |
self.localDataChannel = dataChannel | |
} | |
} | |
private func createAudioTrack() -> RTCAudioTrack { | |
let audioConstrains = RTCMediaConstraints(mandatoryConstraints: nil, optionalConstraints: nil) | |
let audioSource = WebRTCClient.factory.audioSource(with: audioConstrains) | |
let audioTrack = WebRTCClient.factory.audioTrack(with: audioSource, trackId: "audio0") | |
return audioTrack | |
} | |
private func createVideoTrack() -> RTCVideoTrack { | |
let videoSource = WebRTCClient.factory.videoSource() | |
#if TARGET_OS_SIMULATOR | |
self.videoCapturer = RTCFileVideoCapturer(delegate: videoSource) | |
#else | |
self.videoCapturer = RTCCameraVideoCapturer(delegate: videoSource) | |
#endif | |
let videoTrack = WebRTCClient.factory.videoTrack(with: videoSource, trackId: "video0") | |
return videoTrack | |
} | |
// MARK: Data Channels | |
private func createDataChannel() -> RTCDataChannel? { | |
let config = RTCDataChannelConfiguration() | |
guard let dataChannel = self.peerConnection!.dataChannel(forLabel: "WebRTCData", configuration: config) else { | |
debugPrint("Warning: Couldn't create data channel.") | |
return nil | |
} | |
return dataChannel | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment