video_transcoding 0.2.8 → 0.3.0
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/bin/convert-video +1 -1
- data/bin/detect-crop +1 -1
- data/bin/query-handbrake-log +1 -1
- data/bin/transcode-video +68 -32
- data/lib/video_transcoding/cli.rb +1 -1
- data/lib/video_transcoding/console.rb +1 -1
- data/lib/video_transcoding/copyright.rb +2 -2
- data/lib/video_transcoding/crop.rb +1 -1
- data/lib/video_transcoding/errors.rb +1 -1
- data/lib/video_transcoding/ffmpeg.rb +1 -1
- data/lib/video_transcoding/media.rb +1 -1
- data/lib/video_transcoding/mkvmerge.rb +1 -1
- data/lib/video_transcoding/mkvpropedit.rb +1 -1
- data/lib/video_transcoding/mplayer.rb +1 -1
- data/lib/video_transcoding/tool.rb +1 -1
- data/lib/video_transcoding/version.rb +1 -1
- data/lib/video_transcoding.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d7d919e24a5fca251194f942cda740d77abbad8
|
4
|
+
data.tar.gz: c083259606760eeddfb2696bbf804ba28c7b3a07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8bf3c064537725ee6c6c89b0e570a21366adb3c4957dc10296a2d9915dd62c079cb8ce286333e35deb5654273ac5faabcd9361e81d203614f03fbf69771cd56
|
7
|
+
data.tar.gz: 663b007581e46bca80e38036864bc20cdda665219da8f73d45a5ef0407b7b8e5bcbad51c5084ffb3a9efa7bf9c1293a0143af36ca3d183f07539ee96eda52abc
|
data/bin/convert-video
CHANGED
data/bin/detect-crop
CHANGED
data/bin/query-handbrake-log
CHANGED
data/bin/transcode-video
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
#
|
3
3
|
# transcode-video
|
4
4
|
#
|
5
|
-
# Copyright (c) 2013-
|
5
|
+
# Copyright (c) 2013-2016 Don Melton
|
6
6
|
#
|
7
7
|
|
8
8
|
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
|
@@ -163,6 +163,10 @@ External subtitle options:
|
|
163
163
|
to previously burned, forced or added subtitle
|
164
164
|
(can be used multiple times)
|
165
165
|
|
166
|
+
Alternate ratecontrol options:
|
167
|
+
--abr BITRATE use modified ABR ratecontrol with average video bitrate
|
168
|
+
--vbr QUALITY use true VBR ratecontrol with constant video quality (0-51)
|
169
|
+
|
166
170
|
Advanced options:
|
167
171
|
-E, --encoder-option NAME=VALUE|_NAME
|
168
172
|
pass x264 video encoder option by name with value
|
@@ -226,6 +230,8 @@ HERE
|
|
226
230
|
@srt_language = {}
|
227
231
|
@srt_encoding = {}
|
228
232
|
@srt_offset = {}
|
233
|
+
@abr_bitrate = nil
|
234
|
+
@vbr_quality = nil
|
229
235
|
@encoder_options = {}
|
230
236
|
@disable_encoder_options = []
|
231
237
|
@handbrake_options = {}
|
@@ -587,6 +593,16 @@ HERE
|
|
587
593
|
@srt_offset[@srt_file.size - 1] = arg
|
588
594
|
end
|
589
595
|
|
596
|
+
opts.on '--abr ARG', Integer do |arg|
|
597
|
+
@abr_bitrate = arg
|
598
|
+
@vbr_quality = nil
|
599
|
+
end
|
600
|
+
|
601
|
+
opts.on '--vbr ARG', Float do |arg|
|
602
|
+
@vbr_quality = arg
|
603
|
+
@abr_bitrate = nil
|
604
|
+
end
|
605
|
+
|
590
606
|
opts.on '-E', '--encoder-option ARG' do |arg|
|
591
607
|
if arg =~ /^([a-z][a-z_-]+)=([^ :]+)$/
|
592
608
|
@encoder_options[$1] = $2
|
@@ -676,8 +692,7 @@ HERE
|
|
676
692
|
'input' => arg,
|
677
693
|
'output' => resolve_output(media),
|
678
694
|
'markers' => nil,
|
679
|
-
'encoder' => 'x264'
|
680
|
-
'quality' => '16'
|
695
|
+
'encoder' => 'x264'
|
681
696
|
}
|
682
697
|
title = media.info[:title]
|
683
698
|
handbrake_options['title'] = title.to_s unless title == 1
|
@@ -754,45 +769,66 @@ HERE
|
|
754
769
|
end
|
755
770
|
|
756
771
|
handbrake_options[anamorphic] = nil unless @handbrake_options.has_key? 'custom-anamorphic'
|
757
|
-
preset = @handbrake_options.fetch('encoder-preset', 'medium')
|
758
772
|
|
759
|
-
if
|
760
|
-
|
761
|
-
|
762
|
-
vbv_maxrate = @vbv_maxrate_1080p
|
773
|
+
if @abr_bitrate.nil? and @vbr_quality.nil?
|
774
|
+
handbrake_options['quality'] = '16'
|
775
|
+
preset = @handbrake_options.fetch('encoder-preset', 'medium')
|
763
776
|
|
764
|
-
|
765
|
-
|
766
|
-
|
777
|
+
if width > 1920 or height > 1080
|
778
|
+
vbv_maxrate = @vbv_maxrate_2160p
|
779
|
+
elsif width > 1280 or height > 720
|
780
|
+
vbv_maxrate = @vbv_maxrate_1080p
|
781
|
+
|
782
|
+
case preset
|
783
|
+
when 'slow', 'slower', 'veryslow', 'placebo'
|
784
|
+
handbrake_options['encoder-level'] = '4.0'
|
785
|
+
end
|
786
|
+
elsif width > 720 or height > 576
|
787
|
+
vbv_maxrate = @vbv_maxrate_720p
|
788
|
+
else
|
789
|
+
vbv_maxrate = @vbv_maxrate_480p
|
767
790
|
end
|
768
|
-
elsif width > 720 or height > 576
|
769
|
-
vbv_maxrate = @vbv_maxrate_720p
|
770
|
-
else
|
771
|
-
vbv_maxrate = @vbv_maxrate_480p
|
772
|
-
end
|
773
791
|
|
774
|
-
|
775
|
-
|
792
|
+
unless media.info[:directory]
|
793
|
+
bitrate = ((((media.info[:size] * 8) / media.info[:duration]) / 1000) / 1000) * 1000
|
776
794
|
|
777
|
-
|
778
|
-
|
795
|
+
if bitrate < vbv_maxrate
|
796
|
+
min_bitrate = vbv_maxrate / 2
|
779
797
|
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
798
|
+
if bitrate < min_bitrate
|
799
|
+
vbv_maxrate = min_bitrate
|
800
|
+
else
|
801
|
+
vbv_maxrate = bitrate
|
802
|
+
end
|
784
803
|
end
|
785
804
|
end
|
786
|
-
end
|
787
805
|
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
806
|
+
case preset
|
807
|
+
when 'slower', 'veryslow', 'placebo'
|
808
|
+
encoder_options['ref'] = '5'
|
809
|
+
end
|
810
|
+
|
811
|
+
encoder_options['vbv-maxrate'] = vbv_maxrate.to_s
|
812
|
+
encoder_options['vbv-bufsize'] = (@encoder_options.fetch('vbv-maxrate', vbv_maxrate).to_i / 2).to_s
|
813
|
+
encoder_options['crf-max'] = '25'
|
814
|
+
else
|
815
|
+
unless @abr_bitrate.nil?
|
816
|
+
handbrake_options['vb'] = @abr_bitrate.to_s
|
817
|
+
encoder_options['qpmax'] = '34'
|
818
|
+
end
|
792
819
|
|
793
|
-
|
794
|
-
|
795
|
-
|
820
|
+
handbrake_options['quality'] = @vbr_quality.to_s.gsub(/\.0+$/, '') unless @vbr_quality.nil?
|
821
|
+
|
822
|
+
if width > 1920 or height > 1080
|
823
|
+
handbrake_options['encoder-level'] = '5.1'
|
824
|
+
elsif width > 1280 or height > 720
|
825
|
+
handbrake_options['encoder-level'] = '4.0'
|
826
|
+
elsif width > 720 or height > 576
|
827
|
+
handbrake_options['encoder-level'] = '3.1'
|
828
|
+
else
|
829
|
+
handbrake_options['encoder-level'] = '3.0'
|
830
|
+
end
|
831
|
+
end
|
796
832
|
|
797
833
|
if @quick and not @handbrake_options.has_key? 'encoder-preset'
|
798
834
|
encoder_options['ref'] = '1'
|
data/lib/video_transcoding.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: video_transcoding
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Don Melton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
Video Transcoding is a package of tools to transcode, inspect
|