使用带有rails资产管道的第三方视频播放器时的404s

时间:2016-11-17 20:38:26

标签: ruby-on-rails asset-pipeline bitmovin-player

具体来说,我正在尝试将视频播放器添加到我的网络应用中..

javascript清单文件中包含:

//= require bitmovinplayer.min                                                                                                              
//= require bitmovinplayer-core.min
//= require bitmovinplayer-controls.min

并在css清单中:

@import "bitmovinplayer-core.min";                                                                                                                          
@import "bitmovinplayer-controls.min";

在资产编译后查看连接的.js文件时,我发现这些文件已正确包含在内。

但是,在尝试实例化播放器时,我在控制台中看到404:

  

vendor-d8cd0ac ... .js:38 GET https://myapp.com/assets/bitmovinplayer-core.min.css

     

vendor-d8cd0ac ... .js:38 GET https://myapp.com/assets/bitmovinplayer-core.min.js

显然,这个播放器代码添加了带有src属性的html,这些属性指向不可访问的文件 - 因为它们在主js&从清单生成的css文件。

所以我想通过手动将这些文件添加到资产预编译数组中,这可以解决问题.............

config.assets.precompile += [
  'bitmovinplayer-core.min.css',
  'bitmovinplayer-core.min.js',
]

但是,在执行此操作并进行预编译后,我仍然无法访问:

  

/assets/bitmovinplayer-core.min.css

我必须去:

  

/assets/bitmovinplayer-core.min-78b88b860ccc407fd131639914ecd692.css

哪个不好..我需要能够访问此资产而不使用网址中的哈希值。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

这里的问题是,每当Rails通过资产管道预编译资产时,它会向文件附加一个哈希值以改进缓存。由于bitmovin-player希望这些文件默认以某种方式命名,因此会遇到404错误。

但是有一个配置设置允许您覆盖路径bitmovin-player将从documented here加载这些文件。

location : {
  html5 : '<%= asset_path('bitmovinplayer-core.min.js') %>',
  css   : '<%= asset_path('MY_CSS_FOLDER/bitmovinplayer-core.min.css') %>',
  flash : '/bitmovinplayer.swf',
  vr    : '<%= asset_path('bitmovinplayer-vr.min.js') %>',
  ctrls : '<%= asset_path('MY_JS_FOLDER/bitmovinplayer-controls.min.js') %>',
  ctrls_css: '<%= asset_path('MY_CSS_FOLDER/bitmovinplayer-controls.min.css') %>'
}

不幸的是,现在没有办法告诉玩家所有文件都捆绑在一起,它不应该重新加载任何js / css。因此,在此之前,您需要将每个单独的文件添加到config.assets.precompile列表中。

如果你真的不需要使用自托管播放器,我昨天写了一个Rails gem,它使bitmovin-player的嵌入和配置变得更加容易。你可以查看on GitHub。我正在考虑为宝石添加自托管选项 - 但目前还没有时间进入宝石。 (如果删除添加到页面头部的<%= bitmovin_player_script %>,嵌入播放器的帮助程序仍然有效。

希望这有帮助。