Plone:如何将 html5 视频标签与内容类型结合使用?

发布于 2024-09-18 03:56:07 字数 931 浏览 12 评论 0原文

我有一个 zpt(zope 页面模板),我想在其中使用视频标签,例如:

<video src="FILE_LOCATION" width="320" height="240" type='video/ogg; codecs="theora, vorbis"' controls></video>

其中 FILE_LOCATION 是 plone 的内容类型。我可以使用 3 种方式访问​​该文件:

1) file.download_url #gives me: http://localhost:8000/a/acervo/testeflv2/at_download/file
2) file.absolute_url #gives me: http://localhost:8000/a/acervo/testeflv2
3) file.getFile() #gives me the file (like if I open the video file on a text editor)

obs:如果我单击浏览器上第一个或第二个选择返回的链接,它将从浏览器打开下载窗口来下载文件。

在 zpt 上,我可以执行以下操作:

<video src="" id="video_play" width="320" height="240" type='video/ogg; codecs="theora, vorbis"' controls
       tal:attributes="src python:file.absolute_url()"></video>

其中“python: file.absolut_url()”可以更改为其他选项。

但这些选项中的任何一个都有效。该页面向我显示了应该播放视频的块,但没有播放视频。
我怎样才能做到这一点?

I have a zpt (zope page template), where I want to use a video tag, something like:

<video src="FILE_LOCATION" width="320" height="240" type='video/ogg; codecs="theora, vorbis"' controls></video>

where FILE_LOCATION would be a content type of plone. I can use either 3 ways to acces the file:

1) file.download_url #gives me: http://localhost:8000/a/acervo/testeflv2/at_download/file
2) file.absolute_url #gives me: http://localhost:8000/a/acervo/testeflv2
3) file.getFile() #gives me the file (like if I open the video file on a text editor)

obs: If I click the link returned from the first or the second choice on a browser, it opens the download window from the browser to download the file.

On the zpt, I can do something like this:

<video src="" id="video_play" width="320" height="240" type='video/ogg; codecs="theora, vorbis"' controls
       tal:attributes="src python:file.absolute_url()"></video>

where "python: file.absolut_url()" can be changed to that other options.

But any of that options are working. The page shows me a block where the video should be played, but no video is played.

How can I make this work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少女的英雄梦 2024-09-25 03:56:07

您可能需要下载链接 - 您需要纯数据,而不是 Plone 默认视图。

<video src="" id="video_play"    width="320" height="240"    type='video/ogg; codecs="theora,    vorbis"' controls tal:attributes="src    file/download_url"></video>

如果这不起作用:

  • 您的浏览器支持 .ogg 吗? (用firefox和chrome都试试)
  • 真的是ogg吗?
  • 如果直接打开下载地址会发生什么?浏览器能播放什么吗?
  • 渲染模板后 src 指向什么(查看源或检查元素)。网址看起来正确吗?

You will probably need the download link - you want pure data, not a Plone default view.

i.e.

<video src="" id="video_play"    width="320" height="240"    type='video/ogg; codecs="theora,    vorbis"' controls tal:attributes="src    file/download_url"></video>

If that doesn't work:

  • Does your browser support .ogg? (Try with both firefox and chrome)
  • is it really ogg?
  • what happens if you open the download url directly? Does the browser play anything?
  • what does src point to after rendering the template (view-source or inspect element). Does the url look correct?
荒岛晴空 2024-09-25 03:56:07

主要问题来自“Content-Disposition”标头。这是一个硬编码 ogg/theora 格式的示例。
在您的自定义皮肤中创建一个脚本“inline_download”,其中包含以下代码:

RESPONSE =  container.REQUEST.RESPONSE

filename = context.getFilename()
obj = context.getFile()
RESPONSE.setHeader('Content-Disposition', 'inline;filename="%s"' % filename)
RESPONSE.setHeader('Content-Type', 'video/ogg')

return obj

现在 http://yourpath/video/inline_download应该正确显示视频,无需额外的 html。

最后在您的视图中添加以下代码:

<video height="240px" width="320px" type="video/ogg; codecs='theora, vorbis'"
       controls="controls" preloas="none"
       tal:attributes="src string:${here/absolute_url}/inline_download"/>

The main problem come from the 'Content-Disposition' header. Here an example with hardcoded ogg/theora format.
Create a script 'inline_download' in your cutom skin with this code inside:

RESPONSE =  container.REQUEST.RESPONSE

filename = context.getFilename()
obj = context.getFile()
RESPONSE.setHeader('Content-Disposition', 'inline;filename="%s"' % filename)
RESPONSE.setHeader('Content-Type', 'video/ogg')

return obj

Now http://yourpath/video/inline_download should displayed correctly the video without extra html.

Finally add this code in your view:

<video height="240px" width="320px" type="video/ogg; codecs='theora, vorbis'"
       controls="controls" preloas="none"
       tal:attributes="src string:${here/absolute_url}/inline_download"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文