Используйте Greasemonkey для загрузки моего собственного видеоплеера, междоменного

Я сделал скрипт, чтобы конвертировать все wmvavimp3wavmp4 и т.д. ссылки для игры со встроенным 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. Я что-то пропустил?

РЕДАКТИРОВАТЬ:!
Снимок экрана невероятного;) GM тестируемого сценария

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
    } );
} );



Предупреждения:

  1. Некоторые типы носителей (или этот проигрыватель) имеют встроенную дополнительную "защиту" XSS. Это означает, что .wmv файлы не будут работать, например, в то время как многие .mp4 файлы делают.

  2. Видеофайл, очевидно, должен находиться в том же домене, что и данный плеер. Так целевая страница foo.com\somepage.htm содержащий видео foo.com\somevid.mp4 будет (обычно) работать, но если видео cdn.foo.com\somevid.mp4это не сработает.

Единственный надежный способ использовать этот плеер, остаются эти два варианта:

  • Напишите свой собственный аддон Firefox, который не имеет ограничений по исправлению локальных файлов (player.swf), междоменный, на страницу. Вы можете раскошелиться на код Greasemonkey или Scriptish.

  • Сделайте так, чтобы ваш сценарий GM AJAX передавал видео на ваш собственный сервер (это может быть ваша локальная машина с XAMPP и т. Д.). Затем сказал, что машина будет обслуживать видео и player.swf обратно к вам, возможно, в <iframe>,

Другие вопросы по тегам