2016-03-27 148 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

相关问题