samvera_hls 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
-