HTML5 VIDEO无法在我的rails 3应用中运行

时间:2012-01-13 21:09:15

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 html5-video

我正在尝试在开发中的Rails 3应用中显示HTML5视频,我正在使用Sqlite3和默认网络服务器(Webrick)。我将视频文件(movie.ogg)放在资产(assets / movie.ogg)下。视频窗口屏幕显示,但那里没有视频。我有3个问题...由于rails app资产没有视频子文件夹(就像它有图像的方式),你在哪里放视频文件? Webrick是否支持Html5视频?以下是我的代码,我在这里缺少什么,以使视频有效?

查看

       <video width="320" height="240" controls="controls">
       <source src="/assets/movie.mp4" type="video/mp4" />
       <source src="/assets/movie.ogg" type="video/ogg" />
       <source src="/assets/movie.webm" type="video/webm" />
         Your browser does not support the video tag.
       </video>

配置/初始化/ mime_types.rb

  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"
})

4 个答案:

答案 0 :(得分:10)

video_tag助手构建了一个HTML 5 <video>标记。

默认情况下,文件是从公共/视频加载的。要从资源/视频加载,请将以下行添加到config / application.rb文件中:

config.assets.paths << "#{Rails.root}/app/assets/videos"

标签使用:

<%= video_tag (["movie.mp4", "movie.ogg", "movie.webm"] :size => "320x240", :controls => true, :autobuffer => true) %>

答案 1 :(得分:4)

资产管道用于静态资产。如果您经常将视频文件添加到应用中,则应将其放在其他位置(例如public/videospublic/system/videos)。如果它们确实是静态资产,请尝试首先重新启动服务器。

答案 2 :(得分:2)

假设你的html是正确的,除非在rails 3.1中使用资产管道发生显着变化,公共文件夹中包含的任何东西都可以从网络服务器提供,因此存储视频的确切位置取决于你。根据您上面的消息来源,您应该将您的视频放入公共/资源,然后通过访问http://localhost:3000/assets/movie.mp4(或视频的任何其他src网址)确认视频正在投放。

答案 3 :(得分:0)

要在Rails 4中将视频作为静态资源投放,最好的方法是使用视频标记:

只需在资产&#39;中创建一个文件夹即可。被叫视频&#39;并将您的视频存储在那里:

app/assets/videos/mycoolvideo.mp4

然后在你的观点中:

<%= video_tag "mycoolvideo.mp4" %>

如果您需要指定尺寸,海报图片或添加控件,请添加(但这是HTML,而不是Rails):

<%= video_tag "mycoolvideo.mp4", width: "640", height: "480", poster: "mycoolvideo.jpg", controls: true %>

请注意,Rails巧妙地知道图像位于图像文件夹中,因此指定名称就足够了,而无需在图像名称之前添加图像/或资源/图像/。

如果您想传入许多视频(或更好地说,不同格式的相同视频),请传递数组:

<%= video_tag ["mycoolvideo.mp4", "mycoolvideo.ogg", "mycoolvideo.webm"], size: "620x480", controls: true %>

请注意,对于尺寸调整,您可以使用尺寸:&#34; widthxheight&#34; (&#34; 640x360&#34;)或单独高度:和宽度: