我制作了一个脚本来转换所有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一样工作。我想念什么吗?

编辑:!
javascript - 使用Greasemonkey加载我自己的跨域视频播放器-LMLPHP

最佳答案

数据URI在<object><embed>节点上不起作用。这就是为什么GM_getResourceURL() will not work for this either

此外,当使用直接<embed>方法时,player.swf文件必须与视频位于同一域中,否则跨站点安全性将阻止视频加载。该特定块可以内置在该特定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
    } );
} );






警告:


某些媒体类型(或该播放器)似乎内置了额外的XSS“保护”。例如,这意味着.wmv文件将不起作用,而许多.mp4文件却可以。
该播放器的视频文件显然必须位于相同的域中。因此,包含视频foo.com\somepage.htm的目标页面foo.com\somevid.mp4通常会起作用,但是如果视频是cdn.foo.com\somevid.mp4,则该页面将不起作用。


使用此播放器的唯一简便方法仍然是以下两个选择:


编写自己的Firefox插件,该插件没有将跨域本地文件(player.swf)修补到页面中的限制。您可以分叉Greasemonkey或Scriptish代码。
让您的GM脚本将视频AJAX AJAX到您自己的服务器(可以是运行XAMPP的本地计算机等)。然后,所述机器将视频和player.swf可能会以<iframe>的形式提供给您。

10-05 21:05
查看更多