События воспроизведения строба медиа (OSMF)

Кто-нибудь знает, есть ли в Strobe Media Playback ( OSMF) такие события, как:

  1. Потоковая передача закончена
  2. Поток запущен
  3. Ошибка потоковой передачи

чтобы получить к нему доступ через JavaScript?

Я пробовал это, но не радости.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Strobe Media Playback</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
    <script type="text/javascript">         

        // Create a StrobeMediaPlayback configuration 
        // http://mediapm.edgesuite.net/strobe/content/test/AFaerysTale_sylviaApostol_640_500_short.flv
        // http://osmf.org/dev/1.6-sprint-2/hello-world-jquery-plugin.html#
        var parameters =
            {
                src: "http://stream.flowplayer.org/bauhaus/624x260.mp4"
            ,   autoPlay: true
            ,   controlBarAutoHide: false
            ,   javascriptCallbackFunction: "onJavaScriptBridgeCreated"
            };

        // Embed the player SWF:            
        swfobject.embedSWF
            ( "StrobeMediaPlayback.swf"
            , "strobeMediaPlayback"
            , 640
            , 480
            , "10.1.0"
            , {}
            , parameters
            , { allowFullScreen: "true"}
            , { name: "strobeMediaPlayback" }
            );

        function completeFunc(time, playerId) {
            //var player = document.getElementById(playerId);
            alert("!!!");
        }

        function onCurrentTimeChange(time, playerId)
        {
            document.getElementById("currentTime").innerHTML = time;        
        }

        function onDurationChange(time, playerId)
        {
            document.getElementById("duration").innerHTML = time;   
        }       
        var player = null;
        function onJavaScriptBridgeCreated(playerId)
        {
            if (player == null) {
                player = document.getElementById(playerId);

                // Add event listeners that will update the 
                player.addEventListener("currentTimeChange", "onCurrentTimeChange");
                player.addEventListener("durationChange", "onDurationChange");

                player.addEventListener("complete", "completeFunc");

                // Pause/Resume the playback when we click the Play/Pause link
                document.getElementById("play-pause").onclick = function(){
                    var state = player.getState();
                    if (state == "ready" || state == "paused") {
                        player.play2();
                    }
                    else 
                        if (state == "playing") {
                            player.pause();
                        }
                    return false;
                };
            }
        }
    </script>   
  </head>
  <body>
    <div>
        <div>
            <span id="currentTime" /> ... </span> : <span id="duration" /> ... </span>
        </div>   
        <a href="#" id="play-pause">Play/Pause</div>  
    </div>
    <div id="strobeMediaPlayback">
      <p>Alternative content</p>
    </div>
  </body>
</html>

Спасибо!

PS Как я вижу здесь, мы можем использовать переменную STATE для определения конца видео. Так что в конце видео оно переходит в "PAUSED". Можем ли мы использовать это таким образом?


ОБНОВИТЬ:

Я обнаружил, что метод onJavaScriptBridgeCreated не запускается. То же самое происходит со всеми примерами SMP.

Любая подсказка?

2 ответа

Решение

Вот оно

function changeVidSrc(url, posterUrl, id, width, height, autoplay) {

var flashvars =
{
    src: url,
    autoPlay: autoplay,
    controlBarAutoHide: true,
    poster: posterUrl,
    skin: 'skinPath', //i just needed skin, remove if not needed
    javascriptCallbackFunction: "onJavaScriptBridgeCreated"

};

var parameters = { allowFullScreen: "true"};

var attributes = { name: id };

// Embed the player SWF:
    swfobject.embedSWF
        ('/swfs/StrobeMediaPlayback.swf',
            id, width, height,
            "10.1.0",
            '',
            flashvars,
            parameters,
            attributes
        );

}

Некоторые важные детали:
1. Я не мог позволить этому отладить с Firebug правильно. я не могу понять поведение
2. прохождение name в attributes Объект важен для ФФ. в противном случае вызывается обратный вызов, но события не обрабатываются
я бы также посоветовал поставить глобальный var player и функции обработчика сверху.

Поток закончен:

var onJavaScriptBridgeCreated = function (event) {
    if (event === ''onJavaScriptBridgeCreated'') {
        var player = document.getElementById('the id of the object tag');
        var callback = function(event){console.log(event);};
        //stopped
        player.addEventListener("complete", "callback");
        //started
        player.addEventListener("playStateChange", "callback");
        //error
        player.addEventListener("mediaError", "callback");
    }
}
Другие вопросы по тегам