

该项目正在实现一个简单的视频会议应用程序. 您可以在两个人之间进行视频会议,并打开相同的html页面. 这是通过WebRTc和Web套接字完成的.
视频会议很困难,并且需要许多类似的宽带编(语音和视频). 回声消除. 自动增益控制.
但是,WebRTC现在变得更容易了,因为您可以在没有插件的浏览器中进行视频会议!
首先让我们知道它是什么吗?
WebRTC是一个免费的开放项目,可以通过简单的Javascript API来实现具有实时通信(RTC)功能的Web浏览器.
WebRTC的任务是通过简单的Javascript API和HTML5开发丰富的浏览器. 高质量. RTC应用程序.
WebRTC仍在进行这项工作,WebRTC受到Google Chrome chanary / Firefox aurora / Opera Lab的支持.
我们需要做五件事来进行视频会议:
1. 在html页面中设置视频元素:
<video></video>
2. 访问本地设备(相机,麦克风):
navigator.getUserMedia();
3. 从本地或远程对等方显示/ v:

createObjectURL
4. 连接到远程节点
PeerConnection
在您的html页面中访问本地设备并将其显示在html页面中,我们将首先使用以下代码:
// Replace the source of the video element with the stream from the camera
try
{
navigator.webkitGetUserMedia({audio: true, video: true}, successCallback, errorCallback);
}
catch (e)
{
navigator.webkitGetUserMedia("video,audio", successCallback, errorCallback);
}
function successCallback(stream) {
sourcevid.src = window.webkitURL.createObjectURL(stream);
sourcevid.style.webkitTransform = "rotateY(180deg)";
localStream = stream;
}
function errorCallback(error) {
logg('An error occurred: [CODE ' + error.code + ']');
}
浏览器的浏览器实现
webkit(Chrome):
webkitGetUserMedia()
window.webkitURL.createObjectURL()
歌剧
getUserMedia()
直接设置video.src
Firefox:
mozGetUserMedia()

window.URL.createObjectURL()
示例:
尚未实施.
我们需要建立对等连接:
我们可以通过Web套接字建立连接,也可以使用appengine上的频道管理服务器(例如开源apprtc应用程序). 我决定将Web套接字服务器用作双向通信通道.
WebRTC使用PeerConnection来通信数据流. 但是,我们需要一种在节点之间发送控制消息的机制,称为信令. 您可以选择任何喜欢的消息传递协议,例如SIP.
启动会话WebRTC客户端需要本地和远程配置信息,因此配置信息由SessionDiscreption发送,这满足了客户端的要求. 呼叫者发送的SessionDescription称为要约,被呼叫者的响应就是响应. 这种架构称为JSEPweb视频会议,一种JavaScript会话建立协议.
通过WebRTC服务启用聊天消息
由于我知道这不是有用的功能,因此只能在WebRTC上使用文本聊天. 我所做的就是修改信号程序. 当对方要发送短信时,我让他在短信中发送收费信息,一旦他收到了回执,就会将其添加到聊天iframe中.
在其中,我们需要在创建对等连接后添加一个远程流:
var remotevid = document.getElementById('remotevid');
try {
logg("Creating peer connection");
var servers = [];
servers.push({'url':'stun:' + stunServer});
var pc_config = {'iceServers':servers};
peerConn = new webkitRTCPeerConnection(pc_config);
peerConn.onicecandidate = onIceCandidate;
}
catch (e) {
logg("Failed to create PeerConnection, exception:" + e.message);
}
peerConn.onaddstream = onRemoteStreamAdded;
peerConn.onremovestream = onRemoteStreamRemoved;
function onRemoteStreamAdded(event) {
logg("Added remote stream");
remotevid.src = window.webkitURL.createObjectURL(event.stream);
}
这个项目很有趣,因为我学到了一些新东西,甚至对实现和尝试从相机流中获取图片感兴趣.
因此,要从相机流中拍照,请创建一个canvas元素:
<canvas id="canvas"></canvas>

我们需要一个按钮来拍照和img标签来设置捕获的图片:
<button id="btn">Take photo</button>
<img src="" id="photo" alt="photo" style="margin-left:90px;">
当然,您必须拥有我们上面学到的视频元素. 然后:
startbutton = document.querySelector('#btn');
startbutton.addEventListener('click', function(ev){
takepicture();
ev.preventDefault();
}, false);
function takepicture() {
canvas.width = width;
canvas.height = height;
canvas.getContext('2d').drawImage(video, 0, 0, width, height);
var data = canvas.toDataURL('image/png');
photo.setAttribute('src', data);
}
此外,更有趣的是使用CSS将实时效果应用于摄像机流.
1. 下载源代码.
2. 将源文件移动到www目录(您需要在本地运行http服务器).
3. 安装node.js(来自nodejs.org)可以使用它运行服务器.
4. 打开node.js命令提示符后,安装node.js(和必需的命令).
5. 移至Web套接字服务器所在的目录(web socket server.js).
6. 编写以下命令: node websocket-server.js.
7. 现在服务器正在运行,并且正在侦听端口1337.
8. 打开VideoConference.htm并在代码中修改IP地址以匹配计算机的IP(或者您可以编写127.0.0.1).
9. 另一个客户端应该执行步骤1-2和8(在步骤8中,他应该输入运行服务器的计算机的IP地址).

10. 现在,在Canary浏览器中打开VideoConference.htm后web视频会议,服务器应该会检测到您的连接.
11. 单击“开始”后,您可以看到自己. 单击“连接”以查看远程客户端.
这项工作是SWE Internet协议和客户端服务器编程项目的一部分.
这个项目是我的导师建议的. Nasir Darwish.
1.GingerTech:
他实现了Web套接字服务器,然后我将其修改为我的应用程序(这是一个不起作用的演示,因为它是一个古老的专有api).
2.apprtc applicatino由开发人员完成:
了解此过程并查看新的API.
3. WebRTC.org:
有关常规信息和演示文稿:
4.HTML5Rocks:
获取常规信息并了解该过程.
5. Photobooth示例:
用于实时流式传输的CSS过滤器.
镜像:
v1.0: 初始版本为2012年12月24日.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-178355-1.html
省事
我来个去
自己的同胞