mediakit 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bbb72318968740f4dc55511f596e1b2a5ab06364
4
- data.tar.gz: 2db7ef39eab4355479fbd4a2f4d2903a28e3d2c1
3
+ metadata.gz: e8c1d2feb0c883e753a129e9604a25a51d30f200
4
+ data.tar.gz: ee908ed8e9b9d53feb99d7f421521f8a98552b44
5
5
  SHA512:
6
- metadata.gz: e395df8b6ea131f34896d810d6e7deb4d2361664a453c058a76781cb227c8695487b1a79a318d84cc2898264d61d482278712c98b0a525f26bb8f2e7cecc0699
7
- data.tar.gz: 699f2b179503f82b1159fea3fa3cae8359407cb4a767e74d09897a7d62e112b86700f821e426e60e286ac33d3544bd1d8356a1d3a1c364dbd4e9c5f9c9cc90ec
6
+ metadata.gz: 8a74f24782c40f1a5aff0765c4ec36866daac73222b9ab39cb4d1fa94add35bd4dde103c55c62c655b3569b97e1a1e91ad657d052a64d711a5f88a2aaaf576bd
7
+ data.tar.gz: a9d135f3fc6c6e0ed555da249d0a82a32eacc245cc7624b78ad2e9fcfa8bc62fc1f1c459797ce7e951c396c017edb4a4bb3c031ef8132390389036b2eaffb120
data/README.md CHANGED
@@ -61,15 +61,10 @@ but can pass certain it.
61
61
  driver = Mediakit::Drivers::FFmpeg.new()
62
62
  ffmpeg = Mediakit::FFmpeg.new(driver)
63
63
 
64
- options = Mediakit::FFmpeg::Options.new(
65
- Mediakit::FFmpeg::Options::GlobalOption.new(
66
- 't' => 100,
67
- 'y' => true,
68
- ),
69
- Mediakit::FFmpeg::Options::InputFileOption.new(
70
- options: nil,
71
- path: input,
72
- ),
64
+ options = Mediakit::FFmpeg::Options.new
65
+ options.add_option(Mediakit::FFmpeg::Options::GlobalOption.new('t' => 100))
66
+ options.add_option(Mediakit::FFmpeg::Options::InputFileOption.new(options: nil, path: input))
67
+ options.add_option(
73
68
  Mediakit::FFmpeg::Options::OutputFileOption.new(
74
69
  options: {
75
70
  'vf' => 'crop=320:320:0:0',
@@ -77,7 +72,7 @@ options = Mediakit::FFmpeg::Options.new(
77
72
  'ab' => '128k',
78
73
  },
79
74
  path: output,
80
- ),
75
+ )
81
76
  )
82
77
  puts "$ #{ffmpeg.command(options)}"
83
78
  puts ffmpeg.run(options, timeout: 30, nice: 0)
@@ -35,7 +35,7 @@ module Mediakit
35
35
  options, rest_args = parse_options(args.dup)
36
36
  runner = Mediakit::Process::Runner.new(options)
37
37
  begin
38
- stdout, stderr, exit_status = runner.run(bin, *rest_args)
38
+ exit_status, stdout, stderr = runner.run(bin, *rest_args)
39
39
  raise(FailError, stderr) unless exit_status
40
40
  stdout
41
41
  rescue Mediakit::Process::Runner::CommandNotFoundError => e
@@ -7,6 +7,11 @@ module Mediakit
7
7
  class FFmpegError < StandardError;
8
8
  end
9
9
 
10
+ class << self
11
+ attr_accessor(:default_global_option)
12
+ end
13
+ self.default_global_option = Options::GlobalOption.new('y' => true)
14
+
10
15
  attr_reader(:codecs, :formats, :decoders, :encoders)
11
16
 
12
17
  def self.create(driver = Mediakit::Drivers::FFmpeg.new)
@@ -26,12 +31,12 @@ module Mediakit
26
31
  #
27
32
  # @param [Mediakit::Runners::FFmpeg::Options] options options to create CLI argument
28
33
  def run(options, driver_options = {})
29
- args = options.compose
34
+ args = options.compose(self.class.default_global_option)
30
35
  @driver.run(args, driver_options)
31
36
  end
32
37
 
33
38
  def command(options, driver_options = {})
34
- args = options.compose
39
+ args = options.compose(self.class.default_global_option)
35
40
  @driver.command(args, driver_options)
36
41
  end
37
42
 
@@ -36,9 +36,10 @@ module Mediakit
36
36
  end
37
37
  end
38
38
 
39
- def compose
39
+ def compose(default_global = GlobalOption.new)
40
+ merged_global = global ? default_global.merge(global) : default_global
40
41
  composed_string = ''
41
- composed_string << "#{global}" if global
42
+ composed_string << "#{merged_global}"
42
43
  composed_string << " #{inputs.map(&:compose).join(' ')}" if inputs && !inputs.empty?
43
44
  composed_string << " #{output}" if output
44
45
  composed_string
@@ -155,7 +156,7 @@ module Mediakit
155
156
  end
156
157
 
157
158
  def to_s
158
- "\"#{@string}\""
159
+ "'#{@string}'"
159
160
  end
160
161
  end
161
162
 
@@ -59,7 +59,7 @@ module Mediakit
59
59
 
60
60
  def raw_items
61
61
  options = Mediakit::FFmpeg::Options.new(Mediakit::FFmpeg::Options::GlobalOption.new('formats' => true))
62
- output, _, _ = @command.run(options, logger: nil)
62
+ output = @command.run(options, logger: nil)
63
63
  return [] if output.nil? || output.empty?
64
64
  output.split(DELIMITER_FOR_FORMATS)[1].each_line.to_a
65
65
  end
@@ -101,7 +101,7 @@ module Mediakit
101
101
 
102
102
  def raw_items
103
103
  options = Mediakit::FFmpeg::Options.new(Mediakit::FFmpeg::Options::GlobalOption.new('decoders' => true))
104
- output, _, _ = @command.run(options, logger: nil)
104
+ output = @command.run(options, logger: nil)
105
105
  return [] if output.nil? || output.empty?
106
106
  output.split(DELIMITER_FOR_CODER)[1].each_line.to_a
107
107
  end
@@ -159,7 +159,7 @@ module Mediakit
159
159
 
160
160
  def raw_items
161
161
  options = Mediakit::FFmpeg::Options.new(Mediakit::FFmpeg::Options::GlobalOption.new('encoders' => true))
162
- output, _, _ = @command.run(options, logger: nil)
162
+ output = @command.run(options, logger: nil)
163
163
  return [] if output.nil? || output.empty?
164
164
  output.split(DELIMITER_FOR_CODER)[1].each_line.to_a
165
165
  end
@@ -209,7 +209,7 @@ module Mediakit
209
209
 
210
210
  def raw_items
211
211
  options = Mediakit::FFmpeg::Options.new(Mediakit::FFmpeg::Options::GlobalOption.new('codecs' => true))
212
- output, _, _ = @command.run(options, logger: nil)
212
+ output = @command.run(options, logger: nil)
213
213
  return [] if output.nil? || output.empty?
214
214
  output.split(DELIMITER_FOR_CODECS)[1].each_line.to_a
215
215
  end
@@ -29,28 +29,28 @@ module Mediakit
29
29
  # @overload run(command, args)
30
30
  # @param command [String] command name
31
31
  # @param args [Array] args as string
32
- # @return out [String] stdout of command
33
- # @return err [String] stderr of command
32
+ # @return out [String] stdout and stderr of command
34
33
  # @return exit_status [Boolean] is succeeded
35
34
  def run(bin, *args)
36
35
  command = build_command(bin, *args)
37
36
  begin
38
37
  stdin, stdout, stderr, wait_thread = Open3.popen3(command)
39
38
  stdin.close
40
- output, error_output, exit_status = wait(stdout, stderr, wait_thread)
39
+ exit_status, output, error_output = wait(stdout, stderr, wait_thread)
41
40
  rescue Errno::ENOENT => e
42
41
  raise(CommandNotFoundError, "Can't find command - #{command}, #{e.meessage}")
43
42
  end
44
43
 
45
- [output, error_output, exit_status]
44
+ [exit_status, output, error_output]
46
45
  end
47
46
 
48
47
  def wait(stdout, stderr, wait_thread)
49
48
  begin
50
- setup_watchers(stdout, stderr)
49
+ setup_watchers(stderr)
51
50
  loop_thread = Thread.new { run_loop }
52
51
  wait_thread.join
53
52
  exit_status = (wait_thread.value.exitstatus == 0)
53
+ output = stdout.read
54
54
  rescue Timeout::Error => error
55
55
  force_kill_process(wait_thread.pid)
56
56
  raise(error)
@@ -59,7 +59,7 @@ module Mediakit
59
59
  loop_thread.join if loop_thread
60
60
  end
61
61
 
62
- [@out_watcher.data, @err_watcher.data, exit_status]
62
+ [exit_status, output, @out_watcher.data]
63
63
  end
64
64
 
65
65
  def build_command(bin, *args)
@@ -76,13 +76,11 @@ module Mediakit
76
76
  "#{bin} #{escaped_args}"
77
77
  end
78
78
 
79
- def setup_watchers(stdout, stderr)
79
+ def setup_watchers(stderr)
80
80
  @timer = @timeout ? TimeoutTimer.new(@timeout, Thread.current) : nil
81
- @out_watcher = IOWatcher.new(stdout) { |data| @timer.update if @timer; logger.info(data) }
82
- @err_watcher = IOWatcher.new(stderr) { |data| @timer.update if @timer; logger.error(data) }
81
+ @out_watcher = IOWatcher.new(stderr) { |data| @timer.update if @timer; logger.info(data); }
83
82
  @loop = Coolio::Loop.new
84
83
  @out_watcher.attach(@loop)
85
- @err_watcher.attach(@loop)
86
84
  @timer.attach(@loop) if @timer
87
85
  end
88
86
 
@@ -90,7 +88,6 @@ module Mediakit
90
88
  @loop.run
91
89
  rescue => e
92
90
  # workaround for ambiguous RuntimeError
93
- # TODO: replace logger method
94
91
  logger.warn(e.message)
95
92
  logger.warn(e.backtrace.join("\n"))
96
93
  end
@@ -98,7 +95,6 @@ module Mediakit
98
95
  def teardown_watchers
99
96
  @loop.watchers.each { |w| w.detach if w.attached? }
100
97
  @out_watcher.close if @out_watcher && !@out_watcher.closed?
101
- @err_watcher.close if @err_watcher && !@err_watcher.closed?
102
98
  @loop.stop if @loop.has_active_watchers?
103
99
  rescue RuntimeError => e
104
100
  logger.warn(e.message)
@@ -1,3 +1,3 @@
1
1
  module Mediakit
2
- VERSION = '0.1.2'
2
+ VERSION = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mediakit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ainame
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-07-09 00:00:00.000000000 Z
11
+ date: 2015-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport