コード例 #1
0
    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);
        }
    }
コード例 #2
0
        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;
        }
コード例 #3
0
    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));
    }
コード例 #4
0
        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);
        }
コード例 #5
0
 public PlatformTransceiver(RTCRtpTransceiver transceiver) : base(transceiver) => _rtpTransceiver = transceiver;