WebRTC/WebSocket 屏幕录制

2023-11-22

在我的用例中,我想记录屏幕活动并将其发送到服务器[非实时]。我为此查看了一些博客/示例演示。但我找不到任何与此相关的内容。我可以找到很多实时流媒体音频/视频,但找不到屏幕录制。

我有以下与此相关的问题,

  • 对于这个用例来说,哪一个是高效的 WebRTC/Websockets?
  • 浏览器支持 WebRTC/Websockets?
  • 还有其他方法可以实现这个用例吗?

我对 WebRTC/Websockets 相当陌生,如果我没有发布足够的信息,请发表评论。我会加。

有人可以帮我解决这个问题吗?任何与此用例相关的参考 URL/任何相关信息都会非常有帮助。


以下是如何在 Firefox 中录制屏幕(Update:尝试一下这把小提琴):

var constraints = { video: { mediaSource: "screen", width: 320, height: 200 } };

var start = ms => navigator.mediaDevices.getUserMedia(constraints)
  .then(stream => record(stream, ms)
    .then(recording => {
      stop(stream);
      video.src = link.href = URL.createObjectURL(new Blob(recording));
      link.download = "recording.blob";
      link.innerHTML = "Download blob";
      log("Playing "+ recording[0].type +" recording:");
    })
    .catch(log).then(() => stop(stream)))
  .catch(log);

var record = (stream, ms) => {
  var rec = new MediaRecorder(stream), data = [];
  rec.ondataavailable = e => data.push(e.data);
  rec.start();
  log(rec.state + " for "+ (ms / 1000) +" seconds...");
  var stopped = new Promise((r, e) => (rec.onstop = r, rec.onerror = e));
  return Promise.all([stopped, wait(ms).then(() => rec.stop())])
    .then(() => data);
};

var stop = stream => stream.getTracks().forEach(track => track.stop());
var wait = ms => new Promise(resolve => setTimeout(resolve, ms));
var log = msg => div.innerHTML += "<br>" + msg;
<button onclick="start(5000)">Record screen!</button>
<div id="div"></div><br>
<video id="video" height="120" width="160" autoplay></video>
<a id="link"></a>

Warning:在网络上共享您的浏览器窗口涉及安全风险!阅读相关内容here!

获得 Blob 后,您可以使用常规 Web 套接字(未显示)上传它。

The 媒体记录器位也应该在 Chrome 中工作,但不幸的是,屏幕共享仍未完全标准化,并且工作方式不同,并且需要在 Chrome 中进行扩展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebRTC/WebSocket 屏幕录制 的相关文章

随机推荐

  • 相当于 Python 的列表排序和 key / Schwartzian 变换

    在 Python 中 给定一个列表 我可以按关键函数对其进行排序 例如 gt gt gt def get value k print heavy computation for k return a 100 b 30 c 50 d 0 k
  • 手动将 JComponent 放置在 JPanel 内

    我想以编程方式将 JLabel 移动到 JPanel 内的特定位置 我努力了setLocation int x int y 但它不起作用 我试图不使用任何布局管理器 这是一个关于如何在不使用布局管理器的情况下布局组件的精彩教程 http j
  • UITextView 中的文本垂直居中

    我想将文本居中垂直里面一个大UITextView填满整个屏幕 因此 当文本很少时 说几个单词 它会按高度居中 这不是一个关于文本居中 可以在IB中找到的属性 的问题 而是关于放置文本的问题垂直就在中间UITextView if文字很短 所以
  • 以编程方式将 svg 转换为图像

    我正在尝试将 svg 转换为图像 我一直在研究几种工具 但仍然无法实现这一点 1 SVG渲染引擎但我遇到了麻烦 因为它没有文档 这是我的代码 using FileStream fileStream File OpenRead C sampl
  • 使用 Python 删除或删除 CSV 文件中的最后一列

    我有一个包含 5 列的 CSV 文件 使用Python 如何删除最后一列 示例中的header5 我是否缺少一种简单的方法 或者我是否必须循环遍历 CSV 中的所有行并从最后一列中删除每个值 这仍然可能会给我留下不需要的前置逗号 我在 CS
  • 使用 SQLAlchemy 和多处理挂入 Python 脚本

    考虑以下 Python 脚本 它使用 SQLAlchemy 和 Python 多处理模块 这是 Debian squeeze 上的 Python 2 6 6 8 b1 默认 和 SQLAlchemy 0 6 3 3 默认 这是一些实际代码的
  • ListView 内的 Horizo​​ntalScrollView:较小的垂直滚动停止水平滚动

    在我的示例活动中 我有 一个ListView包含 包含多个Horizo ntalScrollView 一组TextView 但水平滚动体验相当糟糕 当我启动水平滚动 或快速滑动 时 我必须非常小心才能使其正常工作 一旦水平滚动包含 小的 垂
  • 使用 git filter-branch 删除除文件列表之外的所有内容的历史记录

    我正在尝试在两个 git 存储库之间移动一些文件repo1 and repo2 我有一个要移动的文件的简短列表 保留历史记录 三个要移动的文件repo1 libraryname file1 libraryname file2 tests l
  • 使用JarJar重新打包工具

    我已将 Web 应用程序部署到 Google 应用程序引擎 并且我的 Web 服务使用 jersey 1 14 框架 当我尝试使用或调用 GAE 上的 Web 服务时 我收到 java lang InknownClassChangeErro
  • 如何获取 Bokeh 小部件事件和属性的列表(可用于触发 Python 回调)

    真正的 一般 问题 我是 Bokeh 新手 我正在尝试构建一个可以根据小部件提供的输入动态更新的图 然而 对于大多数小部件来说 Python 回调的使用并没有完整记录 因此我陷入了困境 我如何知道应该使用哪种小部件方法来附加我的回调 我可以
  • if 语句中的组合框为 null

    我正在尝试编写一个 if 语句 其中如果某个组合框为空 那么它会运行代码的某个部分 如果其中有数据 然后它会运行另一个组合框 我写了这个 Private Sub ProjectAddSetDateAutoBtn Click If Proje
  • 从哪里下载 Iesi.Collections?

    尝试 nHibernate 它说找不到 Iesi Collections 我可以从哪里得到这个 如果 nHibernate 如此重要 它不应该随 nHibernate 下载一起提供吗 与 NHibernate 一起提供的 Iesi Coll
  • Flutter:Android Studio 中的内联测试覆盖率

    我正在 Flutter 中使用 Android Studio 3 3 1 在 Window 和 Ubuntu 上 开发一个开源 Android 应用程序 来源可在Github 该项目有一个测试文件 可以生成覆盖率数据 可以使用诸如连体服 这
  • VBA Excel 使用表名检查特定表是否存在

    我的 Excel 工作表中有几个表格 每个都有唯一的表名称 我想知道当前工作表中是否存在名为 Table123 的表 有人可以帮我解决这个问题吗 谢谢 吉万 TableExists False On Error GoTo Skip If A
  • 让 make 在特定目录中创建目标文件

    GNU Make 3 82 gcc 4 7 2 c89 我有以下制作文件 INC PATH I home dev tools apr include apr 1 LIB PATH L home dev tools apr lib LIBS
  • PyVISA 未在 Linux 上列出 USB 仪器

    我正在尝试从 Raspberry Pi 与 LeCroy WaveRunner 640Zi 示波器进行通信 它们通过 USB 电缆连接 我已经在 Windows 下做到了这一点 但现在我无法让它在 Linux 下工作 如果我跑lsusb我看
  • 在 JavaScript 中导入、重命名和导出函数?

    使用 JavaScript 导入命名导出 重命名并再次导出的最短方法是什么 这段代码可以工作 但感觉比应有的更冗长 import mock as myFunctionMock from context myFunction export c
  • Android Studio 4.1 中的 navigation.json 是什么?

    我今天刚刚尝试了 Android Studio 4 1 我启动了 Android Studio 并创建了空活动 然后使用 Android 虚拟设备运行它 然后失败并显示此错误 FAILURE Build failed with an exc
  • “返回 false;” 是什么意思?做?

    我编写了一个网页 用户可以在其中输入存储在数据库中的日志条目 然后使用以下命令检索并打印在页面上ajax 我还是很陌生ajax想知道是否有人可以向我解释一下是什么意思return false 在我的代码末尾做什么 有必要吗 如果我把第二个a
  • WebRTC/WebSocket 屏幕录制

    在我的用例中 我想记录屏幕活动并将其发送到服务器 非实时 我为此查看了一些博客 示例演示 但我找不到任何与此相关的内容 我可以找到很多实时流媒体音频 视频 但找不到屏幕录制 我有以下与此相关的问题 对于这个用例来说 哪一个是高效的 WebR