kelredd-pruview 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of kelredd-pruview might be problematic. Click here for more details.

@@ -3,7 +3,7 @@ module Pruview
3
3
 
4
4
  MAJOR = 0
5
5
  MINOR = 1
6
- TINY = 7
6
+ TINY = 8
7
7
 
8
8
  def self.to_s # :nodoc:
9
9
  [MAJOR, MINOR, TINY].join('.')
data/lib/pruview/video.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Pruview
2
2
 
3
3
  class Video
4
-
4
+
5
5
  # this class assumes you have 'ffmpeg' and 'flvtool2' installed and in your path
6
6
 
7
7
  def initialize(source, target_dir, bitrate_mult = 1)
@@ -12,49 +12,54 @@ module Pruview
12
12
  @target_dir = target_dir
13
13
  @bitrate_multiplier = bitrate_mult
14
14
  end
15
-
15
+
16
16
  def to_flv(name, width, height, scale_static = false)
17
17
  target = to_base(name, width, height, '.flv', scale_static)
18
18
  run("#{FLVTOOL} -U #{target}", "Unable to add meta-data for #{target}.")
19
19
  return target
20
20
  end
21
-
21
+
22
22
  def to_mov(name, width, height, scale_static = false)
23
23
  target = to_base(name, width, height, '.mov', scale_static)
24
24
  # TODO: run qt-faststart
25
25
  return target
26
26
  end
27
-
27
+
28
+ def info
29
+ yml_info_path = Tempfile.new("#{File.basename(@source)}.yml").path
30
+ self.get_info(yml_info_path)
31
+ end
32
+
28
33
  protected
29
-
34
+
30
35
  def to_base(name, width, height, extension, scale_static)
31
36
  target = File.join(@target_dir, name.to_s + extension)
32
37
  info_yml = File.join(@target_dir, name.to_s + '_info.yml')
33
38
  run(build_command(@source, target, width, height, get_info(info_yml), scale_static), "Unable to convert #{@source} to #{target}.")
34
39
  return target
35
40
  end
36
-
41
+
37
42
  def format_supported?(source)
38
43
  file_ext = file_extension(source)
39
44
  EXT.each { |extension| return true if file_ext == extension }
40
45
  return false
41
46
  end
42
-
47
+
43
48
  def file_extension(source_file)
44
- File.extname(source_file).downcase.chomp
49
+ File.extname(source_file).downcase.chomp
45
50
  end
46
-
47
- def get_info(yml)
48
- run("#{FFYML} #{@source} #{yml}", "Unable to get video info")
49
- YAML.load_file(yml)
51
+
52
+ def get_info(yml_path)
53
+ run("#{FFYML} #{@source} #{yml_path}", "Unable to get video info")
54
+ YAML.load_file(yml_path)
50
55
  end
51
-
56
+
52
57
  def build_command(source, target, width, height, info, scale_static)
53
58
  command = "#{FFMPEG} -i #{source}"
54
59
  command += get_scale_command(info['width'], info['height'], width, height, scale_static)
55
60
  scale_factor = get_scale_factor(info['width'], info['height'], width, height)
56
61
  if file_extension(target) != '.flv' # use h264 codec with lower bitrate scaling factor
57
- command += " -vcodec libx264"
62
+ command += " -vcodec libx264"
58
63
  scale_factor /= 2.0
59
64
  end
60
65
  puts "scale factor: #{scale_factor.to_s}"
@@ -67,7 +72,7 @@ module Pruview
67
72
  command += " -ar #{AUDIO_SAMPLING}"
68
73
  command += " -y #{target}"
69
74
  end
70
-
75
+
71
76
  def get_scale_factor(source_width, source_height, scale_width, scale_height)
72
77
  if source_width > source_height
73
78
  return (scale_width.to_f / source_width.to_f)
@@ -75,7 +80,7 @@ module Pruview
75
80
  return (scale_height.to_f / source_height.to_f)
76
81
  end
77
82
  end
78
-
83
+
79
84
  def get_scale_command(source_width, source_height, scale_width, scale_height, static)
80
85
  # this type of scaling assumes a static overall resolution with black padding added appropriately
81
86
  # to keep the meaningful video area at the source aspect ratio
@@ -90,7 +95,7 @@ module Pruview
90
95
  end
91
96
  scale_command
92
97
  end
93
-
98
+
94
99
  def get_scaling_params(source_width, source_height, scale_width, scale_height)
95
100
  params = {}
96
101
  params[:left],params[:top],params[:right],params[:bottom] = 0,0,0,0
@@ -114,7 +119,7 @@ module Pruview
114
119
  def run(command, error_message = "Unknown error.")
115
120
  raise "Ffmpeg error: " + error_message + " - command: '#{command}'" if !system(command)
116
121
  end
117
-
122
+
118
123
  # Configurations
119
124
  Video::FFYML = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'ffyml'))
120
125
  Video::FFMPEG = 'ffmpeg'
@@ -122,7 +127,7 @@ module Pruview
122
127
  Video::PAD_COLOR = "000000"
123
128
  Video::AUDIO_BITRATE = '128' # kbps
124
129
  Video::AUDIO_SAMPLING = '44100'
125
-
130
+
126
131
  Video::EXT = ['.avi', '.flv', '.mov', '.mpg', '.mp4']
127
132
 
128
133
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 7
9
- version: 0.1.7
8
+ - 8
9
+ version: 0.1.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kelly Redding
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-22 00:00:00 -05:00
17
+ date: 2010-04-07 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency