samvera_hls 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 248a3ec8d2a9e81ce645daa12c8d3a8f71056f52
4
- data.tar.gz: 25a3e187c1359fbe35c6ac746d8cf38f5b2e9b88
2
+ SHA256:
3
+ metadata.gz: '04902b097211b989489c9b083df9372d7b6a719229f3e783a84f724c9291d2f5'
4
+ data.tar.gz: 8f16a6db60bc8f9faa56e2985f249618c908981c28b10255ac2d0bcf45cb06fb
5
5
  SHA512:
6
- metadata.gz: c927805c5399255af71c80a29336654b63b25c8fec9011b18d1ed5126cd6e3c1cef31621759483560f0f17a09707392854eb9f3377c8e63a4d710874a88bba77
7
- data.tar.gz: 81b8213a48f8c9e6bd25360de8dec1dad4909b15b4fd68ddee74dbb67fdefb700982171c505d2f79a88bbaddd92c8b4341549da4bb1ec3413ae2b0416fa33de0
6
+ metadata.gz: 9895bdcf891e0b753aa3a29e5c19480dc064b39fabe912ab3ad851b3016a0bec6e9f39b1898d08ce28008d135804300b3723a92d457ff873b7c874e852d10923
7
+ data.tar.gz: 4c8d4b70cabd400f8b12593ec77f6ef74ceebe10fb9d46d52c505b2bed899aa9a5f8dd5d30df2e6c58e1f632b1bc1360c0050f4b425696d0672958ffa535cdb1
data/README.md CHANGED
@@ -5,7 +5,7 @@ This gem allows a samvera application to create hls derivative media files autom
5
5
 
6
6
  ## Motivation
7
7
 
8
- Samvera is a promising digital asset management solution with a growing feature set, and we wanted to use as a streaming media service for audiovisual collections. One Samvera based application - [Avalon Media System](https://github.com/avalonmediasystem) - is designed specifically to support multimedia streaming. However, when this module was developed, Avalon was not as feature rich or as fully developed as [Sufia](https://github.com/samvera/sufia) (another Samvera "head") as an asset management system, and its developer community is relatively small. Avalon also relies on a clunky third party transcoding service (Matterhorn) and external streaming server (Red5 or Wowza), creating an unweildly and bug-prone software stack. We wanted the streaming power and flexiblity promised by Avalon, in a more flexible and feature-rich asset management system like Sufia. This gem aims to integrate all of the benefits of adaptive bitrate streaming into Sufia's existing simple, efficient system for creating multimedia derivative files.
8
+ Samvera is a promising digital asset management solution with a growing feature set, and we wanted to use as a streaming media service for audiovisual collections. One Samvera based application - [Avalon Media System](https://github.com/avalonmediasystem) - is designed specifically to support multimedia streaming. However, at the time of this plugin's creation Avalon was not nearly as flexible or fully developed as [Hyrax](https://github.com/samvera-labs/hyrax) (another Samvera "head" which was then called 'Sufia') as an asset management system, and its developer community is relatively small. Avalon also relies on a clunky party transcoding service (Matterhorn) and external streaming server (Red5 or Wowza), creating an unweildly and bug-pronesoftware stack. We wanted the streaming power and flexiblity promised by Avalon, in a more flexible and feature-rich asset management system like Sufia. This gem aims to integrate all of the benefits of adaptive bitrate streaming into Sufia's existing simple, efficient system for creating multimedia derivative files.
9
9
 
10
10
  ## Security & tokens
11
11
 
@@ -21,7 +21,7 @@ An apache server is required. This may or may not be the same server that serves
21
21
 
22
22
  ## Installation
23
23
 
24
- ###Install the gem
24
+ ### Install the gem
25
25
  Add the following to your gem file:
26
26
 
27
27
  ```gem 'samvera_hls'```
@@ -0,0 +1,18 @@
1
+
2
+ $( window ).load(function(){
3
+ toggleButton = $('button#playlist-toggle');
4
+ toggleButton.appendTo('.mejs__playlist-current');
5
+ toggleButton.show();
6
+ })
7
+
8
+ window.onunload = function(){};
9
+
10
+ $(window).bind("pageshow", function(event) {
11
+ alert('pageshow event firing')
12
+ if (event.originalEvent.persisted) {
13
+ alert('reloading the damn thing!')
14
+ window.location.reload();
15
+ } else {
16
+ alert('NOT reloading tsdhe damn thing!')
17
+ }
18
+ });
@@ -10,9 +10,10 @@
10
10
  // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
11
  // about supported directives.
12
12
  //
13
- //= require browser_notification
14
13
  //= require jquery
14
+ //= require browser_notification
15
15
  //= require mediaelement-and-player
16
- //= require mep-feature-playlist
17
- //= require hls_initialize
18
-
16
+ //= require playlist
17
+ //= require playlist-i18n
18
+ //= require append_playlist_toggle
19
+ //= require load-player
@@ -12,6 +12,8 @@
12
12
  //
13
13
  //= require browser_notification
14
14
  //= require mediaelement-and-player
15
- //= require mep-feature-playlist
16
- //= require hls_initialize
15
+ //= require playlist
16
+ //= require playlist-i18n
17
+ //= require append_playlist_toggle
18
+ //= require load-player
17
19
 
@@ -0,0 +1,23 @@
1
+ $("video.hls_media#primary-media-player").mediaelementplayer({pluginPath: "/mejs/", showPlaylist: false, audioWidth: "100%"});
2
+ $("audio.hls_media.single#primary-media-player").mediaelementplayer({pluginPath: "/mejs/", showPlaylist: false, audioWidth: "100%"});
3
+
4
+ $("audio.hls_media.playlist#primary-media-player").mediaelementplayer({pluginPath: "/mejs/",
5
+ showPlaylist: false,
6
+ audioWidth: "100%",
7
+ alwaysShowControls: true,
8
+ audioWidth: "100%",
9
+ showPlaylist: true,
10
+ autoClosePlaylist: true,
11
+ currentMessage: "now playing: ",
12
+ features: ["playpause",
13
+ "current",
14
+ "progress",
15
+ "duration",
16
+ "tracks",
17
+ "volume",
18
+ "fullscreen",
19
+ "playlist",
20
+ "prevtrack",
21
+ "nexttrack",
22
+ "shuffle",
23
+ "loop"]});
@@ -10,7 +10,7 @@
10
10
  * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
11
  * file per style scope.
12
12
  *
13
- *= require mediaelementplayer.min
14
- *= require mep-feature-playlist
13
+ *= require mediaelementplayer
14
+ *= require playlist
15
15
  *= require samvera-hls-styles
16
16
  */
@@ -1,20 +1,14 @@
1
- .mejs-container.hls-media.mejs-audio {
2
- height:auto !important;
1
+ .mejs__container.hls_media, .mejs-container.hls_media {
2
+ margin-top: 15px;
3
+ min-height: auto !important;
3
4
  }
4
5
 
5
- .mejs-container.hls-media {
6
- clear:both;
7
- min-height: 30px;
8
-
9
- .mejs-layers { padding-top:2em; }
6
+ .mejs__container.hls_media.playlist_shown, .mejs-container.hls_media.playlist_shown {
7
+ margin-top: 15px;
8
+ min-height: 220px !important;
9
+ }
10
10
 
11
- .mejs-playlist.mejs-layer {
12
- position: relative !important;
13
- ul.mejs { margin-top:0px !important;}
14
- }
15
-
16
- .mejs-controls {
17
- bottom:auto;
18
- top:0;
19
- }
11
+ .mejs__container.hls_media.playlist_hidden, .mejs-container.hls_media.playlist_hidden {
12
+ margin-top: 45px;
20
13
  }
14
+
@@ -2,7 +2,10 @@ module SamveraHls
2
2
  module FileSetsControllerBehavior
3
3
  extend ActiveSupport::Concern
4
4
 
5
- # skip_authorize_resource :only => [:show,:embed,:master,:variant]
5
+ included do
6
+ skip_before_action :authenticate_user!, :only => [:show,:citation, :stats, :embed, :master, :variant]
7
+ skip_authorize_resource :only => [:show,:citation, :stats, :embed, :master, :variant]
8
+ end
6
9
 
7
10
  def embed
8
11
  response.headers["X-FRAME-OPTIONS"] = "ALLOWALL"
@@ -23,7 +26,7 @@ module SamveraHls
23
26
  end
24
27
 
25
28
  def media_display_partial(file_set)
26
- 'curation_concerns/file_sets/media_display/' +
29
+ 'hyrax/file_sets/media_display/' +
27
30
  if file_set.image?
28
31
  'image'
29
32
  elsif file_set.video?
@@ -5,7 +5,7 @@ module SamveraHls
5
5
  module FileSetBehavior
6
6
  extend ActiveSupport::Concern
7
7
 
8
- def create_derivatives(filename)
8
+ def create_hls_derivatives(filename)
9
9
  case mime_type
10
10
  when *self.class.audio_mime_types
11
11
  hls_dir = File.join(derivative_dir,"hls")
@@ -14,7 +14,7 @@ module SamveraHls
14
14
  hls_dir = File.join(derivative_dir,"hls")
15
15
  create_video_derivates filename, hls_dir
16
16
  else
17
- super
17
+ return false
18
18
  end
19
19
  end
20
20
 
@@ -23,6 +23,7 @@ module SamveraHls
23
23
  end
24
24
 
25
25
  def hls_master_playlist root_url
26
+ root_url = root_url.gsub("/?locale=en","")
26
27
  type = mime_type.split('/')[0]
27
28
  defaults = hls_config[type]["default"]
28
29
  playlist = "#EXTM3U\n"
@@ -42,6 +43,7 @@ module SamveraHls
42
43
  end
43
44
 
44
45
  def hls_segment_playlist root_url, format
46
+ root_url = root_url.gsub("/?locale=en","")
45
47
  playlist = ""
46
48
  File.open(segment_playlist_path(format),'r') {|file|
47
49
  file.each_line do |line|
@@ -59,6 +61,14 @@ module SamveraHls
59
61
  playlist
60
62
  end
61
63
 
64
+ def derivative_url(destination_name = nil)
65
+ if destination_name.nil?
66
+ @deriv_url ||= derivative_dir.gsub(Hyrax.config.derivatives_path,"")
67
+ else
68
+ path = derivative_path(destination_name)
69
+ URI("file://#{path}").to_s
70
+ end
71
+ end
62
72
 
63
73
  module ClassMethods
64
74
 
@@ -69,8 +79,6 @@ module SamveraHls
69
79
  end
70
80
  end
71
81
 
72
-
73
-
74
82
  private
75
83
 
76
84
  def segment_url_base
@@ -99,7 +107,7 @@ module SamveraHls
99
107
 
100
108
  def create_video_derivates filename, hls_dir
101
109
  outputs = [{ label: :thumbnail, format: 'jpg', url: derivative_url('thumbnail') },
102
- { label: 'webm', format: 'webm', url: derivative_url('webm') },
110
+ # { label: 'webm', format: 'webm', url: derivative_url('webm') },
103
111
  { label: 'mp4', format: 'mp4', url: derivative_url('mp4') },
104
112
  { label: 'hls_high', format: "hls_high", path: hls_dir},
105
113
  { label: 'hls_med', format: "hls_med", path: hls_dir},
@@ -127,23 +135,17 @@ module SamveraHls
127
135
  File.join(derivative_dir,"hls",format+".m3u8")
128
136
  end
129
137
 
130
- def derivative_url(destination_name = nil)
131
- if destination_name.nil?
132
- @deriv_url ||= derivative_dir.gsub(CurationConcerns.config.derivatives_path,"")
133
- else
134
- path = derivative_path(destination_name)
135
- URI("file://#{path}").to_s
136
- end
137
- end
138
-
139
138
  def derivative_dir
140
139
  File.split(derivative_path("dummy"))[0]
141
140
  end
142
141
 
143
142
  def derivative_path destination_name
144
- CurationConcerns::DerivativePath.derivative_path_for_reference(self, destination_name)
143
+ derivative_path_service.derivative_path_for_reference(self, destination_name)
145
144
  end
146
145
 
146
+ def derivative_path_service
147
+ Hyrax::DerivativePath
148
+ end
147
149
 
148
150
  end
149
151
  end
@@ -0,0 +1,112 @@
1
+ module SamveraHls
2
+ module SolrDocumentBehavior
3
+ extend ActiveSupport::Concern
4
+
5
+
6
+ def hls_master_url
7
+ File.join("file_set",id,"hls.m3u8")
8
+ end
9
+
10
+ def hls_master_playlist root_url
11
+ root_url = root_url.gsub("/?locale=en","")
12
+ type = mime_type.split('/')[0]
13
+ defaults = hls_config[type]["default"]
14
+ playlist = "#EXTM3U\n"
15
+ playlist << "#EXT-X-VERSION:6\n"
16
+ variants.each{|variant|
17
+ next if variant.blank?
18
+ path, filename = File.split(variant)
19
+ format = filename.gsub(".m3u8","")
20
+ options = defaults.merge(hls_config[type][format])
21
+ playlist << "#EXT-X-STREAM-INF:PROGRAM-ID=1,"
22
+ playlist << "BANDWIDTH=#{options["maxrate"]},"
23
+ playlist << "CODECS=\"#{options["codec_code"]}\","
24
+ playlist << "RESOLUTION=#{options["resolution"]}\n"
25
+ playlist << File.join(root_url,variant_url(format)) + "\n"
26
+ }
27
+ playlist
28
+ end
29
+
30
+ def hls_segment_playlist root_url, format
31
+ root_url = root_url.gsub("/?locale=en","")
32
+ playlist = ""
33
+ File.open(segment_playlist_path(format),'r') {|file|
34
+ file.each_line do |line|
35
+ if ENV["RAILS_ENV"] == 'development'
36
+ this_segment_url = File.join(root_url,
37
+ segment_url_base,
38
+ line).strip
39
+ else
40
+ this_segment_url = File.join(root_url,
41
+ segment_url_base,
42
+ timestamp.to_s,
43
+ token(line),
44
+ line).strip
45
+ end
46
+ if line.include? ".ts" then
47
+ playlist << this_segment_url + "\n"
48
+ else
49
+ playlist << line.strip+"\n"
50
+ end
51
+ end
52
+ }
53
+ playlist
54
+ end
55
+
56
+
57
+ private
58
+
59
+ def segment_url_base
60
+ File.join("stream",derivative_url,"hls")
61
+ end
62
+
63
+ def variants
64
+ variants = Dir.glob(File.join(derivative_dir,"hls","*.m3u8"))
65
+ variants.map!{ |file|
66
+ name = File.split(file)[1]
67
+ }
68
+ end
69
+
70
+ def variant_url format
71
+ File.join("file_set",id,format,"variant.m3u8")
72
+ end
73
+
74
+
75
+ def token line
76
+ @token ||= Digest::SHA256.hexdigest("/" + File.join(segment_url_base,timestamp.to_s,line).strip[0...-9] + token_secret)
77
+ end
78
+
79
+ def timestamp
80
+ @timestamp ||= Time.now.to_i + 7200
81
+ end
82
+
83
+ def token_secret
84
+ if ENV["RAILS_ENV"] == 'development'
85
+ return ''
86
+ else
87
+ return @token_secret ||= ENV['hls_token_secret']
88
+ end
89
+ end
90
+
91
+ def hls_config
92
+ @hls_config ||= YAML.load_file(Rails.root.join('config','hls.yml'))
93
+ end
94
+
95
+ def segment_playlist_path format
96
+ File.join(derivative_dir,"hls",format+".m3u8")
97
+ end
98
+
99
+ def derivative_dir
100
+ File.split(derivative_path("dummy"))[0]
101
+ end
102
+
103
+ def derivative_path destination_name
104
+ derivative_path_service.derivative_path_for_reference(self, destination_name)
105
+ end
106
+
107
+ def derivative_path_service
108
+ Hyrax::DerivativePath
109
+ end
110
+
111
+ end
112
+ end
@@ -1,6 +1,6 @@
1
- require 'samvera/derivatives'
1
+ require 'hydra/derivatives'
2
2
  module SamveraHls
3
- class HlsOutputFileService < CurationConcerns::PersistDerivatives
3
+ class HlsOutputFileService < Hyrax::PersistDerivatives
4
4
  def self.call( directives,temp_dir)
5
5
  hls_dir = directives[:path]
6
6
  FileUtils.mkdir_p(hls_dir)
@@ -1,4 +1,4 @@
1
- <audio controls="controls" class="hls-media" preload="auto" width="100%" height="100%">
1
+ <audio id="primary-media-player" class="hls-media single" controls="controls" preload="auto" width="100%" height="100%">
2
2
  <source src="<%= File.join(request.base_url,"file_set",file_set.id,"hls.m3u8") %>" type="application/x-mpegurl"/>
3
3
  Your browser does not support the audio tag.
4
4
  </audio>
@@ -1,4 +1,4 @@
1
- <video class="hls-media" preload="auto" width="100%" height="100%">
1
+ <video class="hls-media single" id="primary-media-player" controls="controls" preload="auto" width="100%" height="100%">
2
2
  <source src="<%= File.join(request.base_url,"file_set",file_set.id,"hls.m3u8") %>" type="application/x-mpegurl"/>
3
3
  Your browser does not support the video tag.
4
4
  </video>
data/config/routes.rb CHANGED
@@ -1,4 +1,4 @@
1
- Rails.application.routes.draw do
1
+ SamveraHls::Engine.routes.draw do
2
2
 
3
3
  get '/file_set/:id/hls.m3u8', to: 'file_sets#master'
4
4
  get '/file_set/:id/:format/variant.m3u8', to: 'file_sets#variant'
@@ -16,8 +16,8 @@ class SamveraHls::InstallGenerator < Rails::Generators::Base
16
16
 
17
17
  def inject_file_set_behavior
18
18
  insert_into_file "app/models/file_set.rb",
19
- :after => "Sufia::FileSetBehavior" do
20
- %{\n include SamveraHls::FileSetBehavior\n}
19
+ :after => "Hyrax::FileSetBehavior" do
20
+ %{\n include HydraHls::FileSetBehavior\n}
21
21
  end
22
22
  end
23
23
 
@@ -1,4 +1,4 @@
1
- class FileSetsController < CurationConcerns::FileSetsController
1
+ class FileSetsController < Hyrax::FileSetsController
2
2
  skip_before_action :authenticate_user!, :only => [:show,:citation, :stats, :embed, :master, :variant]
3
3
  skip_authorize_resource :only => [:show,:citation, :stats, :embed, :master, :variant]
4
4
  include SamveraHls::FileSetsControllerBehavior
@@ -13,7 +13,6 @@ module SamveraHls
13
13
  self.class.execute "#{Hydra::Derivatives.ffmpeg_path} #{inopts} -i \"#{input_path}\" #{outopts} #{output_files}"
14
14
  end
15
15
 
16
-
17
16
  def encode_file(file_suffix, options)
18
17
  return super(file_suffix,options) unless file_suffix.include?("hls")
19
18
  Dir::mktmpdir(['sufia', "_#{file_suffix}"], Hydra::Derivatives.temp_file_base){ |temp_dir|
@@ -1,3 +1,3 @@
1
1
  module SamveraHls
2
- VERSION = "0.1.1"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samvera_hls
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ned Henry, UCSC Library Digital Initiatives
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-01 00:00:00.000000000 Z
11
+ date: 2019-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,20 +36,18 @@ files:
36
36
  - LICENSE
37
37
  - README.md
38
38
  - Rakefile
39
+ - app/assets/javascripts/append_playlist_toggle.js
39
40
  - app/assets/javascripts/browser_notification.js
40
41
  - app/assets/javascripts/embed.js
41
- - app/assets/javascripts/hls_initialize.js.erb
42
42
  - app/assets/javascripts/include_player.js
43
+ - app/assets/javascripts/load-player.js
43
44
  - app/assets/stylesheets/embed.css
44
- - app/assets/stylesheets/hydra-hls-styles.scss
45
45
  - app/assets/stylesheets/samvera-hls-styles.scss
46
46
  - app/controllers/concerns/samvera_hls/file_sets_controller_behavior.rb
47
47
  - app/models/concerns/samvera_hls/file_set_behavior.rb
48
+ - app/models/concerns/samvera_hls/solr_document_behavior.rb
48
49
  - app/services/samvera_hls/hls_output_file_service.rb
49
50
  - app/views/_playlist.html.erb
50
- - app/views/curation_concerns/file_sets/embed.html.erb
51
- - app/views/curation_concerns/file_sets/media_display/_audio_hls.html.erb
52
- - app/views/curation_concerns/file_sets/media_display/_video_hls.html.erb
53
51
  - app/views/file_sets/embed.html.erb
54
52
  - app/views/file_sets/media_display/_audio_hls.html.erb
55
53
  - app/views/file_sets/media_display/_video_hls.html.erb
@@ -127,44 +125,43 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
125
  - !ruby/object:Gem::Version
128
126
  version: '0'
129
127
  requirements: []
130
- rubyforge_project:
131
- rubygems_version: 2.6.11
128
+ rubygems_version: 3.0.3
132
129
  signing_key:
133
130
  specification_version: 4
134
131
  summary: An engine to add hls adaptive streaming to a samvera based application.
135
132
  test_files:
133
+ - spec/dummy/app/controllers/application_controller.rb
134
+ - spec/dummy/app/views/layouts/application.html.erb
136
135
  - spec/dummy/app/assets/javascripts/application.js
137
136
  - spec/dummy/app/assets/stylesheets/application.css
138
- - spec/dummy/app/controllers/application_controller.rb
139
137
  - spec/dummy/app/helpers/application_helper.rb
140
- - spec/dummy/app/views/layouts/application.html.erb
141
- - spec/dummy/bin/bundle
142
- - spec/dummy/bin/rails
143
138
  - spec/dummy/bin/rake
144
139
  - spec/dummy/bin/setup
145
- - spec/dummy/config/application.rb
146
- - spec/dummy/config/boot.rb
147
- - spec/dummy/config/database.yml
148
- - spec/dummy/config/environment.rb
149
- - spec/dummy/config/environments/development.rb
140
+ - spec/dummy/bin/bundle
141
+ - spec/dummy/bin/rails
142
+ - spec/dummy/config/secrets.yml
143
+ - spec/dummy/config/routes.rb
144
+ - spec/dummy/config/locales/en.yml
150
145
  - spec/dummy/config/environments/production.rb
146
+ - spec/dummy/config/environments/development.rb
151
147
  - spec/dummy/config/environments/test.rb
152
- - spec/dummy/config/initializers/assets.rb
148
+ - spec/dummy/config/environment.rb
149
+ - spec/dummy/config/application.rb
150
+ - spec/dummy/config/database.yml
151
+ - spec/dummy/config/boot.rb
153
152
  - spec/dummy/config/initializers/backtrace_silencers.rb
154
- - spec/dummy/config/initializers/cookies_serializer.rb
155
- - spec/dummy/config/initializers/filter_parameter_logging.rb
156
- - spec/dummy/config/initializers/inflections.rb
157
153
  - spec/dummy/config/initializers/mime_types.rb
154
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
158
155
  - spec/dummy/config/initializers/session_store.rb
159
156
  - spec/dummy/config/initializers/wrap_parameters.rb
160
- - spec/dummy/config/locales/en.yml
161
- - spec/dummy/config/routes.rb
162
- - spec/dummy/config/secrets.yml
157
+ - spec/dummy/config/initializers/assets.rb
158
+ - spec/dummy/config/initializers/cookies_serializer.rb
159
+ - spec/dummy/config/initializers/inflections.rb
163
160
  - spec/dummy/config.ru
164
- - spec/dummy/public/404.html
161
+ - spec/dummy/Rakefile
162
+ - spec/dummy/public/favicon.ico
165
163
  - spec/dummy/public/422.html
166
164
  - spec/dummy/public/500.html
167
- - spec/dummy/public/favicon.ico
168
- - spec/dummy/Rakefile
165
+ - spec/dummy/public/404.html
169
166
  - spec/dummy/README.rdoc
170
167
  - spec/test_app_templates/lib/generators/test_app_generator.rb
@@ -1,22 +0,0 @@
1
- $(document).ready(function(){
2
-
3
- if(typeof isPlaylist == "undefined")
4
- isPlaylist = false;
5
- if(isPlaylist) {
6
- $(".hls-media").mediaelementplayer({
7
- audioWidth: '100%',
8
- loop: true,
9
- shuffle: false ,
10
- playlist: true,
11
- playlistposition: 'bottom',
12
- features: ['playlistfeature', 'prevtrack', 'playpause', 'nexttrack', 'loop', 'shuffle', 'playlist', 'current', 'progress', 'duration', 'volume'],
13
- flashName: "<%= asset_path("flashmediaelement.swf") %>"
14
- });
15
- } else {
16
- $(".hls-media").mediaelementplayer({
17
- audioWidth: '100%',
18
- flashName: "<%= asset_path("flashmediaelement.swf") %>"
19
- });
20
- }
21
- });
22
-
@@ -1,20 +0,0 @@
1
- .mejs-container.hls-media.mejs-audio {
2
- height:auto !important;
3
- }
4
-
5
- .mejs-container.hls-media {
6
- clear:both;
7
- min-height: 30px;
8
-
9
- .mejs-layers { padding-top:2em; }
10
-
11
- .mejs-playlist.mejs-layer {
12
- position: relative !important;
13
- ul.mejs { margin-top:0px !important;}
14
- }
15
-
16
- .mejs-controls {
17
- bottom:auto;
18
- top:0;
19
- }
20
- }
@@ -1,15 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
- <meta title="media">
8
- <%= javascript_include_tag "embed" %>
9
- <%= stylesheet_link_tag "embed" %>
10
- </head>
11
-
12
- <body>
13
- <%= render @media_partial %>
14
- </body>
15
- </html>
@@ -1,5 +0,0 @@
1
- <audio controls="controls" class="hls-media" preload="auto" width="100%" height="100%">
2
- <source src="<%= File.join(request.base_url,"file_set",file_set.id,"hls.m3u8") %>" type="application/x-mpegurl"/>
3
- Your browser does not support the audio tag.
4
- </audio>
5
-
@@ -1,5 +0,0 @@
1
- <video class="hls-media" preload="auto" width="100%" height="100%">
2
- <source src="<%= File.join(request.base_url,"file_set",file_set.id,"hls.m3u8") %>" type="application/x-mpegurl"/>
3
- Your browser does not support the video tag.
4
- </video>
5
-