播放 Rackspace 云文件中的视频时 Chrome 冻结

Posted

技术标签:

【中文标题】播放 Rackspace 云文件中的视频时 Chrome 冻结【英文标题】:Chrome freezes when playing videos from Rackspace cloudfiles 【发布时间】:2011-07-03 23:15:24 【问题描述】:

当我将视频托管在 Rackspace 云文件服务器上时,似乎无法让 chrome 播放带有 html5 视频标签的视频。

在常规托管上完美运行,但是一旦我将视频与 rackspace cdn url 链接,Chrome 就会冻结(完全冻结,网站 UI 完全被阻止 - 过了一会儿,Chrome 会弹出一条消息说“以下页面已无响应bla bla bla”)。

视频文件很好,就像我链接到常规主机时一样。

对请求进行了一些监视,我最初认为问题在于 webm 文件默认为 application/octet-stream mime-type。我向 rackspace 提交了一张票,他们给了我一种在上传文件时强制使用 mime 类型的方法。这样做了,文件现在以视频/webm 的形式正确发送。但 Chrome 仍然冻结。

知道这里可能出了什么问题吗?

编辑:使用iheartvideo,从机架空间加载视频会触发 MEDIA_ERR_SRC_NOT_SUPPORTED。本地网络服务器上的相同视频完全可以正常工作(??)

EDIT 2:在 Mac 和 Windows 上使用最新的主流 chrome

编辑 3:curl -I 结果:

机架空间(无工作):

HTTP/1.1 200 OK
Server: nginx/0.7.65
Content-Type: video/webm
Last-Modified: Thu, 24 Feb 2011 23:45:12 GMT
ETag: 7029f83b241aa691859012dfa047e20d
Content-Length: 20173074
Cache-Control: public, max-age=900
Expires: Fri, 25 Feb 2011 01:32:11 GMT
Date: Fri, 25 Feb 2011 01:17:11 GMT
Connection: keep-alive

Web 服务器(工作)

HTTP/1.1 200 OK
Date: Fri, 25 Feb 2011 01:17:51 GMT
Server: Apache
Last-Modified: Thu, 24 Feb 2011 03:56:26 GMT
ETag: "11a0b47-133d112-49cff32940e80"
Accept-Ranges: bytes
Content-Length: 20173074
Content-Type: text/plain

编辑 4:对于那些感兴趣的人,这是 rackscape 工作人员告诉我在文件上设置 webm 内容类型的操作:

文件浏览器不够智能 确定内容类型 视频/网络。不幸的是,有 不是更改内容类型的方法 已经存在的文件 已上传。

您需要使用其中一种 API 来 使用正确的文件重新上传您的文件 内容类型。

你也可以使用 curl 从 linux/MacOS 命令行(如果可用)。

使用您的用户名和 api 密钥运行 这个命令...

curl -I -X GET -H "X-Auth-User: USERNAME" -H "X-Auth-Key: API_KEY" https://auth.api.rackspacecloud.com/v1.0

从输出有两个重要的 价值观。

X-Storage-Url: https://storage101.......
X-Storage-Token: Long hash

你可以上传文件,

curl -X PUT -T test.webm -H "Content-Type: video/webm" -H "Content-Length: FILESIZEINBYTE" -H "X-Auth-Token: TOKEN FROM RESPONSE ABOVE" https://STORAGE URL FROM RESPONSE ABOVE/test.webm

您必须指定内容类型,并且 你必须给出正确的长度 正在上传的字节数。如果 不是你会得到一个无效的请求 错误。

【问题讨论】:

根本不是答案,只是想说/让您知道我遇到了完全相同的问题,Rackspace 的回复几乎相同。最后,我有幸切换到亚马逊,在那里我可以使用 Cyber​​duck 即时更改文件的 MIME 类型,并且(出于某种原因)Chrome 不会崩溃。不确定这是否适合您。 @Samuel。你想要什么样的更新?我已经有一段时间没有遇到这个问题了,所以我猜它已经被 Rackspace 修复了。否则,我建议在 Edit 4 中进行修复 好的,在使用 Cyber​​Duck 上传视频后它对我有用(但不适用于 rackspace webapp) 【参考方案1】:

我没有具体的答案,只是一些想法:

    在其他浏览器中呢? 它可以在 web 服务器上运行,上面的内容类型是 text/plain 那么为什么要强制使用 video/webm? Rackspace 是否可以为您提供(或者您可以在他们的网站或其他人的网站上找到)一些可以播放的示例内容,以便您进行检查?

您可以尝试 Brightcove 或 Bitgravity 的免费试用版,看看是否可行...

【讨论】:

【参考方案2】:

我经常使用 Rackspace API。 他们的 API 实际上允许您将容器设置为启用流式传输。我的第一直觉告诉我,你还没有这样做。 我流式传输各种文件类型,它们都非常适合。

这里有关于启用 CDN 流式处理的容器的更多信息: http://docs.rackspace.com/files/api/v1/cf-devguide/content/Streaming-CDN-Enabled_Containers-d1f3721.html

希望这会有所帮助,但如果不告诉我,我不介意将一些 php 示例代码放在一起来帮助您。 这一切都很容易,但了解 Rackspace 已实现的各种 API 操作有时可能是一项艰巨的任务。

【讨论】:

感谢您的后期贡献(实际上这是一个相当古老的问题)。我不记得当时看到这个。您知道是否有办法从管理控制台启用容器流式传输? (这不是 API 问题) 实际上,当您单击容器旁边的齿轮时,他们的新云控制面板 (mycloud.rackspace.com) 会显示流 url。他们的旧版本(manage.rackspacecloud.com)没有。 这很奇怪。我稍后会在新控制台上看一下,但这可能是他们的错误。要启用蒸汽容器,您必须告诉它通过 am API 调用进行流式传输。我会被熔化并用流式命令击中容器,看看会发生什么。我知道这是一个老问题,但它在我的列表中显示为未回答,我讨厌留下未回答的问题。

以上是关于播放 Rackspace 云文件中的视频时 Chrome 冻结的主要内容,如果未能解决你的问题,请参考以下文章

在 Rackspace 云文件 API 中获取对象的链接

Rackspace 云文件(使用 jclouds) - 如何获取容器位置

百度云是如何支持播放mkv和rmvb格式视频的

HTML5 Rackspace 访问控制允许来源不起作用

安卓视频播放(阿里云视频点播播放器SDK+SurfaceView)

Web前端视频播放及视频的云存储