0

在 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>
  • 使用SWFObject.js
  • 测试相同的代码,但使用硬编码的 swf 文件并且没有 TALES (这在 IE 中有效)
  • 分隔每个元素以查看所有 3 个标签 ( <video>, <object>, <embed>) 以确保其中一个标签没有被另一个标签覆盖(它们仍然无法在 IE 中工作)
  • 按照 HTML 中的输出路径到 Inter Explorer 中的 SWF 文件(这有效,系统会提示我下载 swf 文件)
  • 记下一个与 Plone 无关但类似的问题的答案 (不幸的是,这在这种情况下没有帮助)

所以我知道我的代码有效,但我不知道为什么我没有看到我的视频。当我右键单击视频应该在 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...信息

一旦项目完成下载,我看到的框就会消失: 一旦项目完成下载,我看到的框就会消失

4

1 回答 1

0

当我偶然发现一个方便的生成器时,我正在研究FlowPlayer可能会给我一个更“完成”的 Internet Explorer 体验(而不是仅仅嵌入的 swf 文件) :

http://sandbox.thewikies.com/vfe-generator/

经过一些故事化后,它完全符合我的要求。

为遇到类似问题的其他人提供的代码:

<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。

于 2013-09-04T14:52:47.640 回答