微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NodeWebRTC 视频流不显示在 chrome

如何解决NodeWebRTC 视频流不显示在 chrome

我已经熟悉用于视频流的 webRTC。我的目标是通过 gstreamer 在浏览器中显示视频流,同时保持低延迟。

我为此使用了 nodewebrtc 并尝试了 github repo here 中的示例。到目前为止,我已经使用此代码对其进行了测试,并且仅在开始时与 gstreamer 管道交换了一些代码,如下所示:

const gstreamer = require("gstreamer-superficial");
const { RTCVideoSource } = require('wrtc').nonstandard;

let numOfClients = 0
let pipeline = null

function beforeOffer(peerConnection) {
  if (numOfClients == 0) {
    console.log("starting new pipeline");
    pipeline = new gstreamer.Pipeline("videotestsrc is-live=True ! videoconvert ! videoscale ! clockoverlay shaded-background=true ! video/x-raw,format=I420,width=1024,height=576,framerate=25/1 ! appsink name=sink");
  }
  numOfClients++;
  console.log("new peer connected");
  console.log(numOfClients,"Clients connected");
  const appsink = pipeline.findChild('sink');
  const source = new RTCVideoSource();
  const track = source.createTrack();
  peerConnection.addTransceiver(track);

在 Firefox 中进行测试时,它实际上效果很好。

但现在的问题是:当我尝试在 chrome 中访问同一个网站时,它不显示视频。视频的 html 标签显然在那里,但它没有被任何帧填充。 在控制台中没有错误或警告消息,所以我不知道问题可能是什么以及如何调试它。有没有人遇到过类似的情况?

我唯一能想到的是将 MediaStreamObject 打印到控制台,它在 Firefox 和 Chromium 中看起来相同(只有填充的值有一个 id 和一个名为 'active' 的布尔值设置为 true、'onaddtrack' 和 ' onremovetrack' 都为 null。Chrome 还打印了两个 firefox 不显示的其他值,它们是 'onactive' 和 'oninactive' 都设置为 null)

  • Chrome 版本:Chromium 80.0.3987.162
  • Firefox 版本:Mozilla Firefox 68.9.0esr

提前致谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。