2016-03-27 145 views
0

我試圖從swfobject 1.5升級到2.3.2(最新版本),我無法讓視頻在Firefox,Chrome,或Mac上的Safari。佔位符被替換爲播放器的輪廓,但是如果我在播放器區域中右鍵單擊,則會收到消息:「未加載電影...」。我從網絡中的各種示例中得出這些看起來非常簡單並且似乎同意。無法獲取swfobject 2.3.2在Firefox,Chrome或Safari上工作

我相信路徑是有效的,因爲我所看到的所有示例都顯示電影文件路徑相對於託管頁面(與v1.0中的swfobject.js文件的放置無關)。無論如何,我相信如果我使用無效路徑,路徑是有效的,空間不是爲了玩家。我甚至嘗試過使用絕對URL。該文件本身也是有效的,因爲我可以使用swfobject v1.5沒有任何問題播放它。

我也嘗試把JavaScript代碼放在頭部,也直接在媒體空間下(不是同時),但結果是完全一樣的。

這裏是嵌入代碼:

的Javascript(頭):

<script type="text/javascript" src="../media/flash/swfobject.js"></script> 
<script type="text/javascript"> 
    swfobject.embedSWF('../media/video/jewels.mp4', 'mediaspace_jewels', '400', '326', '10.0.0'); 
</script> 

HTML:

<div style="text-align:center; width: 640px; margin: 30px auto;" id="jewels_video_container"> 
    <p id="mediaspace_jewels">-- Something went wrong --</p> 
</div> 

如果我檢查在Firefox檢查生成的代碼,它顯示:

<object style="visibility: visible;" data="../media/video/jewels.mp4" type="application/x-shockwave-flash" id="mediaspace_jewels" height="326" width="400"></object> 

編輯:

我有點困惑的一件事是,我沒有找到我如何參考我使用的播放器(JWPlayer)的跡象。在v1.5中,它作爲SWFObject構造函數的第一個參數傳遞。

EDIT2:

下面是一個例子: http://kevinallasso.org/flashexample/html/psychotic.html

的目錄結構被暴露檢查。

回答

0

您正試圖嵌入MP4文件。 SWFObject只嵌入SWF,然後你需要有一個加載你的MP4的SWF文件(如JWPlayer)。

JWPlayer有自己的嵌入代碼,您不需要使用SWFObject。此外,JWPlayer支持HTML5播放MP4,因此甚至不需要Flash(但可用作舊版瀏覽器的後備)。 https://support.jwplayer.com/customer/portal/articles/1406723

+0

謝謝,這很好理解,JWPlayer使嵌入變得非常簡單,並且v6和v7提供完整的HTML5支持(編寫'video'標籤)非常有吸引力。對我來說,唯一的問題是支持HTML5的JWPlayer版本(不要寫'embed'標籤)不能離線使用,這是我需要的,而我覺得更低版本更私密,需要外部嵌入代碼(如SWFobject)。 – Allasso

0

正如pipwerks指出的,swfobject.embedSWF的arg [0]是數據,而不是電影文件,因此Flash播放器.swf需要去那裏(如JWPlayer)。那麼我們如何讓它播放mp4?我們如何告訴它要播放什麼文件? arg [6]將flashvars作爲對象,因此文件名可以作爲file屬性,海報圖像作爲image屬性輸入。 arg [7]以params作爲對象。

從本質上說我們的代碼變成類似:

<script type="text/javascript"> 
    var params = { 
    allowfullscreen: "true", 
    allowscriptaccess: "always" 
    }; 
    var flashvars = { 
    file: "my_video.mp4", 
    image: "video/my_video_poster.jpg" 
    }; 
    swfobject.embedSWF("video/player.swf", 
        "demo_video_flash", 
        "400", 
        "326", 
        "10.0.0", 
        "video/expressInstall.swf", 
        flashvars, 
        params); 
</script> 

的參數如下:

0)的Flash播放器SWF的位置
1)元素的ID將被替換播放器
2)視頻寬度
3)視頻高度
4)允許使用Flash的最低版本
5)expressInstall.swf - 的Adobe提示如果不是最新版本的(見下文)
6)FLASHVARS
7)PARAMS

生成的代碼變爲:

<object style="visibility: visible;" data="flash/player.swf" type="application/x-shockwave-flash" id="demo_video_flash" height="326" width="400"> 
    <param value="true" name="allowfullscreen" /> 
    <param value="always" name="allowscriptaccess" /> 
    <param value="file=my_video.mp4&image=video/my_video_poster.jpg" name="flashvars"> 
</object> 

。注意,像SWFObject 1.5,file屬性(我們電影的文件名)是相對於Flash播放器的位置,並且image屬性(海報圖像)是相對於HTML文件。

arg [5],「expressInstall.swf」參數指向一個Flash文件,該文件將觸發提示,以便用戶在Flash版本過期時更新Flash版本。更多快速安裝:http://learnswfobject.com/the-basics/adobes-express-install/

swfobject.embedSWF實際需要10個參數;我不知道最後2個是什麼。

補充說明:

雖然SWFObject的2.3進行了更新,給HTML5的支持,也不再使用<embed>標籤,但<object>標籤代替(參見下面的理由第二鏈接),它是一個Flash嵌入工具而不是視頻嵌入工具,因此不提供獨立的「帶Flash後備的HTML5」支持(也就是說,它不會寫<video>標籤),JWPlayer 6和7等嵌入代碼也是如此。 HTML5視頻支持將不得不明確處理,如本文所示:http://henriksjokvist.net/archive/2009/2/using-the-html5-video-tag-with-a-flash-fallback/
另請參閱:https://github.com/swfobject/swfobject/wiki/SWFObject-and-HTML5

SWFObject確實有一個優勢,但它可以離線使用,並且如果這是一個問題,也不會向任何實體發送數據。一些提供完整HTML5支持的玩家只能在線使用(例如,JWPlayer的完整支持版本)。

+0

SWFObject與視頻沒有任何關係,它說它不支持視頻是不公平的,因爲它從來沒有打算過。所有的SWFObject都通過在HTML文件中寫入''來嵌入SWF(不是視頻)。 SWFObject不是視頻嵌入工具。 – pipwerks

+1

@pipwerks:編輯我的答案以澄清SWFObject的功能。 – Allasso

相關問題