最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

WebRTC和Node.JS:为什么无法显示远程视频

网站源码admin21浏览0评论

WebRTC和Node.JS:为什么无法显示远程视频

WebRTC和Node.JS:为什么无法显示远程视频

我正在研究不带信号服务器用例的WebRTC,URL如下:

此示例代码仅用于与文本聊天。

我修改了这些示例代码,以便它也可以成功地支持视频。

发送结束代码URL:

:442/webrtc/webcam/caller.html

接收结束码URL:

:442/webrtc/webcam/callee.html

测试步骤:

  1. 浏览“发送结束URL”,这是因为所有消息都将写入控制台,因此请打开控制台视图。
  2. 单击“创建报价”按钮,等待几秒钟。如果成功创建了“ offer”,则文本区域将填充“ offer” json字符串,复制文本区域中的所有内容。
  3. 然后在新选项卡中打开“接收结束URL”,这是因为所有消息都将写入控制台,因此请打开控制台视图。
  4. 将“要约”粘贴到提供的文本区域然后点击“提供报价”按钮
  5. “答案”将填充第二个文本区域,然后复制“答案”
  6. 返回“发送结束URL”选项卡,单击“提供发送”按钮
  7. 将显示一个新的文本区域,将“答案”粘贴到该文本区域
  8. 然后单击“答案粘贴”按钮

以上URL即使在android设备上也能正常工作。

为了删除上述过程,我正在基于URL编码创建一个node.js应用程序。

问题是我不知道为什么不显示远程视频。再次将所有消息写入控制台,很遗憾,我在控制台中找不到任何错误消息。测试网址如下:

/

测试步骤:

  1. 使用具有网络摄像头的计算机(称为计算机A)浏览上述URL。请打开控制台视图。
  2. 在其他计算机(称为计算机B)上浏览上述URL,请同时打开控制台视图。
  3. 在计算机A上,单击呼叫按钮,几秒钟后,视频应显示在计算机B的远程视图上。

但是,不会发生。

我在两个浏览器控制台上都找不到任何错误消息。

这是服务器源代码:

var fs = require('fs');
var https = require('https');

var express = require('express');
var app = express();

var options = {
  key: fs.readFileSync('private.key'),
  ca: [fs.readFileSync('ca_bundle.crt')],
  cert: fs.readFileSync('certificate.crt')
};
var serverPort = 443;

var server = https.createServer(options, app);
var io = require('socket.io')(server);

app.get('/', (req, res) => {        
  res.sendFile(__dirname + '/index.html');
});
app.get('/common.js', (req, res) => {       
  res.sendFile(__dirname + '/common.js');
});
app.get('/style.css', (req, res) => {       
  res.sendFile(__dirname + '/style.css');
});
app.get('/WebRTC.js', (req, res) => {       
  res.sendFile(__dirname + '/WebRTC.js');
});
io.on('connection', function(socket) {
  console.log('new connection');
  socket.emit('message', 'This is a message from the dark side.');
});
io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);
  });
  socket.on("send_answer", (answer) =>{
      console.log("receive an answer:"+answer);
      socket.broadcast.emit("receive_answer",answer);
  });
  socket.on("send_offer", (offer) =>{
      console.log("receive an offer:"+offer);
      socket.broadcast.emit("receive_offer",offer);
  });  
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
});

server.listen(serverPort, function() {
  console.log('server up and running at %s port', serverPort);
});

PS:两台服务器都将从凌晨1点到凌晨7点(香港时间,即UTC + 8)脱机

回答如下:

最后,我按照下面的网站说明来构建我的Web应用程序,它可以工作。

https://developer.mozilla/en-US/docs/Web/API/WebRTC_API/Signaling_and_video_calling

特别是下图显示了握手序列,这非常有用。

https://mdn.mozillademos/files/12363/WebRTC%20-%20Signaling%20Diagram.svghttps://mdn.mozillademos/files/12365/WebRTC%20-%20ICE%20Candidate%20Exchange.svg

发布评论

评论列表(0)

  1. 暂无评论