作者:穿过a黑夜_440 | 来源:互联网 | 2023-05-21 00:18
我需要为我的ruby on rails应用程序构建一个视频会议功能.我找到了html5的教程,使您可以通过浏览器访问您的相机.打开相机后,您可以看到实时摄像机进纸并拍摄快照.代码如下
Javascript代码:
// Put event listeners into place
window.addEventListener("DOMContentLoaded", function() {
// Grab elements, create settings, etc.
var canvas = document.getElementById("canvas"),
cOntext= canvas.getContext("2d"),
video = document.getElementById("video"),
videoObj = { "video": true },
errBack = function(error) {
console.log("Video capture error: ", error.code);
};
// Put video listeners into place
if(navigator.getUserMedia) { // Standard
navigator.getUserMedia(videoObj, function(stream) {
video.src = stream;
video.play();
}, errBack);
} else if(navigator.webkitGetUserMedia) { // WebKit-prefixed
navigator.webkitGetUserMedia(videoObj, function(stream){
video.src = window.webkitURL.createObjectURL(stream);
video.play();
}, errBack);
}
else if(navigator.mozGetUserMedia) { // Firefox-prefixed
navigator.mozGetUserMedia(videoObj, function(stream){
video.src = window.URL.createObjectURL(stream);
video.play();
}, errBack);
}
// Trigger photo take
document.getElementById("snap").addEventListener("click", function(e) {
context.drawImage(video, 0, 0, 640, 480);
});
}, false);
HTML代码:
New video
我需要一种方法来流式传输我看到的服务器中的其他用户的实时视频.我怎么能这样做?网络套接字能让我这样做吗?如果是这样的话?
1> igorpavlov..:
你绝对可以做到.
首先,您需要了解WebRTC的工作原理以及它的要求.您需要一个信令服务器(现有服务器,或者您自己编写).如果您决定自己编写,则需要任何类型的客户端 - 服务器 - 客户端体系结构和传输方法(其中之一是websockets).
在websockets(或任何其他传输)上,您需要交换会话描述(一个对等提供,其他对等应答)以建立连接.实际上,信令服务器只是客户端和服务器端的几个监听器,它们只能在建立WebRTC连接之前将信号(相对较小的文本数据块)从一个对等体传递到另一个对等体.
合适的方式
我建议调查这个应用程序的主要代码https://apprtc.appspot.com/(我在这里保存了主要代码https://gist.github.com/igorpavlov/18af35999f8c7838cf21).了解它的工作原理对你来说非常好.
简单的方法
您也可以使用库来调用https://simplewebrtc.com/(www.talky.io适用于此库),但您仍需要信号服务器.
祝好运!
推荐阅读
-
本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ...
[详细]
蜡笔小新 2023-12-14 14:37:52
-
本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ...
[详细]
蜡笔小新 2023-12-14 20:58:32
-
-
本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ...
[详细]
蜡笔小新 2023-12-14 16:06:38
-
本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ...
[详细]
蜡笔小新 2023-12-12 17:48:18
-
本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ...
[详细]
蜡笔小新 2023-12-11 18:45:50
-
本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ...
[详细]
蜡笔小新 2023-12-10 19:32:38
-
本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ...
[详细]
蜡笔小新 2023-12-09 09:22:34
-
活动主题:五一巨献,问答有礼,105QB送给IT互联网界的劳动人民活动时间:4月30日晚上10点~5月2日晚上10点网址:http:ask.jiutianniao.com ...
[详细]
蜡笔小新 2023-10-14 12:08:45
-
原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ...
[详细]
蜡笔小新 2023-12-13 19:35:25
-
本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ...
[详细]
蜡笔小新 2023-12-11 20:28:11
-
本文介绍了在Python中使用zlib模块进行字符串的压缩与解压缩的方法,并探讨了其在内存优化方面的应用。通过压缩存储URL等长字符串,可以大大降低内存消耗,虽然处理时间会增加,但是整体效果显著。同时,给出了参考链接,供进一步学习和应用。 ...
[详细]
蜡笔小新 2023-12-11 17:42:43
-
本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ...
[详细]
蜡笔小新 2023-12-11 15:55:40
-
本文介绍了Android中的assets目录和raw目录的共同点和区别,包括获取资源的方法、目录结构的限制以及列出资源的能力。同时,还解释了raw目录中资源文件生成的ID,并说明了这些目录的使用方法。 ...
[详细]
蜡笔小新 2023-12-11 12:26:25
-
***byte(字节)根据长度转成kb(千字节)和mb(兆字节)**parambytes*return*publicstaticStringbytes2kb(longbytes){ ...
[详细]
蜡笔小新 2023-12-11 11:47:46
-
本文介绍了在Cpp中将字符串形式的数值转换为int或float等数值类型的方法,主要使用了strtol、strtod和strtoul函数。这些函数可以将以null结尾的字符串转换为long int、double或unsigned long类型的数值,且支持任意进制的字符串转换。相比之下,atoi函数只能转换十进制数值且没有错误返回。 ...
[详细]
蜡笔小新 2023-12-10 15:22:07
-