Используйте Greasemonkey для загрузки моего собственного видеоплеера, междоменного
Я сделал скрипт, чтобы конвертировать все 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
Возможно ли то, что я пытаюсь сделать? Я предполагаю, что это работает как data uri для img. Я что-то пропустил?
1 ответ
URI данных не работают на <object>
или же <embed>
узлы. Поэтому GM_getResourceURL()
не будет работать для этого либо.
Далее при использовании прямого <embed>
метод player.swf
Файл должен находиться в том же домене, что и видео, или межсайтовая безопасность заблокирует загрузку видео. Этот конкретный блок может быть встроен в этот конкретный player.swf
,
Тем не менее, при использовании Longtailvideo's 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 передавал видео на ваш собственный сервер (это может быть ваша локальная машина с XAMPP и т. Д.). Затем сказал, что машина будет обслуживать видео и
player.swf
обратно к вам, возможно, в<iframe>
,