示例#1
0
文件: Helper.cs 项目: yueyz818/PeerCC
        public static Task <RTCMediaStreamTrackConfiguration> GetTrackConfigurationForCapabilities(RTCRtpCapabilities sourceCapabilities, RTCRtpCodecCapability preferredCodec)
        {
            if (preferredCodec == null)
            {
                throw new ArgumentNullException(nameof(preferredCodec));
            }

            return(Task.Run(() =>
            {
                var capabilities = RTCRtpCapabilities.Clone(sourceCapabilities);

                // scoope: move prefered codec to be first in the list
                {
                    var itemsToRemove = capabilities.Codecs.Where(x => x.PreferredPayloadType == preferredCodec.PreferredPayloadType).ToList();
                    if (itemsToRemove.Count > 0)
                    {
                        RTCRtpCodecCapability codecCapability = itemsToRemove.First();
                        var modifyList = capabilities.Codecs.ToList();
                        if (codecCapability != null && modifyList.IndexOf(codecCapability) > 0)
                        {
                            modifyList.Remove(codecCapability);
                            modifyList.Insert(0, codecCapability);
                        }
                        capabilities.Codecs = modifyList;
                    }
                }

                RTCMediaStreamTrackConfiguration configuration = new RTCMediaStreamTrackConfiguration()
                {
                    Capabilities = capabilities
                };
                return configuration;
            }));
        }
示例#2
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);
        }
    }
 public void SetCodec(RTCRtpCodecCapability codec)
 {
     this.videoCodec = codec;
 }