JW Player - Ошибка при загрузке проигрывателя: проигрыватель HTML5 не найден в приложении Rails 3.2 на Heroku

У меня есть лицензионная версия JW Player 6. Я скачал файлы и поместил их в каталог assets/javascript. Помимо каталога скинов, есть файл JS для проигрывателя HTML5, а также файл flash.swf для проигрывателя flash. Все, что я сделал до сих пор, работало локально, но как только я нажимаю на 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 Player отображает это сообщение:

Error loading player: HTML5 player not found

Это инициализация JW Player в представлении HAML:

: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.

Какие-либо предложения?


person vich    schedule 14.05.2014    source источник
comment
Можете ли вы привести пример, который можно отладить, если это возможно?   -  person emaxsaun    schedule 15.05.2014
comment
Это весь код моей компании, поэтому, к сожалению, нелегко получить пример.   -  person vich    schedule 15.05.2014
comment
Эх, жаль, хотелось бы что-нибудь посмотреть.   -  person emaxsaun    schedule 15.05.2014


Ответы (1)


Это было довольно неприятно, но нам удалось запустить его. Решение на самом деле довольно простое (если вы знаете, что делать):

Если вы решите НЕ использовать JW Player, размещенный в облаке (который довольно легко настроить, поскольку конвейер ресурсов не задействован), загрузите и разархивируйте папку jwplayer.

Перетащите извлеченную папку jwplayer в папку /app/assets/javascripts вашего приложения Rails.

Добавьте в /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')}"
  });

Важно указать атрибуты flashplayer и html5player (на случай, если вы хотите поддерживать обе версии проигрывателя).

Настройте прочь!

person Vilmos Csizmadia    schedule 15.05.2014
comment
Мне пришлось удалить режимы из моей настройки jwplayer, но это сработало. Спасибо! - person vich; 15.05.2014