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 +4 -4
- data/lib/dvdvrconv/command.rb +13 -0
- data/lib/dvdvrconv/dvdvr.rb +20 -33
- data/lib/dvdvrconv/version.rb +1 -1
- data/lib/dvdvrconv.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c5f0218e853e4af5210eb7b85aeba67f2cd8dc5a42485488034f44bb76677bb7
|
|
4
|
+
data.tar.gz: ba57fbddc4615b81228f2d4f22ffb86f849c343ef6d18d8c7184a66e7baf566c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 126e3d8909f423585538bdc2daee2e01b5d664cb15d3ee756fbf312580ba725b8808a71ec00d30f8814bccb132930d20d0652b5503676ede2e443d3160d4415b
|
|
7
|
+
data.tar.gz: 6c4295f3f3aa90db8e67b36448dbaa99caf84bcf21c1c1719484aa56d0276cf402235be237bcaa8e87f2441f021c6e6db8b6589323c4ef351d4f0a013446eac7
|
data/lib/dvdvrconv/command.rb
CHANGED
|
@@ -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
|
data/lib/dvdvrconv/dvdvr.rb
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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]
|
|
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
|
|
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
|
data/lib/dvdvrconv/version.rb
CHANGED
data/lib/dvdvrconv.rb
CHANGED
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.
|
|
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:
|
|
87
|
+
rubygems_version: 4.0.15
|
|
88
88
|
specification_version: 4
|
|
89
89
|
summary: DVD-VR utility
|
|
90
90
|
test_files: []
|