微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将媒体流复制到弹出窗口?

如何解决如何将媒体流复制到弹出窗口?

我想通过调用 <?PHP define('IN_PHPBB',true); $PHPbb_root_path = 'forum/'; $PHPEx = substr(strrchr(__FILE__,'.'),1); include($PHPbb_root_path . 'common.' . $PHPEx); include($PHPbb_root_path . 'includes/functions_display.' . $PHPEx); include_once($PHPbb_root_path . 'includes/functions_user.' . $PHPEx); include_once($PHPbb_root_path . 'includes/functions.' . $PHPEx); // Start session management $user->session_begin(); $auth->acl($user->data); $user->setup(); $submit = request_var('submit',''); if($submit) { $sql_ary = array("server"=> 3); $sql = 'UPDATE ' . 'PHPbb5u_users' . ' SET ' . $db->sql_build_array('UPDATE',$sql_ary) . ' WHERE user_id = ' . (int) $user->data['user_id']; $db->sql_query($sql); } 在我的主选项卡中启动屏幕共享,然后将其克隆到我从我的应用程序打开的另一个弹出窗口(使用 getdisplayMedia),从而有效地显示屏幕截图两次,并行。

根据 Wikipedia 线程,this 应该可以工作 - 但它没有:

window.open

我错过了什么?

解决方法

不,不是直接的,因为 MediaStreamTrack 是不可转让的。它与创建它的文档相关联。

一种解决方法是在两个选项卡之间建立 RTCPeerConnection,并将屏幕捕获轨迹从具有它的选项卡传输到没有它的选项卡。这应该是相对高效的,因为这些位永远不会离开您的网卡。

您可以使用 BroadcastChannel 作为必要的信号来建立这样的连接,或者使用 localStorage 来做一些技巧,就像我使用相机做的那样 here,但它有效使用任何来源(先在两个标签中打开,然后在一个标签中点击 Call 按钮)。

此解决方法的一个限制是,如果您关闭原始选项卡,则会丢失两个轨道。

,

正如@Kaiido 在评论中提到的,问题是我需要将 muted 属性添加到目标视频,以便在复制流时自动播放。

更多信息在这里:https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide

自动播放可用性
作为一般规则,您可以假设媒体 仅在以下至少一项情况下才允许自动播放 真的:

  • 音频已静音或音量设置为 0
  • 用户已经互动 与网站(通过点击、点击、按键等)
  • 如果网站 已被列入白名单;这可能会自动发生,如果 浏览器确定用户频繁接触媒体,或 通过首选项或其他用户界面功能手动操作
  • 如果自动播放功能策略用于为 a 及其文档授予自动播放支持。否则,播放可能会 阻止。导致阻塞的确切情况,以及 网站如何被列入白名单的细节因浏览器而异 浏览器,但以上是很好的指南。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。