flatbed 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ Flatbed
2
+ =======
3
+
4
+ A ruby library for video editing and assembly
5
+
@@ -0,0 +1,80 @@
1
+ require "rubygems"
2
+ require "rake/gempackagetask"
3
+ require "rake/rdoctask"
4
+
5
+ task :default => :test
6
+
7
+ require "rake/testtask"
8
+ Rake::TestTask.new do |t|
9
+ t.libs = [File.expand_path("lib"), "test"]
10
+ t.test_files = FileList["test/**/*_test.rb"]
11
+ t.verbose = true
12
+ end
13
+
14
+ # This builds the actual gem. For details of what all these options
15
+ # mean, and other ones you can add, check the documentation here:
16
+ #
17
+ # http://rubygems.org/read/chapter/20
18
+ #
19
+ spec = Gem::Specification.new do |s|
20
+
21
+ # Change these as appropriate
22
+ s.name = "flatbed"
23
+ s.version = "0.0.2"
24
+ s.summary = "A ruby library for video editing and assembly using ffmpeg"
25
+ s.author = "Marcus Rosentrater"
26
+ s.email = "marcus.rosentrater@gmail.com"
27
+ s.homepage = "http://github.com/meanmarcus/flatbed"
28
+
29
+ s.has_rdoc = false
30
+ # s.extra_rdoc_files = %w(Readme.markdown)
31
+ # s.rdoc_options = %w(--main Readme.markdown)
32
+
33
+ # Add any extra files to include in the gem
34
+ s.files = %w(Rakefile README.markdown) + Dir.glob("{lib}/**/*")
35
+ # s.executables = FileList["bin/**"].map { |f| File.basename(f) }
36
+ s.require_paths = ["lib"]
37
+
38
+ # If you want to depend on other gems, add them here, along with any
39
+ # relevant versions
40
+ # s.add_dependency("some_other_gem", "~> 0.1.0")
41
+
42
+ # If your tests use any gems, include them here
43
+ # s.add_development_dependency("shoulda")
44
+ # s.add_development_dependency("rspec")
45
+ # s.add_development_dependency("cucumber")
46
+
47
+ # If you want to publish automatically to rubyforge, you'll may need
48
+ # to tweak this, and the publishing task below too.
49
+ # s.rubyforge_project = "gem-this"
50
+
51
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.3")
52
+ end
53
+
54
+ # This task actually builds the gem. We also regenerate a static
55
+ # .gemspec file, which is useful if something (i.e. GitHub) will
56
+ # be automatically building a gem for this project. If you're not
57
+ # using GitHub, edit as appropriate.
58
+ Rake::GemPackageTask.new(spec) do |pkg|
59
+ pkg.gem_spec = spec
60
+ end
61
+
62
+ desc "Build the gemspec file #{spec.name}.gemspec"
63
+ task :gemspec do
64
+ file = File.dirname(__FILE__) + "/#{spec.name}.gemspec"
65
+ File.open(file, "w") {|f| f << spec.to_ruby }
66
+ end
67
+
68
+ task :package => :gemspec
69
+
70
+ # Generate documentation
71
+ Rake::RDocTask.new do |rd|
72
+ rd.main = "Readme.markdown"
73
+ rd.rdoc_files.include("Readme.markdown", "lib/**/*.rb")
74
+ rd.rdoc_dir = "rdoc"
75
+ end
76
+
77
+ desc 'Clear out RDoc and generated packages'
78
+ task :clean => [:clobber_rdoc, :clobber_package] do
79
+ rm "#{spec.name}.gemspec"
80
+ end
@@ -0,0 +1,4 @@
1
+ require 'fileutils'
2
+ require 'flatbed/flatbed'
3
+ require 'flatbed/clip'
4
+ require 'flatbed/still_clip'
@@ -0,0 +1,83 @@
1
+ require 'fileutils'
2
+
3
+ module Flatbed
4
+ class Clip
5
+
6
+ attr_accessor :clip, :clip_name, :source, :source_name
7
+
8
+ def initialize(clip, convert_from = nil)
9
+ set_source convert_from if convert_from
10
+ set_clip clip
11
+ end
12
+
13
+ def command
14
+ raise "No input file specified." if self.source.to_s.empty?
15
+ "ffmpeg #{format_options input_options}-i #{source} #{format_options output_options}#{clip}"
16
+ end
17
+
18
+ def create
19
+ `#{command}`
20
+ end
21
+
22
+ def destroy
23
+ FileUtils.rm clip
24
+ end
25
+
26
+ def exists?
27
+ File.exists? clip
28
+ end
29
+
30
+ def options
31
+ @options ||= {
32
+ :input => {},
33
+ :output => {}
34
+ }
35
+ end
36
+
37
+ def input_options opts = {}
38
+ options[:input] ||= {}
39
+ options[:input].merge!(opts)
40
+ end
41
+
42
+ def input_options= opts
43
+ options[:input] = opts
44
+ end
45
+
46
+ def output_options opts = {}
47
+ options[:output] ||= {}
48
+ options[:output].merge!(opts)
49
+ end
50
+
51
+ def output_options= opts
52
+ options[:output] = opts
53
+ end
54
+
55
+ def set_clip(path)
56
+ self.clip = File.expand_path(path)
57
+ self.clip_name = clip.split("/").last
58
+ end
59
+
60
+ def set_source(path)
61
+ self.source = File.expand_path(path)
62
+ self.source_name = source.split("/").last
63
+ end
64
+
65
+ def source_exists?
66
+ File.exists? source
67
+ end
68
+
69
+ private
70
+
71
+ def format_options(opts)
72
+ out = ""
73
+ opts.each do |h|
74
+ unless h[1]===false
75
+ out << "-#{h[0]} "
76
+ out << "#{h[1]} " unless h[1]===true
77
+ end
78
+ end
79
+ out
80
+ end
81
+
82
+ end
83
+ end
@@ -0,0 +1,3 @@
1
+ module Flatbed
2
+
3
+ end
@@ -0,0 +1,15 @@
1
+ require 'fileutils'
2
+
3
+ module Flatbed
4
+ class StillClip < Clip
5
+
6
+ def initialize(clip, convert_from = nil)
7
+ super(clip, convert_from)
8
+ self.input_options = {
9
+ :loop_input => true,
10
+ :vframes => 250
11
+ }
12
+ end
13
+
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flatbed
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 2
9
+ version: 0.0.2
10
+ platform: ruby
11
+ authors:
12
+ - Marcus Rosentrater
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-04-26 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description:
22
+ email: marcus.rosentrater@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files: []
28
+
29
+ files:
30
+ - Rakefile
31
+ - README.markdown
32
+ - lib/flatbed/clip.rb
33
+ - lib/flatbed/flatbed.rb
34
+ - lib/flatbed/still_clip.rb
35
+ - lib/flatbed.rb
36
+ has_rdoc: true
37
+ homepage: http://github.com/meanmarcus/flatbed
38
+ licenses: []
39
+
40
+ post_install_message:
41
+ rdoc_options: []
42
+
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ segments:
50
+ - 0
51
+ version: "0"
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 1
58
+ - 3
59
+ version: "1.3"
60
+ requirements: []
61
+
62
+ rubyforge_project:
63
+ rubygems_version: 1.3.6
64
+ signing_key:
65
+ specification_version: 3
66
+ summary: A ruby library for video editing and assembly using ffmpeg
67
+ test_files: []
68
+