在Plone 4.2上使用Dexterity我创建了一个自定义类型,允许用户上传.ogg,.mp4,.webm和.swf文件,然后使用<video>
元素显示这些文件。
我遇到了一个问题,似乎Internet Explorer不知道如何获取 swf 文件。
以下是我的类型的视图:
<video width="320" height="240" controls autoplay>
<source src=""
tal:condition="context/ogg_video_file"
tal:attributes="src string:${context/absolute_url}/@@download/ogg_video_file/${context/ogg_video_file/filename}"
type="video/ogg"
/>
<source src=""
tal:condition="context/video_file"
tal:attributes="src string:${context/absolute_url}/@@download/video_file/${context/video_file/filename};"
type="video/mp4"
/>
<source src=""
tal:condition="context/webm_video_file"
tal:attributes="src string:${context/absolute_url}/@@download/webm_video_file/${context/webm_video_file/filename}"
type="video/webm"
/>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553549D43"
width="320" height="240" type="application/x-shockwave-flash">
<param name="movie"
tal:attributes="value string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"/>
<param name="flashvars" value=""/>
<param name="allowscriptaccess" value="always"/>
<param name="allowfullscreenaccess" value="true"/>
<param name="bgcolor" value="#FFFFFF"/>
<embed width="320" height="240" type="application/x-shockwave-flash"
tal:attributes="src string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"/>
</object>f]-->
</object>
</video>
在加载Internet Explorer 8或更低版本之前,所有内容都按预期工作,显然它不支持<video>
元素,因此它会呈现<object>
元素,但它似乎不会找到或播放swf文件。
我试过了:
<object>
移到<video>
<video>
,<object>
,<embed>
),以确保其中一个标记未被其他覆盖(它们仍然是将不适用于IE) 所以我知道我的代码有效,但我无法弄清楚为什么我没有看到我的视频。当我右键单击IE中视频应该的位置时,我只看到:
Movie not loaded...
About Adobe Flash Player 10...
如果你能对我的情况有所了解,我们将不胜感激。
当我尝试自行修复此信息时会有更多信息,我对我的代码略有怀疑
将<object>
代码修改为以下内容后似乎:
<object
width="320" height="240" type="application/x-shockwave-flash"
tal:attributes="data string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"
id="swf_video">
<param name="movie"
tal:attributes="value string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"/>
<param name="flashvars" value=""/>
<param name="allowscriptaccess" value="always"/>
<param name="allowfullscreenaccess" value="true"/>
<param name="bgcolor" value="#FFFFFF"/>
</object>
Internet Explorer似乎下载了flash电影,但没有播放。 (在页面加载时我可以看到小的消息“剩下1个项目”,这需要很长时间才能消失,我认为这意味着它正在下载视频但仍然没有播放。右键单击视频仍在显示的位置我是同一个Movie not loaded...
消息
我看到的框在项目下载完成后立即消失:
答案 0 :(得分:0)
当我偶然发现一个方便的生成器时,我正在调查FlowPlayer或许给我一个更加“完成”的Internet Explorer 体验(而不仅仅是一个嵌入式swf文件): / p>
http://sandbox.thewikies.com/vfe-generator/
经过一些TALES-ifying后,它完全符合我的要求。
任何其他遇到类似问题的代码:
<video width="320" height="240" controls="controls">
<source src=""
tal:condition="context/webm_video_file"
tal:attributes="src string:${context/absolute_url}/@@download/webm_video_file/${context/webm_video_file/filename}"
type="video/webm"
/>
<source src=""
tal:condition="context/video_file"
tal:attributes="src string:${context/absolute_url}/@@download/video_file/${context/video_file/filename};"
type="video/mp4"
/>
<source src=""
tal:condition="context/ogg_video_file"
tal:attributes="src string:${context/absolute_url}/@@download/ogg_video_file/${context/ogg_video_file/filename}"
type="video/ogg"
/>
<object type="application/x-shockwave-flash"
data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="320" height="240">
<param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
<param name="allowFullScreen" value="true" />
<param name="wmode" value="transparent" />
<param name="flashVars"
tal:attributes="value string:config={'playlist':[{'url':'${context/absolute_url}/@@download/video_file/${context/video_file/filename}','autoPlay':true}]}"/>
<span title="No video playback capabilities, please download the video below"></span>
</object>
</video>
代码使用HTML5支持所有支持它的浏览器,但是对于较旧的代码,它会回退到Flowplayer的flash实现。看起来它使用<param name="movie"/>
标记来引入Flash播放器,然后使用<param name="flashVars"/>
标记将视频文件的URL传递给FlowPlayer。