Exemplo n.º 1
0
        public static MediaStream CaptureStream()
        {
            started = true;

            var stream = new MediaStream(WebRTC.Context.CreateMediaStream("audiostream"));
            var track  = new AudioStreamTrack(WebRTC.Context.CreateAudioTrack("audio"));

            stream.AddTrack(track);
            return(stream);
        }
Exemplo n.º 2
0
        void OnCall()
        {
            buttonCall.interactable        = false;
            buttonPause.interactable       = true;
            dropdownBandwidth.interactable = true;

            _receiveStream             = new MediaStream();
            _receiveStream.OnAddTrack += OnAddTrack;
            _sendStream = new MediaStream();

            var configuration = GetSelectedSdpSemantics();

            _pc1 = new RTCPeerConnection(ref configuration)
            {
                OnIceCandidate      = candidate => _pc2.AddIceCandidate(candidate),
                OnNegotiationNeeded = () => StartCoroutine(PeerNegotiationNeeded(_pc1))
            };

            _pc2 = new RTCPeerConnection(ref configuration)
            {
                OnIceCandidate = candidate => _pc1.AddIceCandidate(candidate),
                OnTrack        = e => _receiveStream.AddTrack(e.Track),
            };

            var transceiver2 = _pc2.AddTransceiver(TrackKind.Audio);

            transceiver2.Direction = RTCRtpTransceiverDirection.RecvOnly;

            m_audioTrack          = new AudioStreamTrack(inputAudioSource);
            m_audioTrack.Loopback = toggleLoopback.isOn;
            _pc1.AddTrack(m_audioTrack, _sendStream);

            var transceiver1 = _pc1.GetTransceivers().First();

            if (dropdownAudioCodecs.value == 0)
            {
                var error = transceiver1.SetCodecPreferences(this.availableCodecs.ToArray());
                if (error != RTCErrorType.None)
                {
                    Debug.LogError(error);
                }
            }
            else
            {
                var codec = availableCodecs[dropdownAudioCodecs.value - 1];
                var error = transceiver1.SetCodecPreferences(new[] { codec });
                if (error != RTCErrorType.None)
                {
                    Debug.LogError(error);
                }
            }
        }
Exemplo n.º 3
0
 public AudioStreamRenderer(AudioStreamTrack track)
     : this(WebRTC.Context.CreateAudioTrackSink())
 {
     _track = track;
     _track?.AddSink(this);
 }
Exemplo n.º 4
0
 public static void SetTrack(this AudioSource source, AudioStreamTrack track)
 {
     track._streamRenderer.Source = source;
 }