private void AddTracks() { foreach (var track in videoStream.GetTracks()) { pc1Senders.Add(_pc1.AddTrack(track, videoStream)); } if (!videoUpdateStarted) { StartCoroutine(WebRTC.Update()); videoUpdateStarted = true; } RTCRtpCodecCapability[] codecs = null; if (codecSelector.value == 0) { codecs = RTCRtpSender.GetCapabilities(TrackKind.Video).codecs; } else { RTCRtpCodecCapability preferredCodec = availableCodecs[codecSelector.value - 1]; codecs = new[] { preferredCodec }; } RTCRtpTransceiver transceiver = _pc1.GetTransceivers().First(); RTCErrorType error = transceiver.SetCodecPreferences(codecs); if (error != RTCErrorType.None) { Debug.LogErrorFormat("RTCRtpTransceiver.SetCodecPreferences failed. {0}", error); } }
public void AddTransceiver() { if (string.IsNullOrEmpty(m_connectionId) || !m_mapConnectionIdAndPeer.TryGetValue(m_connectionId, out var pc)) { return; } RTCRtpTransceiver transceiver = pc.AddTransceiver(TrackKind.Video); // ToDO: need webrtc package version 2.3 // transceiver.Direction = RTCRtpTransceiverDirection.RecvOnly; }
private void OnGatherCandidate() { foreach (Transform child in candidateParent) { Destroy(child.gameObject); } gatherCandidatesButton.interactable = false; var configuration = GetSelectedSdpSemantics(); _pc1 = new RTCPeerConnection(ref configuration); _pc1.OnIceCandidate = OnIceCandidate; _pc1.OnIceGatheringStateChange = OnIceGatheringStateChange; _transceiver = _pc1.AddTransceiver(TrackKind.Video); StartCoroutine(CreateOffer(_pc1)); }
public void SwitchTrack() { if (sendingTransceiver == null) { var transceiver = pc.AddTransceiver(sourceVideoTrack1); transceiver.Direction = RTCRtpTransceiverDirection.SendRecv; if (WebRTCSettings.UseVideoCodec != null) { var codecs = new[] { WebRTCSettings.UseVideoCodec }; transceiver.SetCodecPreferences(codecs); } sendingTransceiver = transceiver; return; } var nextTrack = sendingTransceiver.Sender.Track == sourceVideoTrack1 ? sourceVideoTrack2 : sourceVideoTrack1; sendingTransceiver.Sender.ReplaceTrack(nextTrack); }
public PlatformTransceiver(RTCRtpTransceiver transceiver) : base(transceiver) => _rtpTransceiver = transceiver;