hydra-derivatives 1.0.0.rc1 → 1.0.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 +4 -4
- data/VERSION +1 -1
- data/hydra-derivatives.gemspec +12 -10
- data/lib/hydra/derivatives.rb +14 -2
- data/lib/hydra/derivatives/document.rb +2 -2
- data/lib/hydra/derivatives/jpeg2k_image.rb +2 -2
- data/lib/hydra/derivatives/shell_based_processor.rb +27 -2
- data/lib/hydra/derivatives/video.rb +6 -54
- data/lib/hydra/derivatives/video/config.rb +67 -0
- data/lib/hydra/derivatives/video/processor.rb +47 -0
- data/spec/units/transcoding_spec.rb +13 -0
- data/spec/units/video_spec.rb +25 -11
- metadata +46 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcf72cd8457040e024d1afc7165e39fcd934b9e6
|
4
|
+
data.tar.gz: c32e5d6d99fd839685c76d3e7ae5f535ee9a2df5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0a0f31a6c6be71ed6d88ea9504cc6f16800449dd44d70c8b5c487cbcd232fee19acccb64c4f1b71a7d64a5029307a014b29698253d5433db6e945ff69399d56
|
7
|
+
data.tar.gz: 33c5c95a19390035f4b4227acae0dd78ccf6053de8b9215f25b0f29559a9b9e3dc03cfe544d92bc15a20708f67f1a76a66aedc400fbae0179ef148381422fdbb
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.0
|
1
|
+
1.0.0
|
data/hydra-derivatives.gemspec
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
version = File.read(File.expand_path("../VERSION", __FILE__)).strip
|
3
3
|
|
4
|
+
|
4
5
|
Gem::Specification.new do |spec|
|
5
6
|
spec.name = "hydra-derivatives"
|
6
7
|
spec.version = version
|
@@ -16,15 +17,16 @@ Gem::Specification.new do |spec|
|
|
16
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
18
|
spec.require_paths = ["lib"]
|
18
19
|
|
19
|
-
spec.add_development_dependency
|
20
|
-
spec.add_development_dependency
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
20
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
21
|
+
spec.add_development_dependency 'rake', '~> 10.1'
|
22
|
+
spec.add_development_dependency 'jettywrapper', '~> 2.0'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 3.1'
|
23
24
|
|
24
|
-
spec.add_dependency 'active-fedora', '~> 9.0
|
25
|
-
spec.add_dependency 'hydra-file_characterization'
|
26
|
-
spec.add_dependency 'mini_magick'
|
27
|
-
spec.add_dependency 'activesupport', '
|
28
|
-
spec.add_dependency 'mime-types'
|
29
|
-
spec.add_dependency 'deprecation'
|
25
|
+
spec.add_dependency 'active-fedora', '~> 9.0'
|
26
|
+
spec.add_dependency 'hydra-file_characterization', '~> 0.3'
|
27
|
+
spec.add_dependency 'mini_magick', '>= 3.2', '< 5'
|
28
|
+
spec.add_dependency 'activesupport', '~> 4.0'
|
29
|
+
spec.add_dependency 'mime-types', '~> 2.3'
|
30
|
+
spec.add_dependency 'deprecation', '~> 0.1'
|
30
31
|
end
|
32
|
+
|
data/lib/hydra/derivatives.rb
CHANGED
@@ -20,6 +20,9 @@ module Hydra
|
|
20
20
|
autoload :Jpeg2kImage
|
21
21
|
autoload :Logger
|
22
22
|
|
23
|
+
# Raised if the timout elapses
|
24
|
+
class TimeoutError < ::Timeout::Error; end
|
25
|
+
|
23
26
|
def self.config
|
24
27
|
@config ||= reset_config!
|
25
28
|
end
|
@@ -79,8 +82,17 @@ module Hydra
|
|
79
82
|
# transform_file :content, { :mp4 => {format: 'mp4'}, :webm => {format: 'webm'} }, processor: :video
|
80
83
|
#
|
81
84
|
def transform_file(file_name, transform_directives, opts={})
|
82
|
-
processor = opts[:processor]
|
83
|
-
|
85
|
+
processor = processor_class(opts[:processor] || :image)
|
86
|
+
processor.new(self, file_name, transform_directives).process
|
87
|
+
end
|
88
|
+
|
89
|
+
def processor_class(processor)
|
90
|
+
case processor
|
91
|
+
when :video
|
92
|
+
Hydra::Derivatives::Video::Processor
|
93
|
+
else
|
94
|
+
"Hydra::Derivatives::#{processor.to_s.classify}".constantize
|
95
|
+
end
|
84
96
|
end
|
85
97
|
|
86
98
|
def transform_datastream(file_name, transform_directives, opts={})
|
@@ -9,7 +9,7 @@ module Hydra
|
|
9
9
|
execute "#{Hydra::Derivatives.libreoffice_path} --invisible --headless --convert-to #{format} --outdir #{outdir} #{path}"
|
10
10
|
end
|
11
11
|
|
12
|
-
def encode_file(
|
12
|
+
def encode_file(dest_path, file_suffix, mime_type, options = '')
|
13
13
|
new_output = ''
|
14
14
|
source_file.to_tempfile do |f|
|
15
15
|
if mime_type == 'image/jpeg'
|
@@ -24,7 +24,7 @@ module Hydra
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
out_file = File.open(new_output, "rb")
|
27
|
-
object.
|
27
|
+
object.add_file(out_file.read, path: dest_path, mime_type: mime_type)
|
28
28
|
File.unlink(out_file)
|
29
29
|
end
|
30
30
|
|
@@ -25,7 +25,7 @@ module Hydra
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def encode_file(
|
28
|
+
def encode_file(dest_path, recipe, opts={})
|
29
29
|
output_file = self.class.tmp_file('.jp2')
|
30
30
|
if opts[:file_path]
|
31
31
|
self.class.encode(opts[:file_path], recipe, output_file)
|
@@ -35,7 +35,7 @@ module Hydra
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
out_file = File.open(output_file, "rb")
|
38
|
-
object.
|
38
|
+
object.add_file(out_file.read, path: dest_path, mime_type: 'image/jp2')
|
39
39
|
File.unlink(output_file)
|
40
40
|
end
|
41
41
|
|
@@ -9,6 +9,7 @@ module Hydra
|
|
9
9
|
extend ActiveSupport::Concern
|
10
10
|
|
11
11
|
included do
|
12
|
+
class_attribute :timeout
|
12
13
|
extend Open3
|
13
14
|
end
|
14
15
|
|
@@ -26,20 +27,44 @@ module Hydra
|
|
26
27
|
def options_for(format)
|
27
28
|
end
|
28
29
|
|
29
|
-
def encode_file(
|
30
|
+
def encode_file(dest_path, file_suffix, mime_type, options = '')
|
30
31
|
out_file = nil
|
31
32
|
output_file = Dir::Tmpname.create(['sufia', ".#{file_suffix}"], Hydra::Derivatives.temp_file_base){}
|
32
33
|
source_file.to_tempfile do |f|
|
33
34
|
self.class.encode(f.path, options, output_file)
|
34
35
|
end
|
35
36
|
out_file = File.open(output_file, "rb")
|
36
|
-
object.
|
37
|
+
object.add_file(out_file.read, path: dest_path, mime_type: mime_type)
|
37
38
|
File.unlink(output_file)
|
38
39
|
end
|
39
40
|
|
40
41
|
module ClassMethods
|
42
|
+
|
41
43
|
def execute(command)
|
44
|
+
context = {}
|
45
|
+
if timeout
|
46
|
+
execute_with_timeout(timeout, command, context)
|
47
|
+
else
|
48
|
+
execute_without_timeout(command, context)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def execute_with_timeout(timeout, command, context)
|
53
|
+
begin
|
54
|
+
status = Timeout::timeout(timeout) do
|
55
|
+
execute_without_timeout(command, context)
|
56
|
+
end
|
57
|
+
rescue Timeout::Error => ex
|
58
|
+
pid = context[:pid]
|
59
|
+
Process.kill("KILL", pid)
|
60
|
+
raise Hydra::Derivatives::TimeoutError, "Unable to execute command \"#{command}\"\nThe command took longer than #{timeout} seconds to execute"
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
def execute_without_timeout(command, context)
|
42
66
|
stdin, stdout, stderr, wait_thr = popen3(command)
|
67
|
+
context[:pid] = wait_thr[:pid]
|
43
68
|
stdin.close
|
44
69
|
out = stdout.read
|
45
70
|
stdout.close
|
@@ -1,58 +1,10 @@
|
|
1
|
-
module Hydra
|
2
|
-
module
|
3
|
-
|
4
|
-
include Ffmpeg
|
1
|
+
module Hydra::Derivatives
|
2
|
+
module Video
|
3
|
+
extend ActiveSupport::Autoload
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
input_options=""
|
10
|
-
output_options = "-s #{size_attributes} #{codecs(format)}"
|
11
|
-
|
12
|
-
if (format == "jpg")
|
13
|
-
input_options +=" -itsoffset -2"
|
14
|
-
output_options+= " -vframes 1 -an -f rawvideo"
|
15
|
-
else
|
16
|
-
output_options +=" #{video_attributes} #{audio_attributes}"
|
17
|
-
end
|
18
|
-
|
19
|
-
{ Ffmpeg::OUTPUT_OPTIONS => output_options, Ffmpeg::INPUT_OPTIONS => input_options}
|
20
|
-
end
|
21
|
-
|
22
|
-
def video_bitrate
|
23
|
-
'345k'
|
24
|
-
end
|
25
|
-
|
26
|
-
def video_attributes
|
27
|
-
"-g 30 -b:v #{video_bitrate}"
|
28
|
-
end
|
29
|
-
|
30
|
-
def size_attributes
|
31
|
-
"320x240"
|
32
|
-
end
|
33
|
-
|
34
|
-
def audio_attributes
|
35
|
-
"-ac 2 -ab 96k -ar 44100"
|
36
|
-
end
|
37
|
-
|
38
|
-
def codecs(format)
|
39
|
-
case format
|
40
|
-
when 'mp4'
|
41
|
-
"-vcodec libx264 -acodec libfdk_aac"
|
42
|
-
when 'webm'
|
43
|
-
"-vcodec libvpx -acodec libvorbis"
|
44
|
-
when "mkv"
|
45
|
-
"-vcodec ffv1"
|
46
|
-
when "jpg"
|
47
|
-
"-vcodec mjpeg"
|
48
|
-
else
|
49
|
-
raise ArgumentError, "Unknown format `#{format}'"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def new_mime_type(format)
|
54
|
-
format == "jpg" ? "image/jpeg" : "video/#{format}"
|
55
|
-
end
|
5
|
+
eager_autoload do
|
6
|
+
autoload :Processor
|
7
|
+
autoload :Config
|
56
8
|
end
|
57
9
|
end
|
58
10
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Hydra::Derivatives::Video
|
2
|
+
class Config
|
3
|
+
attr_writer :video_bitrate, :video_attributes, :size_attributes, :audio_attributes
|
4
|
+
|
5
|
+
def video_bitrate
|
6
|
+
@video_bitrate ||= default_video_bitrate
|
7
|
+
end
|
8
|
+
|
9
|
+
def video_attributes
|
10
|
+
@video_attributes ||= default_video_attributes
|
11
|
+
end
|
12
|
+
|
13
|
+
def size_attributes
|
14
|
+
@size_attributes ||= default_size_attributes
|
15
|
+
end
|
16
|
+
|
17
|
+
def audio_attributes
|
18
|
+
@audio_attributes ||= default_audio_attributes
|
19
|
+
end
|
20
|
+
|
21
|
+
def mpeg4
|
22
|
+
@mpeg4 ||= CodecConfig.new('-vcodec libx264 -acodec libfdk_aac')
|
23
|
+
end
|
24
|
+
|
25
|
+
def webm
|
26
|
+
@webm ||= CodecConfig.new('-vcodec libvpx -acodec libvorbis')
|
27
|
+
end
|
28
|
+
|
29
|
+
def mkv
|
30
|
+
@mkv ||= CodecConfig.new('-vcodec ffv1')
|
31
|
+
end
|
32
|
+
|
33
|
+
def jpeg
|
34
|
+
@jpeg ||= CodecConfig.new('-vcodec mjpeg')
|
35
|
+
end
|
36
|
+
|
37
|
+
class CodecConfig
|
38
|
+
attr_writer :codec
|
39
|
+
|
40
|
+
def initialize(default)
|
41
|
+
@codec = default
|
42
|
+
end
|
43
|
+
|
44
|
+
def codec
|
45
|
+
@codec
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
protected
|
51
|
+
def default_video_bitrate
|
52
|
+
'345k'
|
53
|
+
end
|
54
|
+
|
55
|
+
def default_video_attributes
|
56
|
+
"-g 30 -b:v #{video_bitrate}"
|
57
|
+
end
|
58
|
+
|
59
|
+
def default_size_attributes
|
60
|
+
"320x240"
|
61
|
+
end
|
62
|
+
|
63
|
+
def default_audio_attributes
|
64
|
+
"-ac 2 -ab 96k -ar 44100"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Hydra::Derivatives
|
2
|
+
module Video
|
3
|
+
class Processor < Hydra::Derivatives::Processor
|
4
|
+
include Ffmpeg
|
5
|
+
|
6
|
+
class_attribute :config
|
7
|
+
self.config = Config.new
|
8
|
+
|
9
|
+
protected
|
10
|
+
|
11
|
+
def options_for(format)
|
12
|
+
input_options=""
|
13
|
+
output_options = "-s #{config.size_attributes} #{codecs(format)}"
|
14
|
+
|
15
|
+
if (format == "jpg")
|
16
|
+
input_options +=" -itsoffset -2"
|
17
|
+
output_options+= " -vframes 1 -an -f rawvideo"
|
18
|
+
else
|
19
|
+
output_options +=" #{config.video_attributes} #{config.audio_attributes}"
|
20
|
+
end
|
21
|
+
|
22
|
+
{ Ffmpeg::OUTPUT_OPTIONS => output_options, Ffmpeg::INPUT_OPTIONS => input_options}
|
23
|
+
end
|
24
|
+
|
25
|
+
def codecs(format)
|
26
|
+
case format
|
27
|
+
when 'mp4'
|
28
|
+
config.mpeg4.codec
|
29
|
+
when 'webm'
|
30
|
+
config.webm.codec
|
31
|
+
when "mkv"
|
32
|
+
config.mkv.codec
|
33
|
+
when "jpg"
|
34
|
+
config.jpeg.codec
|
35
|
+
else
|
36
|
+
raise ArgumentError, "Unknown format `#{format}'"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def new_mime_type(format)
|
41
|
+
format == "jpg" ? "image/jpeg" : "video/#{format}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
@@ -138,6 +138,19 @@ describe "Transcoder" do
|
|
138
138
|
expect(file.attached_files['thumbnail']).to have_content
|
139
139
|
expect(file.attached_files['thumbnail'].mime_type).to eq('image/jpeg')
|
140
140
|
end
|
141
|
+
|
142
|
+
context "and the timeout is set" do
|
143
|
+
before do
|
144
|
+
Hydra::Derivatives::Video::Processor.timeout = 1 # one second
|
145
|
+
end
|
146
|
+
after do
|
147
|
+
Hydra::Derivatives::Video::Processor.timeout = nil # clear timeout
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should raise a timeout" do
|
151
|
+
expect { file.create_derivatives }.to raise_error Hydra::Derivatives::TimeoutError
|
152
|
+
end
|
153
|
+
end
|
141
154
|
end
|
142
155
|
|
143
156
|
describe "using callback methods" do
|
data/spec/units/video_spec.rb
CHANGED
@@ -1,10 +1,26 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Hydra::Derivatives::Video do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
describe Hydra::Derivatives::Video::Processor do
|
4
|
+
subject { described_class.new(double(:obj), 'content', directives)}
|
5
|
+
|
6
|
+
describe ".config" do
|
7
|
+
before do
|
8
|
+
@original_config = described_class.config.dup
|
9
|
+
described_class.config.mpeg4.codec = "-vcodec mpeg4 -acodec aac -strict -2"
|
10
|
+
end
|
11
|
+
|
12
|
+
after { described_class.config = @original_config }
|
13
|
+
let(:directives) {{ thumb: { format: "mp4", datastream: 'thumbnail' } }}
|
14
|
+
|
15
|
+
it "should be configurable" do
|
16
|
+
expect(subject).to receive(:encode_file).with("thumbnail", "mp4", 'video/mp4', {Hydra::Derivatives::Ffmpeg::OUTPUT_OPTIONS =>"-s 320x240 -vcodec mpeg4 -acodec aac -strict -2 -g 30 -b:v 345k -ac 2 -ab 96k -ar 44100", Hydra::Derivatives::Ffmpeg::INPUT_OPTIONS=>""})
|
17
|
+
subject.process
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "when arguments are passed as a hash" do
|
22
|
+
context "and datastream is provided as an argument" do
|
23
|
+
let(:directives) {{ thumb: { format: "webm", datastream: 'thumbnail' } }}
|
8
24
|
it "should create a datastream with the specified name" do
|
9
25
|
expect(subject).to receive(:encode_file).with("thumbnail", "webm", 'video/webm', {Hydra::Derivatives::Ffmpeg::OUTPUT_OPTIONS =>"-s 320x240 -vcodec libvpx -acodec libvorbis -g 30 -b:v 345k -ac 2 -ab 96k -ar 44100", Hydra::Derivatives::Ffmpeg::INPUT_OPTIONS=>""})
|
10
26
|
subject.process
|
@@ -12,9 +28,8 @@ describe Hydra::Derivatives::Video do
|
|
12
28
|
end
|
13
29
|
end
|
14
30
|
|
15
|
-
|
16
|
-
let(:directives) {{ :
|
17
|
-
subject { Hydra::Derivatives::Video.new(double(:obj), 'content', directives)}
|
31
|
+
context "and datastream is not provided as an argument" do
|
32
|
+
let(:directives) {{ thumb: { format: "webm" } }}
|
18
33
|
it "should create a datastream and infer the name" do
|
19
34
|
expect(subject).to receive(:encode_file).with("content_thumb", "webm", 'video/webm', {Hydra::Derivatives::Ffmpeg::OUTPUT_OPTIONS =>"-s 320x240 -vcodec libvpx -acodec libvorbis -g 30 -b:v 345k -ac 2 -ab 96k -ar 44100", Hydra::Derivatives::Ffmpeg::INPUT_OPTIONS=>""})
|
20
35
|
subject.process
|
@@ -22,9 +37,8 @@ describe Hydra::Derivatives::Video do
|
|
22
37
|
end
|
23
38
|
end
|
24
39
|
|
25
|
-
|
26
|
-
let(:directives) {{ :
|
27
|
-
subject { Hydra::Derivatives::Video.new(double(:obj), 'content', directives)}
|
40
|
+
context "and jpg is requested" do
|
41
|
+
let(:directives) {{ thumb: { format: 'jpg' , datastream: 'thumbnail'} }}
|
28
42
|
it "should create a datastream and infer the name" do
|
29
43
|
expect(subject).to receive(:encode_file).with("thumbnail", "jpg", "image/jpeg", {:output_options=>"-s 320x240 -vcodec mjpeg -vframes 1 -an -f rawvideo", :input_options=>" -itsoffset -2"})
|
30
44
|
subject.process
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-derivatives
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,134 +28,134 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '10.1'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '10.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: jettywrapper
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '2.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
54
|
+
version: '2.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: active-fedora
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 9.0
|
75
|
+
version: '9.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 9.0
|
82
|
+
version: '9.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: hydra-file_characterization
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
89
|
+
version: '0.3'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
96
|
+
version: '0.3'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: mini_magick
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '3.2'
|
104
|
+
- - "<"
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '5'
|
104
107
|
type: :runtime
|
105
108
|
prerelease: false
|
106
109
|
version_requirements: !ruby/object:Gem::Requirement
|
107
110
|
requirements:
|
108
111
|
- - ">="
|
109
112
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
113
|
+
version: '3.2'
|
114
|
+
- - "<"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '5'
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
118
|
name: activesupport
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
114
120
|
requirements:
|
115
|
-
- - "
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 3.2.13
|
118
|
-
- - "<"
|
121
|
+
- - "~>"
|
119
122
|
- !ruby/object:Gem::Version
|
120
|
-
version: '
|
123
|
+
version: '4.0'
|
121
124
|
type: :runtime
|
122
125
|
prerelease: false
|
123
126
|
version_requirements: !ruby/object:Gem::Requirement
|
124
127
|
requirements:
|
125
|
-
- - "
|
126
|
-
- !ruby/object:Gem::Version
|
127
|
-
version: 3.2.13
|
128
|
-
- - "<"
|
128
|
+
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: '
|
130
|
+
version: '4.0'
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: mime-types
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
|
-
- - "
|
135
|
+
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: '
|
137
|
+
version: '2.3'
|
138
138
|
type: :runtime
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - "
|
142
|
+
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
144
|
+
version: '2.3'
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
name: deprecation
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- - "
|
149
|
+
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: '0'
|
151
|
+
version: '0.1'
|
152
152
|
type: :runtime
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
|
-
- - "
|
156
|
+
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: '0'
|
158
|
+
version: '0.1'
|
159
159
|
description: Derivative generation plugin for hydra
|
160
160
|
email:
|
161
161
|
- justin@curationexperts.com
|
@@ -191,6 +191,8 @@ files:
|
|
191
191
|
- lib/hydra/derivatives/railtie.rb
|
192
192
|
- lib/hydra/derivatives/shell_based_processor.rb
|
193
193
|
- lib/hydra/derivatives/video.rb
|
194
|
+
- lib/hydra/derivatives/video/config.rb
|
195
|
+
- lib/hydra/derivatives/video/processor.rb
|
194
196
|
- spec/fixtures/FlashPix.ppt
|
195
197
|
- spec/fixtures/adobe1998.tif
|
196
198
|
- spec/fixtures/countdown.avi
|
@@ -229,12 +231,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
231
|
version: '0'
|
230
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
233
|
requirements:
|
232
|
-
- - "
|
234
|
+
- - ">="
|
233
235
|
- !ruby/object:Gem::Version
|
234
|
-
version:
|
236
|
+
version: '0'
|
235
237
|
requirements: []
|
236
238
|
rubyforge_project:
|
237
|
-
rubygems_version: 2.
|
239
|
+
rubygems_version: 2.2.2
|
238
240
|
signing_key:
|
239
241
|
specification_version: 4
|
240
242
|
summary: Derivative generation plugin for hydra
|
@@ -262,3 +264,4 @@ test_files:
|
|
262
264
|
- spec/units/logger_spec.rb
|
263
265
|
- spec/units/transcoding_spec.rb
|
264
266
|
- spec/units/video_spec.rb
|
267
|
+
has_rdoc:
|