7

我有 JW Player 6 的许可版本。我下载了文件并将它们放在 assets/javascript 目录中。除了 skins 目录之外,还有一个用于 HTML5 播放器的 JS 文件以及一个用于 Flash 播放器的 flash.swf 文件。到目前为止,我所做的一切都在本地工作,但是一旦我推送到 Heroku,我就会出错。

第一次尝试:

在我的application.js文件中:

...
//= require jwplayer/jwplayer
//= require jwplayer/jwplayer.html5 # the file name is jwplayer.html5.js
...

运行后rake assets:clean ; rake assets:precompile,视图中出现以下错误(在 Heroku 上):

An ActionView::Template::Error occurred in nodes#show:
jwplayer/jwplayer.html5.js isn't precompiled

第二次尝试:

在我的application.js文件中:

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

然后,我将其添加到production.rb环境配置文件中:

# Also tried %w(jwplayer.html5.js)
config.assets.precompile += %w(jwplayer/jwplayer.html5.js)

在清理和预编译资产并推送到 Heroku 后,原来ActionView::Template::Error的不再发生,但现在 JW 播放器显示以下消息:

Error loading player: HTML5 player not found

这是 HAML 视图中的 JW Player 初始化:

:javascript
  jwplayer("video_display_object_#{display_object.id}").setup({
    width: "948",
    height: "533",
    image: "#{display_object.video_screenshot_url}",
    file: "#{display_object.resource_url}",
    modes: [
        { type: 'flash',
          src: "#{asset_path('jwplayer/jwplayer.flash.swf')}",
          config: {
            skin: "#{asset_path('jwplayer/skins/beelden.xml')}",
            'controlbar.position': 'over',
            'controlbar.idlehide': 'true'
          }
        },
        // I've also tried "#{javascript_path('jwplayer/jwplayer.html5.js}"
        // And "/assets/jwplayer/jwplayer.html5.js"
        { type: 'html5', src: "#{asset_path('jwplayer/jwplayer.html5.js')}" }
    ]
  });

我现在真的不知道该怎么办。就像我之前提到的,一切都在本地运行,只是在 Heroku 上不行。

有什么建议么?

4

1 回答 1

5

这非常令人沮丧,但我们设法让它启动并运行。解决方案实际上很简单(一旦你知道该怎么做):

如果您决定不使用云托管的 JW Player(由于不涉及资产管道,这很容易设置),请下载并解压缩该jwplayer文件夹。

将提取jwplayer的文件夹放入 Rails 应用程序的/app/assets/javascripts文件夹中。

将以下内容添加到您的/app/assets/javascripts/application.js:

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

运行rake assets:precompile

要让播放器在视图中启动并运行,请使用下面的 (HAML) 代码。(此处提供其他选项。)

%div{id: 'video'} Loading the player...
:javascript
  jwplayer('video').setup({
    file: 'INSERT_VIDEO_FILE_PATH_HERE',
    flashplayer: "#{asset_path('jwplayer.flash.swf')}",
    html5player: "#{asset_path('jwplayer.html5.js')}"
  });

您必须指定flashplayerhtml5player属性(如果您想支持这两个版本的播放器)。

自定义!

于 2014-05-15T14:33:18.057 回答