mediakit 0.1.2 → 0.1.3

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 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