2011-01-17 13 views
5

Sto utilizzando VideoJS e SWFObject per incorporare video. L'idea è che VideoJS proverà a utilizzare il tag video HTML5 e farà il fallback su Flash se non è supportato. Sto cercando di utilizzare SWFObject per incorporare il Flash da utilizzare come fallback. Ecco il codice rilevante:Problema di incorporamento di VideoJS e swfobject

<ul id="client_gallery"> 
<% if PortfolioMedia %> 
    <% control PortfolioMedia %> 
    <% if VideoFile %> 
     <li style="width:{$VideoWidth}px;height:{$VideoHeight}px"> 
      <div class="video-js-box"> 
       <video class="video-js" width="$VideoWidth" height="$VideoHeight" controls preload> 
        <source src="$VideoFile.URL" type="video/mp4" /> 
        <div id="flash_player"></div> 
        <script type="text/javascript"> 
        var flashvars = { 
         'file': "$VideoFile.URL" 
        }; 

        var params = { 
         'allowfullscreen': "true", 
         "wmode": "transparent" 
        }; 

        var attr = { 
         'id': 'f_player', 
         'name': 'f_player' 
        }; 

        swfobject.embedSWF('/portfolio/javascript/jwplayer/player.swf', 'flash_player', '$VideoWidth', '$VideoHeight', '9', '', flashvars, params, attr, function(e){ 
        }); 
        </script> 
       </video> 
      </div> 
     </li> 
     <% end_if %> 
    <% end_control %> 
<% end_if %> 
<script type="text/javascript"> 
    $(function(){ 
     VideoJS.setupAllWhenReady(); 
    }); 
</script> 
</ul> 

L'altra notazione è dal CMS SilverStripe, che è irrilevante in questo numero. Funziona bene in Chrome, Safari e IE ma non in Firefox. In Firefox tutto ciò che ottengo è un contenitore vuoto, come se stesse tentando di utilizzare il tag <video> ma non fosse possibile caricare una fonte compatibile.

Non è affatto incorporare Flash e so che il codice swfobject funziona perché se utilizzo solo il codice swfobject, non all'interno del tag <video>, funziona perfettamente. Quindi il problema è: VideoJS non fallback al codice incorporato da swfobject. Ma perché?

risposta

2

videojs ha già una build in flash support build in come fallback. Se si desidera utilizzare il proprio lettore di flash che si può cambiare nelle opzioni, ad esempio:

<script type="text/javascript"> 
    VideoJS.options.flash.swf = "pathtoyourplayer.swf"; 
    VideoJS.options.flash.flashVars = {youroptions}; 
    VideoJS.options.flash.params = {youtparams}; 
    VideoJS.options.flash.attributes = {yourattributes}; 
</script> 

.. 

<video ...> 
    <source src=".." type="video/mp4" /> 
</video> 

aggiuntivo: SWFObject è già in videojs inclusi.

+0

Vero. Anche se la versione di Video.js che sta utilizzando è vecchia (ad esempio "setupAllWhenReady") in cui il Flash Player è stato incluso come parte del codice di incorporamento. Probabilmente è meglio iniziare con l'aggiornamento. – heff