如何解决如何将媒体流复制到弹出窗口?
我想通过调用 <?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 举报,一经查实,本站将立刻删除。