Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在标签中显示来自chrome.desktopCapture.chooseDesktopMedia的视频?

在标签中显示来自chrome.desktopCapture.chooseDesktopMedia的视频?
EN

Stack Overflow用户
提问于 2014-07-15 06:33:10
回答 2查看 3.2K关注 0票数 2

我正在试用chrome.desktopCapture.chooseDesktopMedia的铬扩展,我可以得到一个桌面流很好。

我使用以下方法在后台脚本中将流转换为blob:-URL,如下所示:

代码语言:javascript
运行
AI代码解释
复制
var objectUrl = URL.createObjectURL(stream);

我似乎无法解决的是,如何将其设置为注入页面上的视频元素的src属性。

我试过以下几种方法,每一种方法都不起作用:

在Background.js中:

代码语言:javascript
运行
AI代码解释
复制
var video     = document.getElementById("video");
var objectUrl = URL.createObjectURL(stream);
video.src     = objectUrl;

在Content.js中

代码语言:javascript
运行
AI代码解释
复制
//objectUrl is a string received in a message from the background page by the content page
var video     = document.getElementById("video");
video.src     = objectUrl;

我在javascript控制台中得到了以下内容:

不允许加载本地资源: blob:chrome-extension://panahgiakgfjeioddhenaabbacfmkclm/48ff3e53-ff6a-4bee-a1dd-1b8844591a91

如果我将URL发布在消息中直到注入的页面,我也会得到相同的信息。这个能行吗?我真的很想听听这里的任何建议。

在我的清单中,我也有"web_accessible_resources": [ "*" ],但这只是为了看它是否解决了这个问题(它没有解决)。

EN

回答 2

Stack Overflow用户

发布于 2014-07-15 12:58:22

在内容脚本中,DOM与页面共享,因此任何DOM操作(例如设置视频src)都受页面的同源政策而不是扩展的约束。

如果要显示选项卡的内容,则必须将tab.Tab对象传递给chrome.desktopCapture.chooseDesktopMedia。这个对象可以通过多种方式获得,包括讯息传递制表符 API。下面是一个使用扩展按钮的示例

background.js

代码语言:javascript
运行
AI代码解释
复制
chrome.browserAction.onClicked.addListener(function(tab) {
    // NOTE: If you want to use the media stream in an iframe on an origin
    // different from the top-level frame (e.g. http://example.com), set
    //  tab.url = 'http://example.com'; before calling chooseDesktopMedia!
    //  (setting tab.url only works in Chrome 40+)
    chrome.desktopCapture.chooseDesktopMedia([
        'screen', 'window'//, 'tab'
    ], tab, function(streamId) {
        if (chrome.runtime.lastError) {
            alert('Failed to get desktop media: ' +
                chrome.runtime.lastError.message);
            return;
        }   

        // I am using inline code just to have a self-contained example.
        // You can put the following code in a separate file and pass
        // the stream ID to the extension via message passing if wanted.
        var code = '(' + function(streamId) {
            navigator.webkitGetUserMedia({
                audio: false,
                video: {
                    mandatory: {
                        chromeMediaSource: 'desktop',
                        chromeMediaSourceId: streamId
                    }   
                }   
            }, function onSuccess(stream) {
                var url = URL.createObjectURL(stream);
                var vid = document.createElement('video');
                vid.src = url;
                document.body.appendChild(vid);
            }, function onError() {
                alert('Failed to get user media.');
            }); 
        } + ')(' + JSON.stringify(streamId) + ')';

        chrome.tabs.executeScript(tab.id, {
            code: code
        }, function() {
            if (chrome.runtime.lastError) {
                alert('Failed to execute script: ' +
                    chrome.runtime.lastError.message);
            }   
        }); 
    }); 
});

manifest.json

代码语言:javascript
运行
AI代码解释
复制
{
    "name": "desktopCapture.chooseDesktopMedia for a tab",
    "version": "1",
    "manifest_version": 2,
    "background": {
        "scripts": ["background.js"]
    },
    "browser_action": {
        "default_title": "Show desktop capture request"
    },
    "permissions": [
        "desktopCapture",
        "activeTab"
    ]
}
票数 5
EN

Stack Overflow用户

发布于 2014-07-15 10:59:49

对象can不能跨源共享。如果一个数据URL与你的视频流一起工作(我不确定),它可以跨原点共享。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24760955

复制
相关文章
索引迁移
索引迁移工具esm 下载地址:https://github.com/medcl/esm 经过测试发现使用--copy_setting和--copymappings失败。而只用--copymappings也不起作用。 /bin/esm -s=http://192.168.3.206:9200 -d=http://localhost:9200 --copy_settings --copy_mappings -x=bestbuykaggle 手动创建索引,设置mapping和setting。数据导入导出没问
YG
2018/05/23
1.3K0
【迁移】Oracle分区表及索引迁移表空间
近期计划使用XTTS方式迁移某库,在进行自包含检查时发现,该库有部分数据(分区表、索引)存放于SYSTEM表空间中,需要先将这部分数据移动到要迁移的表空间中。
甚至熊熊
2021/04/22
2.5K0
生成的迁移类
EFCore 2.1出来有一段时间了,里面的新功能还没怎么用,今天研究下如何使用EF Core 2.1添加种子数据。
solenovex
2022/11/24
1.1K0
生成的迁移类
迁移学习中的负迁移:综述
迁移移学习(TL)试图利用来自一个或多个源域的数据或知识来促进目标域的学习。由于标记成本、隐私问题等原因,当目标域只有很少或没有标记数据时,它特别有用。
脑机接口社区
2020/11/11
2.3K0
迁移学习中的负迁移:综述
laravel - 根据数据库逆向生成迁移文件
因为平时在用Mybatis的时候可以根据数据库逆向生成文件,我就在想laravel是不是也可以这么做,然后去网上找了一大堆,发现都在推“xethron/migrations-generator”这个库,但是很明显作者从2017年之后,就没有再维护过了,很显然是不适合laravel9.x去用的,所以我找到了一个可以完美平替的库
用砖头敲代码
2023/01/07
1.7K0
医疗机构最终会将业务迁移到云端吗?
在组织的数据被勒索软件加密后,想要恢复几乎是不可能的,因此,预防似乎是最安全的解决方案。第一步是定期创建敏感数据的安全备份。请记住,在勒索软件攻击的情况下,组织需要物理断开存储设备以避免被感染,最好将数据备份在云中而不是内部部署的数据中心。
静一
2018/09/25
5900
动态迁移_动作迁移
在虚拟化环境中的迁移,又分为动态迁移,静态迁移,也有人称之为冷迁移和热迁移,或者离线迁移在线迁移;静态迁移和动态迁移的 区别就是静态迁移明显有一段时间客户机的服务不可用,而动态迁移则没有明显的服务暂停时间,静态迁移有两种1,是关闭客户机将其硬板镜像复制到另一台宿主机系统,然后回复启动起来,这种迁移不保留工作负载,2是,两台客户机公用一个存储系统,关闭一台客户机,防止其内存到另一台宿主机,这样做的方式是,保存迁移前的负载
全栈程序员站长
2022/11/17
1.5K0
idea配置文件迁移
最近换了电脑,idea也重新装了一遍,那么之前很繁琐的配置,现在又要配置一遍吗?不!我们可以迁移配置文件~
阿超
2022/08/16
1.5K0
idea配置文件迁移
[SQLServer大对象]——FileTable从文件系统迁移文件
阅读导航 从文件系统中迁移文件到FileTable 批量加载文件到FileTable 如何批量加载文件到FileTable 通过博文[SQLServer大对象]——FileTable初体验,已经可以将文件加载到数据库中,并查看和访问这些文件。 将文件加载到 FileTable,可以使用工具xcopy或robocopy,也可以自己编写脚本(如PowerShell)或者应用程序,复制文件到FileTable中。 现在说一说文件的迁移。 从文件系统中迁移文件到FileTable 迁移文件条件     文件存储在文
数据分析
2018/03/01
1.4K0
对象迁移空间对索引状态的影响
上篇文章介绍了迁移表、索引对象的操作: http://blog.csdn.net/bisal/article/details/50804714 发现漏了一个细节,就是表、LOB对象移动后索引的状态。
bisal
2019/01/29
5100
Laravel 数据库迁移索引长度问题
Laravel 默认使用 utf8mb4 字符,它支持在数据库中存储 "emojis" 。 如果你是在版本低于 5.7.7 的 MySQL release 或者版本低于 10.2.2 的 MariaDB release 上创建索引,那就需要你手动配置迁移生成的默认字符串长度。 即在 AppServiceProvider 中调用 Schema::defaultStringLength 方法来配置它 :
柳公子
2018/09/17
1.4K0
CDH迁移 | CDH/HDP迁移之路
Cloudera(Cloudera 和Hortonworks 合并后)所有产品不再提供社区版,用户无法获取新的功能。
云上计算
2022/04/04
2.5K0
CDH迁移 | CDH/HDP迁移之路
迁移到云端的实际方法:提升、转移和重构
如今,云计算的宣传和炒作周期似乎已经结束。云计算技术也成为各行业的颠覆者,并已成为公认的标准——主导交付模式。因此,IT行业中的大多数人现在都了解在云中运行业务的好处。获得安全性、可扩展性、灵活性、弹性、成本控制等都是企业将业务迁移到云端的优先事项。
CloudBest
2019/09/25
5490
迁移到云端的实际方法:提升、转移和重构
NLP中的范式迁移
随着预训练模型的发展,NLP领域从各自任务的单打独斗,逐渐转变为几个主流范式的中原逐鹿,近期风头正盛的prompt learning更是隐隐有一统江湖之势。
NewBeeNLP
2021/10/20
1.2K0
Elasticsearch索引迁移的四种方式
本文主要讲解Elasticsearch下实现索引迁移的几种方式。 #0、引言 将ES中的索引拷贝到其他ES中,或者将ES整体迁移,研究发现有两个开源的工具:elaticserch-dump和 Elasticsearch-Exporter。 除此之外,logstash在索引同步、迁移方面的作用也很大。 两工具及logstash实现迁移的介绍、安装、使用、验证效果等展示如下:
全栈程序员站长
2022/09/02
2.1K0
数据迁移(2) - 如何快速迁移
在上一篇中我们介绍了数据迁移的套路,但是没有介绍具体的方案,这篇着重介绍下具体的数据迁移方案
方丈的寺院
2020/05/20
3.3K0
账号迁移-迁移确认成功
您诸位好啊,我是无尘。 最近几天在开通留言的功能,因为微信设定的在18年之后注册的个人号,没有留言功能,要想开通,只能通过账号迁移来实现(具体实现细节,感兴趣的可以找我私聊)。截止到昨天,账号算是迁移完毕。
微客鸟窝
2021/08/18
1.1K0
账号迁移-迁移确认成功
Elasticsearch 实战案例(索引切分、模板、别名、数据迁移)
基于ELK搭建的日志平台,前期匆忙建设过程中一些参数和设计未做过多的考虑,上线后就需要不断根据实际情况做调整,而一些调整限于ELK的一些特性,一旦操作不当就会出现丢数据、数据写入异常、数据查不到等情况。
高广超
2019/02/25
2.7K0
Elasticsearch 实战案例(索引切分、模板、别名、数据迁移)
Oracle冷备迁移脚本(文件系统) 关注进程信息掌控迁移进度
注:需要根据你实际环境配置对应的环境变量。 执行上述脚本生成配置文件/tmp/db.config
Alfred Zhao
2019/05/24
4330
点击加载更多

相似问题

安卓系统中的YouTube视频

12

在安卓系统的WebView中只显示Youtube频道视频的缩略图

15

在安卓系统中显示YouTube JSON数据

10

安卓系统中的youtube-dl

17

在安卓系统中Youtube网站的WebView问题?

37
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档