ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型

标签 ruby-on-rails ruby video mime-types

我正在玩 HTML5 视频并且在 ERB 中有以下片段:

<video id="movie" width="320" height="240" poster="/test.jpg" preload="none" controls="">
    <source src="/test.mp4" type="video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;">
    <source src="/test.ogv" type="video/ogg; codecs=&quot;theora, vorbis&quot;">
</video>

mp4 视频从在我的开发环境中运行的服务器很好地流式传输到 chrome。然而 firefox 显示带有海报图像的视频播放器,但带有一个大 X。问题似乎是 mongrel 不确定 ogv 扩展的 mime 类型,并且只返回 text/plain,如 curl 所示:

$ curl -I http://0.0.0.0:3000/pr6.ogv
HTTP/1.1 200 OK
Connection: close
Date: Mon, 19 Apr 2010 12:33:50 GMT
Last-Modified: Sun, 18 Apr 2010 12:46:07 GMT
Content-Type: text/plain
Content-Length: 13652587

那么我应该在哪里配置才能返回正确的 MIME 类型呢?我已经尝试了各种创造性的搜索答案,但我能找到的最接近的东西是使用 Mime::Type.register 但是它似乎只处理 responds_to 的东西并且当我尝试它时没有任何效果案例。

所以电脑设置?杂种配置? Rails 应用程序配置?不太确定去哪里看,也不是 mime 类型的专家。我的开发环境是 Mac,Rails 2.3.5。

最佳答案

我遇到了同样的问题,并在这里找到了解决方案:http://9elements.com/io/?p=306

我正在运行 rails 2.3.5,所以我将以下代码放在 config/initializers/mime_types.rb 中,然后重置我的服务器(我正在使用 WEBrick 进行本地开发)

Rack::Mime::MIME_TYPES.merge!({
  ".ogg"     => "application/ogg",
  ".ogx"     => "application/ogg",
  ".ogv"     => "video/ogg",
  ".oga"     => "audio/ogg",
  ".mp4"     => "video/mp4",
  ".m4v"     => "video/mp4",
  ".mp3"     => "audio/mpeg",
  ".m4a"     => "audio/mpeg"
})

现在 curl 显示了 ogv 文件的正确 mime 类型。

关于ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2667430/

相关文章:

javascript - Window.onload 没有被调用 [Ruby on Rails] [Vanilla Javascript]

ruby-on-rails - Rails API : params' tempfile contains null bites from upload and fails to read, 但如果在本地抓取则读取正常

ruby-on-rails - 通过 Rails 和 pg gem 插入 PostgreSQL 服务器时,“ token "-"无效”

ruby-on-rails - 从 SonarQube 和 SCM-Activity 插件中检索解密的 Blame 信息

python - 在 OpenCV + Python 中计算汽车

ruby-on-rails - passenger-install-apache2-module 在 ubuntu 12.04 上失败

ruby - alpha-beta 剪枝方法有问题,返回 beta 吗?也许我不明白这是如何运作的

ruby-on-rails - rails 按标题排序博客文章

javascript - 如何将现有的全屏模式和视频暂停结合起来?

python - 使用 Python MoviePY 连接视频太慢