Почему не работает мой плейлист? - PullRequest
1 голос
/ 25 августа 2010

Кросс-посты на форумах Flowplayer , но пока нет ответа, поэтому я надеюсь, что кто-то здесь может помочь.

У меня вообще нет успеха при использовании плагина Playlist. Я внимательно следил за примерами на http://flowplayer.org/plugins/javascript/playlist.html, и я заставляю первоначальный клип работать, но плагин Playlist, похоже, не регистрируется. Видео загружается и воспроизводится, поэтому FlowPlayer загружается правильно, но плейлист не добавляет никакой функциональности к моим объектам плейлиста.

Я подтвердил, что загружается скрипт плейлиста: я добавил alert("playlist!"); в начало flowplayer.playlist-3.0.8.js, сразу после начального блока комментария и перед началом кода функции. Когда я загружаю свою веб-страницу, я вижу предупреждение. Я получаю одинаковые результаты при использовании минимизированных или обычных версий скриптов и при вызове функции flowplayer с помощью flowplayer() или $f(). Я использую flowplayer 3.2.3 и playlist 3.0.8.

Вот простая простейшая статическая страница, которая пытается отобразить FlowPlayer и два клипа в галерее: FlowPlayer появляется, но нажатие на любую из ссылок галереи заменяет текущую страницу видео, воспроизводимым непосредственно в окне браузера, вместо держать меня на странице HTML и воспроизводить видео в экземпляре FlowPlayer.

Если я добавлю параметр конфигурации к вызову FlowPlayer и предоставлю клип по умолчанию, тогда этот клип воспроизводится, но опять же ссылки галереи просто переносят меня в необработанный клип, а не помещают клип в FlowPlayer.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>test flowplayer</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"></script>
    <script src="/_library/script/flowplayer/flowplayer-3.2.3.min.js" type="text/javascript"></script>
    <script src="/_library/script/flowplayer/flowplayer.playlist-3.0.8.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="player" style="display: block; width: 776px; height: 432px;"></div>
    <div id="gallery">
        <a href="/resources/video/Empowerment_TV30_776.mp4">video 1</a>
        <a href="/resources/video/Commercial_776.mp4">video 2</a>
    </div>
    <script type="text/javascript">
        $(function () {
            $f("player", "/_library/script/flowplayer/flowplayer-3.2.3.swf")
            .playlist("gallery");
        });
    </script>
</body>
</html>

Есть идеи, что я делаю не так? Любая помощь оценена, дайте мне знать, если вам нужно больше деталей.

Спасибо! - Val

Ответы [ 3 ]

0 голосов
/ 25 августа 2010
$(function () {})

Способ регистрации обработчика события load .Из-за этого код внутри него не выполняется до тех пор, пока браузер не сгенерирует событие load, и возможно, что плагин еще не доступен.

Кроме того, вы не внимательно следите за учебниками.Код, который имеет следующий код:

$(function() {
    // setup player without "internal" playlists
    $f("player2", "http://releases.flowplayer.org/swf/flowplayer-3.2.3.swf", {
        clip: {baseUrl: 'http://blip.tv/file/get'} 
    // use playlist plugin. again loop is true
    }).playlist("div.petrol", {loop:true});
});

Обратите внимание, что .playlist вызывается при возврате $f(), а не $(function(){...}).

0 голосов
/ 26 августа 2010

ОК, исправлено.

Многие из примеров используют класс в контейнере плейлиста. В примерах, использующих класс, функции списка воспроизведения передается селектор CSS - обычно что-то вроде playlist("div.gallery")

Я изменил свою разметку для использования класса, изменил параметр на playlist() на полностью квалифицированный селектор CSS, и он работает !!!

Теперь я не хочу использовать класс - у меня есть один элемент списка воспроизведения, поэтому я хочу использовать идентификатор. Я изменил разметку обратно на идентификатор:

<div id="gallery">
    <a href="video1">video1</a>
    <a href="video2">video2</a>
</div>

и изменил вызывающую сторону для использования селектора CSS для идентификаторов:

playlist("div#gallery");

И это тоже работает!

Наконец, мне стало интересно, нужно ли мне указывать элемент с идентификатором плейлиста, а я нет - я могу дать ему просто селектор CSS ID:

playlist("#gallery");

Мне кажется, моя проблема заключалась в том, что с помощью основного скрипта flowplayer вы можете обращаться к элементу-заполнителю без квалификатора . или #, например $f("player"); вместо $f("#player");. Но плагин Playlist более требователен, и вы должны использовать классификатор.

Вся эта боль за одного персонажа!

0 голосов
/ 25 августа 2010

$f("player", "/_library/script/flowplayer/flowplayer-3.2.3.swf").playlist("gallery");

возможно?

.playlist() не является функцией $(function () {})

...