notas de estudio de mediasoup [2] Sala de enrutadores

El último trabajador introdujo brevemente los principios básicos. Hoy hablaré sobre mediasoup Router. Es simplemente una ruta de dirección, pero de hecho, todos pueden entenderlo como una habitación.

Aquí hay principalmente un parámetro, mediaCodecs media codec, que incluye la configuración de parámetros de decodificación de audio y video.

El código fuente https://github.com/versatica/mediasoup/blob/v3/lib/supportedRtpCapabilities.js tiene configuraciones de parámetros para códecs compatibles.

const mediaCodecs =
[
  {
    
    
    kind        : "audio",
    mimeType    : "audio/opus",
    clockRate   : 48000,
    channels    : 2
  },
  {
    
    
    kind       : "video",
    mimeType   : "video/H264",
    clockRate  : 90000,
    parameters :
    {
    
    
      "packetization-mode"      : 1,
      "profile-level-id"        : "42e01f",
      "level-asymmetry-allowed" : 1
    }
  }
];

const appData = {
    
    } //自定义的字段 房间,名字等等,这个
 
const router = await worker.createRouter({
    
     mediaCodecs, appData });

Esto puede entenderse simplemente como configurar los parámetros del códec de medios admitido por el servidor. Si conoce el códec de audio y video, debería poder obtener una mejor comprensión. Yo soy simplemente una comprensión simple.

atributos relacionados con el enrutador

  • carné de identidad
  • cerrado está cerrado
  • appData datos personalizados
  • Observador, el usuario escucha algunos eventos, estado, etc. de la sala, todas las clases tienen observadores integrados en EventEmitter ()

métodos relacionados con el enrutador

  • close () cierra la sala, se lanzará el evento routerclose
  • createWebRtcTransport (opciones) Crear canal webRTC
  • createPlainTransport (opciones) Crea un canal común
  • canal de canalización createPipeTransport (opciones)

La diferencia entre cada canal se estudiará e introducirá más adelante;

	options = {
    
    
		listenIp: '', //必填
		enableSctp: sctp 协议的启用 默认是 false  //我也仅仅知道 sctp的话 服务端能够获取到transport的数据
		...
	}

Puede ver el documento PipeTransportOptions

  • pipeToRouter ({producerId, dataProducerId, router, listenIp}) // Es muy conveniente consumir datos en todas las habitaciones, el siguiente es un ejemplo proporcionado por el sitio web oficial
// Have two workers.
const worker1 = await mediasoup.createWorker();
const worker2 = await mediasoup.createWorker();

// Create a router in each worker.
const router1 = await worker1.createRouter({
    
     mediaCodecs });
const router2 = await worker2.createRouter({
    
     mediaCodecs });

// Produce in router1.
const transport1 = await router1.createWebRtcTransport({
    
     ... });
const producer1 = await transport1.produce({
    
     ... });

// Pipe producer1 into router2.
await router1.pipeToRouter({
    
     producerId: producer1.id, router: router2 });

// 从router2消费producer1;
const transport2 = await router2.createWebRtcTransport({
    
     ... });
const consumer2 = await transport2.consume({
    
     producerId: producer1.id, ... });

  • createAudioLevelObserver (opciones) // Crear observador de audio
  • canConsume (options = {producerId, rtpCapabilities}) // ¿Se pueden consumir los datos del productor?

eventos relacionados con el enrutador

  • workerclose El proceso de escucha está cerrado

Supongo que te gusta

Origin blog.csdn.net/uk_51/article/details/104648265
Recomendado
Clasificación