视频"/>
WebRTC和Node.JS:为什么无法显示远程视频
我正在研究不带信号服务器用例的WebRTC,URL如下:
此示例代码仅用于与文本聊天。
我修改了这些示例代码,以便它也可以成功地支持视频。
发送结束代码URL:
:442/webrtc/webcam/caller.html
接收结束码URL:
:442/webrtc/webcam/callee.html
测试步骤:
- 浏览“发送结束URL”,这是因为所有消息都将写入控制台,因此请打开控制台视图。
- 单击“创建报价”按钮,等待几秒钟。如果成功创建了“ offer”,则文本区域将填充“ offer” json字符串,复制文本区域中的所有内容。
- 然后在新选项卡中打开“接收结束URL”,这是因为所有消息都将写入控制台,因此请打开控制台视图。
- 将“要约”粘贴到提供的文本区域然后点击“提供报价”按钮
- “答案”将填充第二个文本区域,然后复制“答案”
- 返回“发送结束URL”选项卡,单击“提供发送”按钮
- 将显示一个新的文本区域,将“答案”粘贴到该文本区域
- 然后单击“答案粘贴”按钮
以上URL即使在android设备上也能正常工作。
为了删除上述过程,我正在基于URL编码创建一个node.js应用程序。
问题是我不知道为什么不显示远程视频。再次将所有消息写入控制台,很遗憾,我在控制台中找不到任何错误消息。测试网址如下:
/
测试步骤:
- 使用具有网络摄像头的计算机(称为计算机A)浏览上述URL。请打开控制台视图。
- 在其他计算机(称为计算机B)上浏览上述URL,请同时打开控制台视图。
- 在计算机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
更多推荐
WebRTC和Node.JS:为什么无法显示远程视频
发布评论