2013-02-06 112 views
2

有人不知道,如果Strobe Media PlaybackOSMF)有類似的事件:頻閃媒體播放(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> 

謝謝!

P.S.正如我所看到的here,我們可以使用STATE變量來檢測視頻的結束。 因此,在視頻結束時,它會轉到「PAUSED」。我們可以以這種方式使用它嗎?


UPDATE:

我發現onJavaScriptBridgeCreated方法不會觸發。 SMP的所有例子都是一樣的。

任何線索?

+0

我猜你嘗試運行此http://office.realeyes.com/strobe/demo/indexjs.html。 它適用於我,如果我從thia服務器運行它,但如果我將它保存在本地 - 沒有任何作品。 – sab

回答

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.我不能讓它與螢火蟲正確調試。我無法理解行爲。
2.傳遞nameattributes對象對FF很重要。否則回調觸發器,但沒有處理事件
我也建議把全球var player和處理函數頂部。

+0

或者您可以修改頻閃媒體代碼 –

+0

//在StrobeMediaPlayer.as文件中將autoPlay的默認值更改爲false(業務需求) autoPlay = true; –

0

流結束:

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