dvdvrconv 1.3.0 → 1.3.2

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
  SHA256:
3
- metadata.gz: 74bc4490abb3e80d289162b91a05912e2075421531f888205f10051a7930c22d
4
- data.tar.gz: fa54458ff8f4bb490aaaaa0bb87e5690831b28ed198ef1538df385d51528323c
3
+ metadata.gz: c5f0218e853e4af5210eb7b85aeba67f2cd8dc5a42485488034f44bb76677bb7
4
+ data.tar.gz: ba57fbddc4615b81228f2d4f22ffb86f849c343ef6d18d8c7184a66e7baf566c
5
5
  SHA512:
6
- metadata.gz: 94ae2207fdf720be7625ba638c2a1a800f43ece291a0129fec40acb7746c1a8619cf438909aba2c67f8d81d4cc7bbfc60071c6e075131d72c71b4b9e4ab29b38
7
- data.tar.gz: 0fbe5892000ca58a9a977d9637cd03ad3ce6106424027c6e54397142ddf3b3ab917e5102b3ef221d5b4d1aa3c1681ad77f9ab415c688f31e05cedde5fdc99eaf
6
+ metadata.gz: 126e3d8909f423585538bdc2daee2e01b5d664cb15d3ee756fbf312580ba725b8808a71ec00d30f8814bccb132930d20d0652b5503676ede2e443d3160d4415b
7
+ data.tar.gz: 6c4295f3f3aa90db8e67b36448dbaa99caf84bcf21c1c1719484aa56d0276cf402235be237bcaa8e87f2441f021c6e6db8b6589323c4ef351d4f0a013446eac7
@@ -62,6 +62,12 @@ module Dvdvrconv
62
62
  dvd.vrdisc.hardware_encode = @options[:hardware_encode]
63
63
  end
64
64
 
65
+ if @options[:global_quality].nil?
66
+ dvd.vrdisc.global_quality = Dvdvrconv::DEFAULT_GLOBAL_QUALITY
67
+ else
68
+ dvd.vrdisc.global_quality = @options[:global_quality]
69
+ end
70
+
65
71
  # View the path of each files
66
72
  puts '== Use these paths =='
67
73
  puts " => VR_MANGR.IFO: #{dvd.vrdisc.opts_ifo}"
@@ -73,6 +79,7 @@ module Dvdvrconv
73
79
  puts " => number_list: #{@options[:number_list]}"
74
80
  puts " => concat_mode: #{@options[:concat_mode]}"
75
81
  puts " => hardware_encode: #{@options[:hardware_encode]}"
82
+ puts " => global_quality: #{@options[:global_quality]}"
76
83
 
77
84
  dvd.read_info
78
85
 
@@ -182,6 +189,12 @@ module Dvdvrconv
182
189
  else
183
190
  @options[:hardware_encode] = config['hardware_encode']
184
191
  end
192
+
193
+ if config['global_quality'].nil?
194
+ @options[:global_quality] = Dvdvrconv::DEFAULT_GLOBAL_QUALITY
195
+ else
196
+ @options[:global_quality] = config['global_quality']
197
+ end
185
198
  end
186
199
 
187
200
  def dvdpath
@@ -19,13 +19,15 @@ module Dvdvrconv
19
19
  :default_opts_vro, # @param [String]
20
20
  :default_cmd, # @param [String]
21
21
  :concat_mode, # @param [Boolean]
22
- :hardware_encode # @param [String]
22
+ :hardware_encode, # @param [String]
23
+ :global_quality # @param [Integer]
23
24
  )
24
25
 
25
26
  BASE_NAME = 'DVD'
26
27
  DEFAULT_CONFIG_FILE = 'default_dvdvrconv.yml'
27
28
  DEFAULT_CONCAT_MODE = true
28
29
  DEFAULT_HARDWARE_ENCODE = 'normal'
30
+ DEFAULT_GLOBAL_QUALITY = 25
29
31
 
30
32
  # Default DVD drive is "d".
31
33
  # If you want to use a different drive, you need to set up a "default_dvdvrconv.yml" file.
@@ -57,31 +59,24 @@ module Dvdvrconv
57
59
  @vrdisc.default_cmd = @vrdisc.cmd
58
60
  @vrdisc.concat_mode = Dvdvrconv::DEFAULT_CONCAT_MODE
59
61
  @vrdisc.hardware_encode = Dvdvrconv::DEFAULT_HARDWARE_ENCODE
62
+ @vrdisc.global_quality = Dvdvrconv::DEFAULT_GLOBAL_QUALITY
60
63
  end
61
64
 
62
65
  # Read VRO file from dvd-ram disc in dvd-vr format, and output vob files.
63
66
  def str_dvdvr_cmd
64
- %(#{@vrdisc.cmd} --name=#{Dvdvrconv::BASE_NAME} #{@vrdisc.opts_ifo} #{@vrdisc.opts_vro})
67
+ Shellwords.shellsplit(%("#{@vrdisc.cmd}" --name="#{Dvdvrconv::BASE_NAME}" "#{@vrdisc.opts_ifo}" "#{@vrdisc.opts_vro}"))
65
68
  end
66
69
 
67
70
  # Make a concatenation command string for FFmpeg.
68
71
  def str_concat_cmd(file_name, base_name)
69
- %(ffmpeg -f concat -safe 0 -i #{file_name} -c copy #{base_name}.vob)
72
+ Shellwords.shellsplit(%(ffmpeg -f concat -safe 0 -i "#{file_name}" -c copy "#{base_name}.vob"))
70
73
  end
71
74
 
72
75
  # File convert command, vob to mp4 for FFmpeg.
73
76
  # * Change the aspect ratio to 16:9.
74
77
  # * Delete a closed caption.
75
78
  def ffmeg_normal_cmd(file_name)
76
- cmd = 'ffmpeg '
77
- cmd += "-i #{file_name}.vob "
78
- cmd += '-filter:v "crop=704:474:0:0" '
79
- cmd += '-vcodec libx264 '
80
- cmd += '-b:v 500k '
81
- cmd += '-aspect 16:9 '
82
- cmd += '-acodec copy '
83
- cmd += '-bsf:v "filter_units=remove_types=6" '
84
- cmd + "#{file_name}.mp4"
79
+ Shellwords.shellsplit(%(ffmpeg -i "#{file_name}.vob" -filter:v "crop=704:474:0:0" -vcodec libx264 -b:v 500k -aspect 16:9 -acodec copy -bsf:v "filter_units=remove_types=6" "#{file_name}.mp4"))
85
80
  end
86
81
 
87
82
  # File convert command, vob to mp4 for FFmpeg.
@@ -89,18 +84,7 @@ module Dvdvrconv
89
84
  # * Change the aspect ratio to 16:9.
90
85
  # * Delete a closed caption.
91
86
  def ffmpeg_qsv_cmd(file_name)
92
- cmd = 'ffmpeg '
93
- cmd += '-hwaccel qsv '
94
- cmd += '-hwaccel_output_format qsv '
95
- cmd += "-i #{file_name}.vob "
96
- cmd += '-filter:v "crop=704:474:0:0" '
97
- cmd += '-c:v h264_qsv '
98
- cmd += '-global_quality:v 35 '
99
- cmd += '-look_ahead 1 '
100
- cmd += '-aspect 16:9 '
101
- cmd += '-acodec copy '
102
- cmd += '-bsf:v "filter_units=remove_types=6" '
103
- cmd + "#{file_name}.mp4"
87
+ Shellwords.shellsplit(%(ffmpeg -hwaccel qsv -hwaccel_output_format qsv -i "#{file_name}.vob" -filter:v "crop=704:474:0:0" -c:v h264_qsv -global_quality "#{@vrdisc.global_quality}" -look_ahead 1 -aspect 16:9 -acodec copy -bsf:v "filter_units=remove_types=6" "#{file_name}.mp4"))
104
88
  end
105
89
 
106
90
  # File convert command, vob to mp4 for FFmpeg.
@@ -151,7 +135,7 @@ module Dvdvrconv
151
135
  puts @vrdisc.header
152
136
  [@vrdisc.num, @vrdisc.title, @vrdisc.date, @vrdisc.size].transpose.each do |x|
153
137
  %w[num title date size].each_with_index do |item, idx|
154
- line = format('%-5s', item) + ": #{x.flatten[idx].to_s}\n"
138
+ line = format('%-5s', item) + ": #{x.flatten[idx]}\n"
155
139
  puts line
156
140
  end
157
141
  puts '-'
@@ -202,8 +186,8 @@ module Dvdvrconv
202
186
  def vro2vob
203
187
  cmd = str_dvdvr_cmd
204
188
  puts '----- convert file VRO to VOB -----'
205
- puts "> cmd:\n #{cmd}"
206
- system(cmd)
189
+ puts "> cmd:\n #{cmd.join(' ')}"
190
+ system(*cmd)
207
191
  puts ''
208
192
  end
209
193
 
@@ -326,7 +310,10 @@ module Dvdvrconv
326
310
  file_name = "concat_#{base_name}.txt"
327
311
 
328
312
  names = @vrdisc.output_title.select { |x| x.match(/#{base_name}_\d\d/) }
329
- names.each { |line| contents += "file '#{line}.vob'\n" }
313
+ names.each do |line|
314
+ escaped_line = "#{line}.vob".gsub("'") {"'\\''"}
315
+ contents += "file '#{escaped_line}'\n"
316
+ end
330
317
  concat_list << [file_name, contents, base_name]
331
318
  end
332
319
 
@@ -356,8 +343,8 @@ module Dvdvrconv
356
343
 
357
344
  cmd = str_concat_cmd(file_name, base_name)
358
345
  puts '----- concat vob files -----'
359
- puts "run cmd:\n #{cmd}"
360
- system(cmd)
346
+ puts "run cmd:\n #{cmd.join(' ')}"
347
+ system(*cmd)
361
348
 
362
349
  begin
363
350
  File.delete(file_name)
@@ -369,7 +356,7 @@ module Dvdvrconv
369
356
 
370
357
  def vrdisc_status
371
358
  puts "\n< < < < < @vrdisc status > > > > >"
372
- %w[num title output_title duplicate_name vob_titles concat_mode hardware_encode].each do |item|
359
+ %w[num title output_title duplicate_name vob_titles concat_mode hardware_encode global_quality].each do |item|
373
360
  puts "#{item}=> #{@vrdisc[item]}"
374
361
  end
375
362
  puts "< < < < < @vrdisc status > > > > >\n"
@@ -393,8 +380,8 @@ module Dvdvrconv
393
380
  else
394
381
  cmd = str_convert_cmd(file_name)
395
382
  puts "----- convert #{file_name}.vob to mp4 file -----"
396
- puts "run cmd:\n #{cmd}"
397
- system(cmd)
383
+ puts "run cmd:\n #{cmd.join(' ')}"
384
+ system(*cmd)
398
385
  end
399
386
  end
400
387
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dvdvrconv
4
- VERSION = '1.3.0'
4
+ VERSION = '1.3.2'
5
5
  end
data/lib/dvdvrconv.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'open3'
4
4
  require 'optparse'
5
5
  require 'yaml'
6
+ require 'shellwords'
6
7
 
7
8
  require_relative 'dvdvrconv/command'
8
9
  require_relative 'dvdvrconv/options'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dvdvrconv
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - icm7216
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  requirements: []
87
- rubygems_version: 3.6.8
87
+ rubygems_version: 4.0.15
88
88
  specification_version: 4
89
89
  summary: DVD-VR utility
90
90
  test_files: []