1

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

javascript清单文件中有:

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

并在 CSS 清单中:

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

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

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

供应商-d8cd0ac….js:38 获取https://myapp.com/assets/bitmovinplayer-core.min.css

供应商-d8cd0ac….js:38 获取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

这不好..我需要能够在没有 url 中的哈希的情况下访问此资产。

我该怎么做呢?

4

1 回答 1

2

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

然而,有一个配置设置允许您覆盖路径 bitmovin-player 将从此处加载这些文件。

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 变得相当容易。你可以在 GitHub 上查看。我正在考虑将自托管选项添加到 gem 中 - 但目前没有时间进行讨论。(如果您删除<%= bitmovin_player_script %>添加到页面头部的那个,嵌入播放器的帮助器仍然有效。

希望这可以帮助。

于 2016-11-18T08:53:05.740 回答