addTransceiver() и addTrack() WebRTC

WebRTC

addTrack()

говорящийaddTrackПрежде чем мы узнаемaddStream()метод

  • addStream() Устаревший, официально признан устаревшим

положитьMediaStreamЛокальный источник аудио или видео, добавляемый в объект потока однорангового соединения WebRTC. Официально рекомендуется использовать другой методaddTrack

RTCPeerConnection.addTrack( ) добавляет новую медиадорожку в набор дорожек, которая будет передана другому узлу

        navigator.mediaDevices.getUserMedia({ audio: true, video: true }).then(async (stream: any) => {
            for (const track of stream.getTracks()) {
                this.webPeer.addTrack(track);
            }

Вышеприведенный код: Добавьте аудио- и видеопотоки камеры пользователя в соединение, а затем отправьте предложение, содержащее объект SDP (объект SDP содержит соответствующие параметры текущего аудио и видео), в службу сигнализации.

правильноRTCPeerConnectionСтуденты, интересующиеся процессом подключения, могут обратиться к этой статьеnuggets.capable/post/684490…

Если вы занимаетесь продуктами, связанными с аудио- и видеочатами, тоaddTrackЭто как раз соответствует вашим потребностям, ведь вам нужно использовать камеру и микрофон пользователя (браузер запросит у пользователя авторизацию). Но вы хотите создавать только аудио- и видеодорожки, и вам не нужно использовать камеры и микрофоны, так что же нам делать?

addTransceiver()

addTransceiverсоздать новыйRTCRtpTransceiverи добавьте его в набор приемопередатчиков, связанный сRTCPeerConnection. Каждый трансивер представляет собой двунаправленный поток сRTCRtpSenderа такжеRTCRtpReceiver.

грамматика

let rtcTransceiver = RTCPeerConnection .addTransceiver(trackOrKind,init);

  • trackOrKind: MediaStreamTrackбыть связанным с приемопередатчиком, илиDOMStringОн используется в качестве своего рода приемникаtrack

Здесь видео трек по биографии»video", звуковая дорожка перенесена"audio"

  • init:Необязательный параметр. следующим образом:

направление:Предпочтительная направленность трансивера. Это значение используется для инициализации новыхRTCRtpTransceiverобъектRTCRtpTransceiver.directionАтрибуты.

sendEncodings:Список кодировок, разрешенных при отправке мультимедиа RTPRTCRtpSender. каждая запись является типомRTCRtpEncodingParameters.

streams: MediaStreamСписок объектов для добавления в трансиверRTCRtpReceiver; когда удаленный узелRTCPeerConnectionизtrackКогда происходит событие, это потоки, которые будут указаны событием.

Например:Добавьте односторонний трансивер потокового аудио и видео.

            this.rtcPeerConnection.addTransceiver("video", {
                direction: "recvonly"
            });
            this.rtcPeerConnection.addTransceiver("audio", {
                direction: "recvonly"
            });

Приведенный выше код будет получать только аудио- и видеопотоки, отправленные одноранговой стороной, и не будет передавать свои собственные аудио- и видеопотоки на одноранговую сторону.

direction:

до свидания

Если у вас есть вдохновение, пожалуйста, нажмите «Нравится», чтобы поддержать, спасибо~

обновить содержимое:

обращать вниманиеaddTransceiverПроблема совместимости, эта функция не поддерживается в ios и mac safari, если вы хотите быть совместимым с сеансом соединения webrtc в safari, вы можете инициировать сеанс сигнальным сервером. Обратитесь к обратному процессу webrtc в следующей статье:

nuggets.capable/post/684490…