JW-Player和Rails 3.2

我正在尝试在我的应用程序中使用JW-Player。 稍微研究一下这个问题,似乎有几个被抛弃的生产gem的努力,而最新的没有记载。 那么,我就是这样做的:

我下载了JW-Player版本6,解压缩并复制了我的/ app / assets / javascripts目录中的文件,如下所示:

app/assets/javascripts/jwplayer/jwplayer.js app/assets/javascripts/jwplayer.html5.js app/assets/javascripts/jwplayer.flash.swf 

在我的app / views / layouts / application.html.erb中,我有以下内容:

    

在app / views / pages / about.html.erb中,我有以下内容:

  200, :height => 110) %> 

这是当我点击关于页面链接时发生的情况:

 Showing xxxxxxxx/app/views/pages/about.html.erb where line #10 raised: undefined method `jw_player' for #<#:0x007fe780c1f678> 

JW-Player的首次使用者。

在实现JWPlayer 6.6时,我们站在选择将jwplayer.flash.swf文件放入公共文件夹之前,使闪存模式正常工作,但是将文件分开就好了。 我最终做的是让它在开发和生产方面都有用:

  • 将所有3个文件放入vendor / assets / javascripts / jwplayer
  • 将jwplayer.js重命名为jwplayer.js.erb
  • 在jwplayer.js.erb里面,像这样更新flash文件路径配置(第一行用html5文件路径配置仅供参考)

     j={type:"html5",src:e.base+"jwplayer.html5.js"}, b={type:"flash",src:"<%= asset_path('jwplayer/jwplayer.flash.swf') %>"}; 

    (请注意,删除路径之前的“e.base +”是否为flash文件路径 – 这是允许在开发环境中使用相对路径的技巧)

根据我的理解,JWPlayer许可允许这样的修改:“为了行使其在本服务条款下的权利,例如Adaptations将产品集成到Publisher的网站或其他财产中,Adaprtations Publisher将被允许合理地进行Adaptations。发布者创建的所有改编均严格用于自己的使用,并禁止发布者分发其创建的任何改编。公司保留自行决定禁止使用任何改编的权利。

我刚刚完成了由choix开始的一个gem,并由mattherick改进了一个名为jwplayer-rails的东西,可能在旧版本的rails中工作。 它没有与资产管道合作,但是mattherick在修复它方面做得很好,我继续将JWPlayer更新到最新版本。

您可以在此处查看存储库。

以下说明正好在上面的回购中。

要将此gem添加到rails应用程序,只需将此行添加到应用程序的Gemfile:

 gem 'jwplayer-rails', :git => 'git://github.com/dutgriff/jwplayer-rails.git' 

首先使用它包括页面上的资产

 <%= jwplayer_assets %> 

然后用JW Player放置一个div

 <%= jwplayer %> 

您可以将选项传递给jwplayer帮助程序以对其进行自定义:

 <%= jwplayer({width: 500, height: 200}) %> 

可以在此处找到有关自定义的更多信息。

到目前为止它对我很有用,但是如果你发现了一个问题,请告诉我这里或github 。

我找到了解决方案。

你需要解决的主要问题是jwplayer.js想要根据jwplayer.js的路径获取jwplayer.flash.swf和jwplayer.html5.js。

您可以在Chrome开发者工具栏中看到jwplayer.js(带漂亮的打印件):

 (h.embed.config = function(b) { var e = {fallback: !0,height: 270,primary: "html5",width: 480,base: b.base ? b.base : j.getScriptPath("jwplayer.js"),aspectratio: ""}; b = j.extend(e, h.defaults, b); var e = {type: "html5",src: b.base + "jwplayer.html5.js"}, g = {type: "flash",src: b.base + "jwplayer.flash.swf"}; 

您可以将该base属性用作未记录的api,以告诉jwplayer可以在哪里找到jwplayer.flash.swf和jwplayer.html5.js。

例:

 jwplayer("player-id").setup({ width: 640, height: 480, file: "www.w3schools.com/html/movie.mp4", base: "http://cloudfront.net/assets/vendor/jwplayer/" }; 

然后它将寻找http://cloudfront.net/assets/vendor/jwplayer/jwplayer.flash.swf 。 注意:jwplayer没有资产管道指纹文件名的概念,因此请确保您同时使用md5同步该文件。

这对我有用:

  • jwplayer文件夹放在公共场所 (从长尾video下载)
  • 像外部脚本一样包含它,而不使用资产管道(HAML)。

     %script{:src => '/jwplayer/jwplayer.js'} 
  • 在你的video部分(ERB)

       

下载播放器并将其包含在布局中后,是否重新启动了服务器。 这可能是失败的原因之一。

从http://www.longtailvideo.com/jw-player/download/下载jwplayer

将这些文件放到特定目录: –

  • 应用程序/资产/ jwplayer / jwplayer.flash.swf
  • 供应商/资产/ JavaScript的/ jwplayer.js
  • 供应商/资产/ JavaScript的/ jwplayer.html5.js

然后在application.js中添加这些行

 //= require jwplayer //= require jwplayer.html5 

在您正在播放video的页面上,添加这些行

  
Loading the player ...

http://account.longtailvideo.com/#/home您可以从此处获取免费自托管密钥,以便从“ 获取许可证密钥”部分进行注册。

我也选择了JWplayer。

这是我的步骤。

我正在使用https://github.com/choix/jwplayer-rails gem。

添加

  gem 'jwplayer-rails', '1.0.1' 

到我的Gemfile。

从页面上做了所有的事情; 在show.html.slim视图文件中包含以下行:

  = jwplayer_assets br br = jwplayer({file:@lesson.media_file}) 

lesson.media_file属性包含文件位置。 对于video文件项目/ public / videos / videoclip.webm ,media_file包含字符串“/videos/videoclip.webm”。

希望这会有用。