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 +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>
|