voyeur 0.0.1
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.
- data/.gitignore +14 -0
- data/Gemfile +4 -0
- data/README.md +100 -0
- data/Rakefile +3 -0
- data/Voyeur.gemspec +23 -0
- data/lib/Voyeur/converter.rb +55 -0
- data/lib/Voyeur/exceptions.rb +7 -0
- data/lib/Voyeur/version.rb +3 -0
- data/lib/Voyeur/video.rb +23 -0
- data/lib/Voyeur/video_converters/mp4.rb +13 -0
- data/lib/Voyeur/video_converters/ogv.rb +12 -0
- data/lib/Voyeur/video_converters/webm.rb +12 -0
- data/lib/Voyeur.rb +8 -0
- data/spec/converter_spec.rb +7 -0
- data/spec/converters/mp4_spec.rb +73 -0
- data/spec/converters/ogv_spec.rb +46 -0
- data/spec/converters/webm_spec.rb +48 -0
- data/spec/fixtures/converted/PLACEHOLDER +2 -0
- data/spec/fixtures/test.3gp +0 -0
- data/spec/fixtures/test.mpeg +0 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/spec_helpers/video_file_spec_helper.rb +19 -0
- data/spec/video_spec.rb +78 -0
- metadata +102 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
# Voyeur
|
2
|
+
Voyeur is a ruby library that will take your video files and convert
|
3
|
+
them to common HTML5 formats exposing an easy to use API. Seriously
|
4
|
+
it's like falling out of a tree then climbing back.
|
5
|
+
|
6
|
+
## Installation
|
7
|
+
The gem is easily installed by including the following line in your
|
8
|
+
Gemfile (if you role that way)
|
9
|
+
|
10
|
+
gem 'voyeur'
|
11
|
+
|
12
|
+
or on the command line
|
13
|
+
|
14
|
+
gem install voyeur
|
15
|
+
require 'voyeur'
|
16
|
+
|
17
|
+
## Setup
|
18
|
+
This gem requires ffmpeg to be installed. If you require assistance
|
19
|
+
there is a basic guide included in the [wiki page](https://github.com/devthenet/Voyeur/wiki/Installing-ffmpeg-%28Ubuntu%29). Feel free to add more!
|
20
|
+
You can also try out automated [setup scripts](https://github.com/devthenet/ffmpeg_setup) (at the moment we only have for ubuntu):
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
Simple conversions may be done by simply:
|
27
|
+
|
28
|
+
Voyeur::Video.new( filename: path_to_file ).convert( to: :mp4 )
|
29
|
+
|
30
|
+
This will convert the video into Mp4 and save it in the same directory
|
31
|
+
as the original video.
|
32
|
+
|
33
|
+
Alternatively you can convert to all 3 types at once:
|
34
|
+
|
35
|
+
Voyeur::Video.new( filename: path_to_file ).convert_to_html5
|
36
|
+
This will convert the video into 3 formats. Mp4, Ogv and Webm and place
|
37
|
+
them in the same folder as the parent.
|
38
|
+
|
39
|
+
I have allowed the user to specify an output filename. (Note: if no
|
40
|
+
output filename the file is just named after the original file):
|
41
|
+
|
42
|
+
Voyeur::Video.new( filename: path_to_file ).convert( to: :mp4, output_filename: "my_cool_video" )
|
43
|
+
|
44
|
+
This will give you a converted video called "my_cool_video.mp4".
|
45
|
+
|
46
|
+
You can also convert to all with the following:
|
47
|
+
|
48
|
+
Voyeur::Video.new( filename: path_to_file ).convert_to_html5( output_filename: "my_cool_video" )
|
49
|
+
|
50
|
+
It is also possible to place the formatted video in a custom folder:
|
51
|
+
|
52
|
+
Voyeur::Video.new( filename: path_to_file ).convert( to: :mp4, output_path: "my/cool/file/path" )
|
53
|
+
|
54
|
+
or
|
55
|
+
|
56
|
+
Voyeur::Video.new( filename: path_to_file ).convert_to_html5( output_path: "my/cool/file/path" )
|
57
|
+
|
58
|
+
## Extendibility
|
59
|
+
|
60
|
+
I've designed this in the hopes that others will be able to add
|
61
|
+
other formats / conversion options (haven't quite gone that far yet).
|
62
|
+
Right now it's as simple as creating a file similar to this:
|
63
|
+
|
64
|
+
module Voyeur
|
65
|
+
class Mp4 < Converter
|
66
|
+
|
67
|
+
def file_extension
|
68
|
+
"mp4"
|
69
|
+
end
|
70
|
+
|
71
|
+
def convert_options
|
72
|
+
"-b 1500k -vcodec libx264 -g 30"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
|
78
|
+
The two methods file_extension and convert options are mandatory.
|
79
|
+
|
80
|
+
## Todo
|
81
|
+
1. Spawn processes simultaniously so more than one video can be converted
|
82
|
+
at once.
|
83
|
+
2. Add functionality so that users can use more specific convert
|
84
|
+
options
|
85
|
+
|
86
|
+
## Authors
|
87
|
+
#### Peter Garbers
|
88
|
+
* https://github.com/petergarbers
|
89
|
+
* http://twitter.com/petergarbers
|
90
|
+
|
91
|
+
#### Hendrik Louw
|
92
|
+
* https://github.com/HendrikLouw
|
93
|
+
* http://twitter.com/hendrik_louw
|
94
|
+
|
95
|
+
## Sources
|
96
|
+
|
97
|
+
### Links
|
98
|
+
* http://stackoverflow.com/questions/5487085/ffmpeg-covert-html-5-video-not-working
|
99
|
+
* http://johndyer.name/ffmpeg-settings-for-html5-codecs-h264mp4-theoraogg-vp8webm/
|
100
|
+
* http://rodrigopolo.com/ffmpeg/cheats.html
|
data/Rakefile
ADDED
data/Voyeur.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "Voyeur/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "voyeur"
|
7
|
+
s.version = Voyeur::VERSION
|
8
|
+
s.authors = ["Peter Garbers", "Hendrik F. Louw"]
|
9
|
+
s.email = ["peter.garbers@gmail.com", "hflouw@gmail.com"]
|
10
|
+
s.homepage = "http://devthenet.github.com/"
|
11
|
+
s.summary = %q{Ruby library to convert common video formats to HTML5 formats}
|
12
|
+
s.description = %q{A ruby library to convert videos into common html5 formats}
|
13
|
+
|
14
|
+
s.rubyforge_project = "Voyeur"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency "rspec"
|
22
|
+
s.add_dependency "open4"
|
23
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Voyeur
|
2
|
+
class Converter
|
3
|
+
attr_accessor :input_video
|
4
|
+
attr_reader :output_video
|
5
|
+
attr_reader :status
|
6
|
+
|
7
|
+
def self.create(options)
|
8
|
+
constant = Voyeur
|
9
|
+
klass = "#{options[:format].capitalize}"
|
10
|
+
raise Voyeur::Exceptions::InvalidFormat unless constant.const_defined? klass
|
11
|
+
klass = constant.const_get klass
|
12
|
+
klass.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def convert(options)
|
16
|
+
@input_video = options[:video]
|
17
|
+
raise Voyeur::Exceptions::NoVideoPresent unless @input_video
|
18
|
+
output_filename = self.output_path( options[:output_path] )
|
19
|
+
@output_video = Video.new(filename: output_file(options[:output_path], options[:output_filename]))
|
20
|
+
self.call_external_converter
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
def output_file(path, filename)
|
26
|
+
"#{output_path(path)}/#{output_filename(filename)}"
|
27
|
+
end
|
28
|
+
|
29
|
+
def output_path(output_path = nil)
|
30
|
+
raise Voyeur::Exceptions::InvalidLocation if output_path && !File.directory?(output_path)
|
31
|
+
output_path ? output_path : File.dirname(@input_video.filename)
|
32
|
+
end
|
33
|
+
|
34
|
+
def output_filename(input_filename = nil)
|
35
|
+
filename = input_filename.nil? ? @input_video.filename : input_filename
|
36
|
+
File.basename(filename, '.*') + ".#{self.file_extension}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def call_external_converter
|
40
|
+
command = "ffmpeg -i #{@input_video.filename} #{self.convert_options} #{@output_video.filename}"
|
41
|
+
out, err = ""
|
42
|
+
|
43
|
+
status = Open4::popen4(command) do |pid, stdin, stdout, stderr|
|
44
|
+
out = stdout.read.strip
|
45
|
+
err = stderr.read.strip
|
46
|
+
end
|
47
|
+
|
48
|
+
error_message = err.split('\n').last
|
49
|
+
|
50
|
+
@status = { status: status.exitstatus, stdout: out, stderr: err,
|
51
|
+
error_message: error_message, video: @output_video }
|
52
|
+
return @status
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/Voyeur/video.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Voyeur
|
2
|
+
class Video
|
3
|
+
attr_reader :filename
|
4
|
+
def initialize(options)
|
5
|
+
@filename = options[:filename]
|
6
|
+
end
|
7
|
+
|
8
|
+
def convert(options)
|
9
|
+
converter = Voyeur::Converter.create(format: options[:to])
|
10
|
+
converter.convert(video: self,
|
11
|
+
output_filename: options[:output_filename],
|
12
|
+
output_path: options[:output_path])
|
13
|
+
end
|
14
|
+
|
15
|
+
def convert_to_html5(options = nil)
|
16
|
+
[:mp4, :ogv, :webm].each do |f|
|
17
|
+
options_hash = {to: f}
|
18
|
+
options_hash.merge!(options) if options
|
19
|
+
convert(options_hash)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/Voyeur.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voyeur::Mp4 do
|
4
|
+
before :each do
|
5
|
+
@converter = Voyeur::Converter.create(format: :mp4)
|
6
|
+
@video = Voyeur::Video.new(filename: valid_mpeg_file_path)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should use the correct factory" do
|
10
|
+
@converter.class.to_s.should == "Voyeur::Mp4"
|
11
|
+
end
|
12
|
+
|
13
|
+
it "default convert string" do
|
14
|
+
@converter.convert_options.should == "-b 1500k -vcodec libx264 -g 30"
|
15
|
+
end
|
16
|
+
|
17
|
+
context "A valid Video" do
|
18
|
+
after :each do
|
19
|
+
File.delete(valid_mpeg_file_path.gsub(/mpeg/, "mp4")) if File.exists?(valid_mpeg_file_path.gsub(/mpeg/, "mp4"))
|
20
|
+
end
|
21
|
+
|
22
|
+
context "#convert_options" do
|
23
|
+
it "should name the video correctly" do
|
24
|
+
@converter.convert(video: @video)
|
25
|
+
output_file = valid_mpeg_file_path.gsub(/mpeg/, "mp4")
|
26
|
+
@converter.output_video.filename.should == output_file
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should return a video" do
|
30
|
+
@converter.convert(video: @video)
|
31
|
+
@converter.input_video.should == @video
|
32
|
+
end
|
33
|
+
|
34
|
+
context "real video" do
|
35
|
+
it "should return conversion status indicating success" do
|
36
|
+
result = @converter.convert(video: @video)
|
37
|
+
result[:status].should == 0
|
38
|
+
result[:video].should == @converter.output_video
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should allow them to name the video" do
|
42
|
+
result = @converter.convert(video: @video)
|
43
|
+
result[:status].should == 0
|
44
|
+
result[:video].should == @converter.output_video
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return stdout" do
|
48
|
+
pending "why do we want this? this is returning ffmpeg version stuff"
|
49
|
+
result = @converter.convert(video: @video)
|
50
|
+
result[:stderr].should == ""
|
51
|
+
result[:stdout].should == ""
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "An invalid Video" do
|
58
|
+
before :each do
|
59
|
+
@converter = Voyeur::Converter.create(format: :mp4)
|
60
|
+
@video = Voyeur::Video.new(filename: 'test_video.mpeg')
|
61
|
+
end
|
62
|
+
|
63
|
+
context "File does not exist" do
|
64
|
+
it "should return conversion status indicating failure" do
|
65
|
+
result = @converter.convert(video: @video)
|
66
|
+
result[:status].should == 1
|
67
|
+
result[:video].should == @converter.output_video
|
68
|
+
result[:error_message].should match(/test_video.mpeg: No such file or directory/)
|
69
|
+
result[:stderr].nil?.should == false
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voyeur::Ogv do
|
4
|
+
context "New Video" do
|
5
|
+
before :each do
|
6
|
+
@converter = Voyeur::Converter.create(format: :ogv)
|
7
|
+
@video = Voyeur::Video.new(filename: 'test_video.ogv')
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should use the correct factory" do
|
11
|
+
@converter.class.to_s.should == "Voyeur::Ogv"
|
12
|
+
end
|
13
|
+
|
14
|
+
context "#convert_options" do
|
15
|
+
it "default convert string" do
|
16
|
+
@converter.convert_options.should == "-b 1500k -vcodec libtheora -acodec libvorbis -ab 160000 -g 30"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should raise an exception if no video is passed" do
|
20
|
+
@video = nil
|
21
|
+
-> { @converter.convert(video: @video) }.should raise_error Voyeur::Exceptions::NoVideoPresent
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return a video" do
|
25
|
+
@converter.convert(video: @video)
|
26
|
+
@converter.input_video.should == @video
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "An invalid Video" do
|
32
|
+
before :each do
|
33
|
+
@converter = Voyeur::Converter.create(format: :ogv)
|
34
|
+
@video = Voyeur::Video.new(filename: 'test_video.mpeg')
|
35
|
+
end
|
36
|
+
context "File does not exist" do
|
37
|
+
it "should return conversion status indicating failure" do
|
38
|
+
result = @converter.convert(video: @video)
|
39
|
+
result[:status].should == 1
|
40
|
+
result[:video].should == @converter.output_video
|
41
|
+
result[:error_message].should match(/test_video.mpeg: No such file or directory/)
|
42
|
+
result[:stderr].nil?.should == false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voyeur::Webm do
|
4
|
+
context "New Video" do
|
5
|
+
before :each do
|
6
|
+
@converter = Voyeur::Converter.create(format: :webm)
|
7
|
+
@video = Voyeur::Video.new(filename: 'test_video.webm')
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should use the correct factory" do
|
11
|
+
@converter.class.to_s.should == "Voyeur::Webm"
|
12
|
+
end
|
13
|
+
|
14
|
+
context "#convert_options" do
|
15
|
+
it "default convert string" do
|
16
|
+
@converter.convert_options.should == "-b 1500k -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should raise an exception if no video is passed" do
|
20
|
+
@video = nil
|
21
|
+
-> { @converter.convert(video: @video) }.should raise_error Voyeur::Exceptions::NoVideoPresent
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return a video" do
|
25
|
+
@converter.convert(video: @video)
|
26
|
+
@converter.input_video.should == @video
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "An invalid Video" do
|
32
|
+
before :each do
|
33
|
+
@converter = Voyeur::Converter.create(format: :webm)
|
34
|
+
@video = Voyeur::Video.new(filename: 'test_video.mpeg')
|
35
|
+
end
|
36
|
+
|
37
|
+
context "File does not exist" do
|
38
|
+
it "should return conversion status indicating failure" do
|
39
|
+
result = @converter.convert(video: @video)
|
40
|
+
result[:status].should == 1
|
41
|
+
result[:video].should == @converter.output_video
|
42
|
+
result[:error_message].should match(/test_video.mpeg: No such file or directory/)
|
43
|
+
result[:stderr].nil?.should == false
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
Binary file
|
Binary file
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module SpecHelper
|
2
|
+
module VideoFileSpecHelper
|
3
|
+
def current_path
|
4
|
+
File.join( File.dirname(__FILE__), "../" )
|
5
|
+
end
|
6
|
+
|
7
|
+
def fixture_file_path
|
8
|
+
File.join(current_path, "fixtures")
|
9
|
+
end
|
10
|
+
|
11
|
+
def valid_3g_file_path
|
12
|
+
File.join(fixture_file_path, "test.3gp")
|
13
|
+
end
|
14
|
+
|
15
|
+
def valid_mpeg_file_path
|
16
|
+
File.join(fixture_file_path, "test.mpeg")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/spec/video_spec.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Voyeur::Video do
|
4
|
+
it 'should create a new video object from a filename' do
|
5
|
+
video_input_name = 'test_file.mpeg'
|
6
|
+
video = Voyeur::Video.new filename: video_input_name
|
7
|
+
video.filename.should == video_input_name
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should convert a video to ogv" do
|
11
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).convert(to: :ogv)
|
12
|
+
File.exist?(valid_mpeg_file_path.gsub(/mpeg/, "ogv")).should be_true
|
13
|
+
File.delete(valid_mpeg_file_path.gsub(/mpeg/, "ogv"))
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should convert a video to mp4" do
|
17
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).convert(to: :mp4)
|
18
|
+
File.exist?(valid_mpeg_file_path.gsub(/mpeg/, "mp4")).should be_true
|
19
|
+
File.delete(valid_mpeg_file_path.gsub(/mpeg/, "mp4"))
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should convert a video to webm" do
|
23
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).convert(to: :webm)
|
24
|
+
File.exist?(valid_mpeg_file_path.gsub(/mpeg/, "webm")).should be_true
|
25
|
+
File.delete(valid_mpeg_file_path.gsub(/mpeg/, "webm"))
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should convert a video to all HTML5 video formats" do
|
29
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).convert_to_html5
|
30
|
+
File.exists?(valid_mpeg_file_path.gsub(/mpeg/, "mp4")).should be_true
|
31
|
+
File.delete(valid_mpeg_file_path.gsub(/mpeg/, "mp4"))
|
32
|
+
File.exists?(valid_mpeg_file_path.gsub(/mpeg/, "ogv")).should be_true
|
33
|
+
File.delete(valid_mpeg_file_path.gsub(/mpeg/, "ogv"))
|
34
|
+
File.exists?(valid_mpeg_file_path.gsub(/mpeg/, "webm")).should be_true
|
35
|
+
File.delete(valid_mpeg_file_path.gsub(/mpeg/, "webm"))
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should allow the user to name the video" do
|
39
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).
|
40
|
+
convert(to: :webm, output_filename: "sexypants")
|
41
|
+
File.exists?("#{fixture_file_path}/sexypants.webm").should be_true
|
42
|
+
File.delete("#{fixture_file_path}/sexypants.webm")
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should allow the user to specify a video path" do
|
46
|
+
output_path = "#{fixture_file_path}/converted"
|
47
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).
|
48
|
+
convert(to: :ogv, output_path: output_path)
|
49
|
+
File.exists?("#{output_path}/test.ogv").should be_true
|
50
|
+
File.delete("#{output_path}/test.ogv")
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should allow a user to specify a video path and filename" do
|
54
|
+
output_path = "#{fixture_file_path}/converted"
|
55
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).
|
56
|
+
convert(to: :ogv, output_path: output_path, output_filename: "supersexypants")
|
57
|
+
File.exists?("#{output_path}/supersexypants.ogv").should be_true
|
58
|
+
File.delete("#{output_path}/supersexypants.ogv")
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should allow a user to specify a video path and filename when converting all formats" do
|
62
|
+
output_path = "#{fixture_file_path}/converted"
|
63
|
+
Voyeur::Video.new( filename: valid_mpeg_file_path ).
|
64
|
+
convert_to_html5(output_path: output_path, output_filename: "supersexypants")
|
65
|
+
File.exists?("#{output_path}/supersexypants.ogv").should be_true
|
66
|
+
File.delete("#{output_path}/supersexypants.ogv")
|
67
|
+
File.exists?("#{output_path}/supersexypants.mp4").should be_true
|
68
|
+
File.delete("#{output_path}/supersexypants.mp4")
|
69
|
+
File.exists?("#{output_path}/supersexypants.webm").should be_true
|
70
|
+
File.delete("#{output_path}/supersexypants.webm")
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should not allow the user to specify a folder that doesn't exist" do
|
74
|
+
output_path = "#{fixture_file_path}/icecream"
|
75
|
+
-> { Voyeur::Video.new( filename: valid_mpeg_file_path ).
|
76
|
+
convert(to: :ogv, output_path: output_path) }.should raise_error Voyeur::Exceptions::InvalidLocation
|
77
|
+
end
|
78
|
+
end
|
metadata
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: voyeur
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Peter Garbers
|
9
|
+
- Hendrik F. Louw
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2011-11-24 00:00:00.000000000Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
requirement: &70172804487660 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *70172804487660
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: open4
|
28
|
+
requirement: &70172804487240 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *70172804487240
|
37
|
+
description: A ruby library to convert videos into common html5 formats
|
38
|
+
email:
|
39
|
+
- peter.garbers@gmail.com
|
40
|
+
- hflouw@gmail.com
|
41
|
+
executables: []
|
42
|
+
extensions: []
|
43
|
+
extra_rdoc_files: []
|
44
|
+
files:
|
45
|
+
- .gitignore
|
46
|
+
- Gemfile
|
47
|
+
- README.md
|
48
|
+
- Rakefile
|
49
|
+
- Voyeur.gemspec
|
50
|
+
- lib/Voyeur.rb
|
51
|
+
- lib/Voyeur/converter.rb
|
52
|
+
- lib/Voyeur/exceptions.rb
|
53
|
+
- lib/Voyeur/version.rb
|
54
|
+
- lib/Voyeur/video.rb
|
55
|
+
- lib/Voyeur/video_converters/mp4.rb
|
56
|
+
- lib/Voyeur/video_converters/ogv.rb
|
57
|
+
- lib/Voyeur/video_converters/webm.rb
|
58
|
+
- spec/converter_spec.rb
|
59
|
+
- spec/converters/mp4_spec.rb
|
60
|
+
- spec/converters/ogv_spec.rb
|
61
|
+
- spec/converters/webm_spec.rb
|
62
|
+
- spec/fixtures/converted/PLACEHOLDER
|
63
|
+
- spec/fixtures/test.3gp
|
64
|
+
- spec/fixtures/test.mpeg
|
65
|
+
- spec/spec_helper.rb
|
66
|
+
- spec/spec_helpers/video_file_spec_helper.rb
|
67
|
+
- spec/video_spec.rb
|
68
|
+
homepage: http://devthenet.github.com/
|
69
|
+
licenses: []
|
70
|
+
post_install_message:
|
71
|
+
rdoc_options: []
|
72
|
+
require_paths:
|
73
|
+
- lib
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
76
|
+
requirements:
|
77
|
+
- - ! '>='
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project: Voyeur
|
88
|
+
rubygems_version: 1.8.10
|
89
|
+
signing_key:
|
90
|
+
specification_version: 3
|
91
|
+
summary: Ruby library to convert common video formats to HTML5 formats
|
92
|
+
test_files:
|
93
|
+
- spec/converter_spec.rb
|
94
|
+
- spec/converters/mp4_spec.rb
|
95
|
+
- spec/converters/ogv_spec.rb
|
96
|
+
- spec/converters/webm_spec.rb
|
97
|
+
- spec/fixtures/converted/PLACEHOLDER
|
98
|
+
- spec/fixtures/test.3gp
|
99
|
+
- spec/fixtures/test.mpeg
|
100
|
+
- spec/spec_helper.rb
|
101
|
+
- spec/spec_helpers/video_file_spec_helper.rb
|
102
|
+
- spec/video_spec.rb
|