【问题标题】:UnsupportedError: cannot produce video at Transport.produceUnsupportedError:无法在 Transport.produce 上制作视频
【发布时间】:2022-11-16 11:23:57
【问题描述】:

一旦我想在客户端创建制作人,我就会收到此错误:不支持的错误:无法在 Transport.produce 制作视频

我创建了设备并从服务器获取了 RtpCapabilities。一切正常。那么,为什么当我尝试在客户端创建生产者时会立即收到此错误?

params = {
    encodings: [
      {
        rid: "r0",
        maxBitrate: 100000,
        scalabilityMode: "S1T3",
      },
      {
        rid: "r1",
        maxBitrate: 300000,
        scalabilityMode: "S1T3",
      },
      {
        rid: "r2",
        maxBitrate: 900000,
        scalabilityMode: "S1T3",
      },
    ],
    codecOptions: {
      videoGoogleStartBitrate: 1000,
    },
  };
const getVideo = () => {
    navigator.mediaDevices
      .getUserMedia({
        audio: true,
        video: true,
      })
      .then((stream) => {
        let video = document.getElementById("myVideo");
        video.srcObject = stream;
        video.play();
        console.log(stream);
        const track = stream.getVideoTracks()[0];
        params = {
          track,
          ...params,
        };
      });
  };


const connectSendTransport = async () => {
    debugger;
    producer = await producerTransport.produce(params)

    producer.on("trackended", () => {
      console.log("track ended");
    });

    producer.on("transportclose", () => {
      console.log("transport ended");
    });
  };
  
const createSendTransport = () => {
    socket.emit("createWebRtcTransport", { sender: true }, ({ params }) => {
      if (params.error) {
        console.log(params.error);
        return;
      }
      console.log(params);

      debugger;
      producerTransport = device.createSendTransport(params);
      console.log(producerTransport);

      producerTransport.on(
        "connect",
        async ({ dtlsParameters }, callback, errback) => {
          try {
            await socket.emit("transport-connect", {
              // transportId: producerTransport.id,
              dtlsParameters: dtlsParameters,
            });

            callback();
          } catch (error) {
            errback(error);
          }
        }
      );

      producerTransport.on("produce", async (parameters, callback, errback) => {
        try {
          await socket.emit(
            "transport-producer",
            {
              // transportId: producerTransport.id,
              kind: parameters.kind,
              rtpParameters: parameters.rtpParameters,
              appData: parameters.appData,
            },
            ({ id }) => {
              callback({ id });
            }
          );
        } catch (error) {
          errback(error);
        }
      });
    });
  };

【问题讨论】:

    标签: javascript reactjs mediasoup


    【解决方案1】:

    需要查看完整代码才能对其进行调试。我有同样的错误。 我追溯到 - 不正确的 rtpCapabilities 被传入

                await device.load({
                    routerRtpCapabilities: rtpCapabilities
                })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多