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 +5 -5
- data/README.md +2 -2
- data/app/assets/javascripts/append_playlist_toggle.js +18 -0
- data/app/assets/javascripts/embed.js +5 -4
- data/app/assets/javascripts/include_player.js +4 -2
- data/app/assets/javascripts/load-player.js +23 -0
- data/app/assets/stylesheets/embed.css +2 -2
- data/app/assets/stylesheets/samvera-hls-styles.scss +10 -16
- data/app/controllers/concerns/samvera_hls/file_sets_controller_behavior.rb +5 -2
- data/app/models/concerns/samvera_hls/file_set_behavior.rb +17 -15
- data/app/models/concerns/samvera_hls/solr_document_behavior.rb +112 -0
- data/app/services/samvera_hls/hls_output_file_service.rb +2 -2
- data/app/views/hyrax/file_sets/media_display/_audio_hls.html.erb +1 -1
- data/app/views/hyrax/file_sets/media_display/_video_hls.html.erb +1 -1
- data/config/routes.rb +1 -1
- data/lib/generators/samvera_hls/install/install_generator.rb +2 -2
- data/lib/generators/samvera_hls/install/templates/controllers/file_sets_controller.rb +1 -1
- data/lib/samvera_hls/derivatives/processors/media.rb +0 -1
- data/lib/samvera_hls/version.rb +1 -1
- metadata +25 -28
- data/app/assets/javascripts/hls_initialize.js.erb +0 -22
- data/app/assets/stylesheets/hydra-hls-styles.scss +0 -20
- data/app/views/curation_concerns/file_sets/embed.html.erb +0 -15
- data/app/views/curation_concerns/file_sets/media_display/_audio_hls.html.erb +0 -5
- data/app/views/curation_concerns/file_sets/media_display/_video_hls.html.erb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '04902b097211b989489c9b083df9372d7b6a719229f3e783a84f724c9291d2f5'
|
4
|
+
data.tar.gz: 8f16a6db60bc8f9faa56e2985f249618c908981c28b10255ac2d0bcf45cb06fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,
|
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
|
17
|
-
//= require
|
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
|
16
|
-
//= require
|
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
|
14
|
-
*= require
|
13
|
+
*= require mediaelementplayer
|
14
|
+
*= require playlist
|
15
15
|
*= require samvera-hls-styles
|
16
16
|
*/
|
@@ -1,20 +1,14 @@
|
|
1
|
-
.mejs-container.
|
2
|
-
|
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.
|
6
|
-
|
7
|
-
min-height:
|
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
|
-
|
12
|
-
|
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
|
-
|
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
|
-
'
|
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
|
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
|
-
|
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
|
-
|
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 '
|
1
|
+
require 'hydra/derivatives'
|
2
2
|
module SamveraHls
|
3
|
-
class HlsOutputFileService <
|
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
|
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
@@ -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 => "
|
20
|
-
%{\n include
|
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 <
|
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|
|
data/lib/samvera_hls/version.rb
CHANGED
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.
|
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:
|
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
|
-
|
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/
|
146
|
-
- spec/dummy/
|
147
|
-
- spec/dummy/config/
|
148
|
-
- spec/dummy/config/
|
149
|
-
- spec/dummy/config/
|
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/
|
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/
|
161
|
-
- spec/dummy/config/
|
162
|
-
- spec/dummy/config/
|
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/
|
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/
|
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>
|