Как определить, что Flowplayer начал воспроизведение видео?

Я использую видеоплеер Flowplayer Flash для воспроизведения видео в формате MP4 внутри AnythingSlider. Мне нужно определить, когда пользователь нажал кнопку запуска на видео, чтобы остановить слайд-шоу и разрешить пользователю просматривать видео. Я пытался использовать этот код только для получения окна предупреждения, но он ничего не делает (код находится в конце страницы перед закрывающим тегом </body>):

<script type="text/javascript">
    $f("player","global/js/flowplayer/flowplayer-3.1.5.swf",{
        onStart: function(clip) {
            alert('player started');                
        }
    });
</script>

Flowplayer реализован как часть библиотеки html5media, которая автоматически определяет, может ли браузер обрабатывать тег <video>; если нет, он заменяет тег привязки ниже на Flowplayer:

<video id="vid" width="372" height="209" 
     poster="global/vid/bbq-poster.jpg" controls preload>
    <source id="videoSource" src="global/vid/BBQ_Festival.mp4" 
        type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"' 
        onerror="fallback(this.parentNode)" ></source>
    <a  
         href="global/vid/BBQ_Festival.mp4"  
         style="display:block;width:372px;height:209px; padding-left:5px; "  
         id="player"> 
    </a> 
</video>

Таким образом, вызов функции $f() находится в блоке JavaScript в конце страницы, чтобы дать игроку возможность правильно загрузиться. Что я делаю неправильно? Спасибо.

ОБНОВЛЕНИЕ: вот сгенерированный HTML, как показано Firebug; пытался использовать идентификатор "vid" для проигрывателя, и все равно безуспешно.

<object width="100%" height="100%" type="application/x-shockwave-flash" 
  data="http://html5media.googlecode.com/svn/trunk/src/flowplayer.swf" 
  id="vid_api">
  <param value="true" name="allowfullscreen">
  <param value="opaque" name="wmode">
  <param value="always" name="allowscriptaccess">
  <param value="high" name="quality">
  <param value="false" name="cachebusting">
  <param value="#000000" name="bgcolor">
  <param value="config={"play":null,"playlist":[{"url":"http://localhost/cms/global/vid/poster.jpg", 
   "scaling":"fit","fadeInSpeed":0,"fadeOutSpeed":0},
    {"url":"http://localhost/cms/global/vid/BBQ_Festival.mp4", 
    "autoPlay":false,"autoBuffering":true,"scaling":"fit",
    "fadeInSpeed":0,"fadeOutSpeed":0}],
    "clip":{"scaling":"fit","fadeInSpeed":0,"fadeOutSpeed":0},
    "plugins":{"controls":{"url":"http://html5media.googlecode.com/svn/trunk/src/flowplayer.controls.swf",
    "fullscreen":false,"autoHide":"always"}},
    "playerId":"vid"}" name="flashvars"></object>

person Alex    schedule 11.05.2010    source источник


Ответы (2)


Ты пробовал:

$f("player", "global/js/flowplayer/flowplayer-3.1.5.swf", { 
  clip: {
    onStart: function(clip) {
      alert('poop');
    }
  }
}); 
person Jan Willem B    schedule 12.05.2010
comment
Спасибо, Ян. Я пробовал это раньше, но безуспешно. Не уверен, почему это не работает. - person Alex; 12.05.2010
comment
clip: часть отличается от вашего исходного кода. Ты заметил? Просто чтобы убедиться :) - person Jan Willem B; 12.05.2010
comment
Привет, Ян. Еще раз спасибо. Да, попробовал приведенный выше код и не повезло. Обратите внимание на обновление исходного вопроса выше: я добавил сгенерированный код Flowplayer с помощью Firebug. Также попробовал vid и vid_api в качестве идентификатора игрока, и все равно не повезло. - person Alex; 12.05.2010
comment
onStart() также не очень помогает, если autoBuffering = true :-( - person nerdess; 23.02.2012

Вместо onStart используйте onBufferFull. Я использовал onStart, и иногда видео все еще буферизировалось, а onStart уже срабатывал. Используя onBufferFull, я обнаружил, что видео буферизовано до минимума и фактически начало воспроизводиться на экране. Если вам нужно, чтобы событие запускалось сразу после запуска видео, убедитесь, что вы сохранили его с флагом, который «буферизировался в первый раз». onBufferFull вызывается по частям всякий раз, когда видео буферизуется как минимум (я полагаю, что в документации указано 3 секунды) для воспроизведения. Надеюсь это поможет.

person Edgar Kenji Tanaka    schedule 27.09.2012