gpt4 book ai didi

javascript - 使用Greasemonkey加载我自己的视频播放器,跨域

转载 作者:行者123 更新时间:2023-11-29 22:27:38 25 4
gpt4 key购买 nike

我制作了一个脚本来转换所有的 wmv avi mp3 wav mp4等链接与嵌入式 jwplayer 一起玩。播放器加载但不播放视频,而是显示以下错误:Task Queue failed at step 5: Playlist could not be loaded due to cross-domain policy restrictions.

在线搜索让我意识到我需要一个名为 crossdomain.xml 的文件或类似的托管文件。现在,由于这是一个旨在在任何站点上运行的脚本,我显然不能这样做。

我考虑过在数据 uri 中内联整个播放器。我也这样尝试过: DEMO

这是我从中获取播放器的站点:http://player.longtailvideo.com/player.swf

我想做的事情可行吗?我想它的工作方式就像 img 的数据 uri。我错过了什么吗?

编辑:!
Screen shot of the fabulous ;) GM script under test

最佳答案

数据 URI 不适用于 <object><embed>节点。这就是为什么 GM_getResourceURL() will not work for this either .

此外,当使用直接 <embed> 时方法player.swf文件必须位于与视频相同的域中,否则跨站点安全性将阻止视频加载。这个特定的 block 可以内置到这个特定的 player.swf 中.

但是,当使用Longtailvideo的jwplayer.setup ()功能(无论如何他们都推荐),播放器似乎可以工作。

您必须使用播放器的托管版本,但幸运的是 http://player.longtailvideo.com/player.swf 提供了一个.
它会给出 NetworkError: 404 Not Found - http://someSite/crossdomain.xml错误,但视频会播放。

这是一个有效的示例 GM 脚本:

// ==UserScript==
// @name _Video embed fun
// @include http://YOUR_SITE/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// @require http://player.longtailvideo.com/jwplayer.js
// ==/UserScript==

//--- Find all hyperlinks to select video files.
var videoLinks = $("a[href$='.mpg'], a[href$='.mp4'], a[href$='.wmv']");

//--- For each video link, activate our video player.
videoLinks.each ( function (J) {
var jThis = $(this);
var vidURL = jThis.attr ('href');
var contID = 'myVidContainer_' + J;

jThis.after ('<div id="' + contID + '">Loading the player ...</div>');

jwplayer (contID).setup ( {
flashplayer: "http://player.longtailvideo.com/player.swf",
file: vidURL,
height: 344,
width: 480
} );
} );



警告:

  1. 某些媒体类型(或那个播放器)似乎内置了额外的 XSS“保护”。这意味着 .wmv文件将不起作用,例如,虽然许多 .mp4文件可以。

  2. 视频文件显然必须位于与此播放器完全相同的域中。所以目标页面 foo.com\somepage.htm包含视频 foo.com\somevid.mp4将(通常)工作,但如果视频是 cdn.foo.com\somevid.mp4 , 它不会起作用。

使用此播放器的唯一万无一失的方法,仍然是以下两个选项:

  • 编写您自己的 Firefox 插件,该插件不限制跨域将本地文件 (player.swf) 修补到页面中。您可以 fork 出 Greasemonkey 或 Scriptish 代码。

  • 让您的 GM 脚本通过 AJAX 将视频发送到您自己的服务器(可以是运行 XAMPP 等的本地计算机)。然后说机器将提供视频和player.swf回复你,可能在 <iframe> 中.

关于javascript - 使用Greasemonkey加载我自己的视频播放器,跨域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8584321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com