video_transcoding 0.10.0 → 0.11.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/README.md +26 -19
- data/bin/detect-crop +9 -4
- data/bin/transcode-video +15 -9
- data/lib/video_transcoding/version.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: 1ba201ee60bae63940461ad235187b738723c478
|
4
|
+
data.tar.gz: c1e50ded6787be60122559915853a1cdf38fe4df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d57ffe063543ec6651c756a1597b423f4e8c196e29818a7e97fba315c433787363b27d8be0063bdbdd9372c0547bf13c000835e09b36a1f48fa58b5fa175171
|
7
|
+
data.tar.gz: 6f2e1b09bc9bc9e4dfc4dfbb10843c089c5375ed739d35388821fb5bd838e9ba54e4180a0c02571c32f228c9f8ff3dde88ab383289f1ffc1a51b369dfd9a6308
|
data/README.md
CHANGED
@@ -16,7 +16,7 @@ Most of the tools in this package are essentially intelligent wrappers around Op
|
|
16
16
|
Transcode video file or disc image directory into format and size similar to popular online downloads.
|
17
17
|
|
18
18
|
* [`detect-crop`](#why-detect-crop)
|
19
|
-
Detect
|
19
|
+
Detect crop values for video file or disc image directory.
|
20
20
|
|
21
21
|
* [`convert-video`](#why-convert-video)
|
22
22
|
Convert video file from Matroska to MP4 format or from MP4 to Matroksa format without transcoding video.
|
@@ -117,17 +117,11 @@ But most of these default settings and automatic behaviors can be easily overrid
|
|
117
117
|
|
118
118
|
### Why `detect-crop`?
|
119
119
|
|
120
|
-
Removing the black, non-content borders of a video during transcoding is not about making the edges of the output look pretty. Those edges are usually not visible anyway when viewed full screen.
|
121
|
-
|
122
|
-
Cropping is about faster transcoding and higher quality. Fewer pixels to read and write almost always leads to a speed improvement. Fewer pixels also means the x264 encoder within HandBrake doesn't waste bitrate on non-content.
|
123
|
-
|
124
120
|
HandBrake applies automatic crop detection by default. While it's usually correct, it does guess wrong often enough not to be trusted without review. For example, HandBrake's default behavior removes the top and bottom 140 pixels from "[The Dark Knight (2008)](http://www.blu-ray.com/movies/The-Dark-Knight-Blu-ray/743/)" and "[The Hunger Games: Catching Fire (2013)](http://www.blu-ray.com/movies/The-Hunger-Games-Catching-Fire-Blu-ray/67923/)," losing significant portions of their full-frame content.
|
125
121
|
|
126
|
-
And sometimes HandBrake only crops a few pixels from one or more edges, which is too small of a difference in size to improve performance or quality.
|
127
|
-
|
128
122
|
This is why `transcode-video` doesn't allow HandBrake to apply cropping by default.
|
129
123
|
|
130
|
-
Instead, the `detect-crop` tool leverages both HandBrake and MPlayer
|
124
|
+
Instead, the `detect-crop` tool leverages both HandBrake and MPlayer to find the video cropping bounds. It then indicates whether those two programs agree. To aid in review, this tool prints commands to the terminal console allowing the recommended (or disputed) crop to be displayed, as well as a sample command line for `transcode-video` itself.
|
131
125
|
|
132
126
|
### Why `convert-video`?
|
133
127
|
|
@@ -201,7 +195,7 @@ The `.m4v` file extension is more "iTunes-friendly," but the file content itself
|
|
201
195
|
|
202
196
|
#### Reducing output size
|
203
197
|
|
204
|
-
If reducing output size is more important to you than quality, use the `--small` option:
|
198
|
+
If reducing output size is more important to you than a possible loss in quality, use the `--small` option:
|
205
199
|
|
206
200
|
transcode-video --small "/path/to/Movie.mkv"
|
207
201
|
|
@@ -233,7 +227,7 @@ The `--quick` option is also more than 15% speedier than the x264 video encoder'
|
|
233
227
|
|
234
228
|
Be aware that output files are slightly larger when using the `--quick` option since the loss of precision is also a loss of efficiency.
|
235
229
|
|
236
|
-
Performance also improves
|
230
|
+
Performance also improves using the `--small` option due to fewer calculations being made and fewer bits being written to disk.
|
237
231
|
|
238
232
|
#### Cropping
|
239
233
|
|
@@ -247,7 +241,7 @@ This command removes the left and right 240 pixels, typical of a 4:3 classic TV
|
|
247
241
|
|
248
242
|
transcode-video --crop 0:0:240:240 "/path/to/Movie.mkv"
|
249
243
|
|
250
|
-
Use the `detect-crop` tool to determine the
|
244
|
+
Use the `detect-crop` tool to determine the cropping bounds before transcoding.
|
251
245
|
|
252
246
|
You can also call the `detect-crop` logic from `transcode-video` with the single `detect` argument:
|
253
247
|
|
@@ -343,7 +337,7 @@ Unlike `HandBrakeCLI`, external subtitle file names are allowed to contain comma
|
|
343
337
|
|
344
338
|
### Using `detect-crop`
|
345
339
|
|
346
|
-
The command to find the
|
340
|
+
The command to find the video cropping bounds is as simple as:
|
347
341
|
|
348
342
|
detect-crop "/path/to/Movie.mkv"
|
349
343
|
|
@@ -378,8 +372,6 @@ You'll then need to preview both and decide which to use.
|
|
378
372
|
|
379
373
|
When input is a disc image directory instead of a single file, the `detect-crop` tool doesn't use MPlayer, nor does it print out commands to preview the crop.
|
380
374
|
|
381
|
-
Be aware that the algorithm to determine optimal shape always crops from the top and bottom or from the left and right, never from both axes.
|
382
|
-
|
383
375
|
### Using `convert-video`
|
384
376
|
|
385
377
|
The `convert-video` tool repackages video files, converting them from Matroska to MP4 format or from MP4 to Matroksa format without transcoding the video. It's as simple as:
|
@@ -504,11 +496,11 @@ Use the default settings whenever possible.
|
|
504
496
|
|
505
497
|
Use the `--mp4` or `--m4v` options if your target player can't handle Matroska format.
|
506
498
|
|
507
|
-
Use the `--small` option if you
|
499
|
+
Use the `--small` option if you want more space savings.
|
508
500
|
|
509
501
|
Use the `--quick` option if you're in a hurry.
|
510
502
|
|
511
|
-
|
503
|
+
Use `detect-crop` before transcoding to manually review and apply the best crop values.
|
512
504
|
|
513
505
|
Don't add audio tracks in their original format that aren't AAC or Dolby Digital AC-3.
|
514
506
|
|
@@ -631,16 +623,31 @@ What I don't use are [peak signal-to-noise ratios](https://en.wikipedia.org/wiki
|
|
631
623
|
|
632
624
|
### What options do you use with `transcode-video`?
|
633
625
|
|
634
|
-
I use the
|
626
|
+
Instead of the default size, I use the `--small` option for more space savings.
|
627
|
+
|
628
|
+
I never use the `--crop detect` function of `transcode-video` because I don't trust either `HandBrakeCLI` or `mplayer` to always get it right without supervision. Instead, I use the separate `detect-crop` tool before transcoding to manually review and apply the best crop values.
|
635
629
|
|
636
|
-
|
630
|
+
I let `transcode-video` automatically burn any forced subtitles into the output video track when the "forced" flag is enabled in the original.
|
637
631
|
|
638
632
|
I never include separate subtitle tracks, but I do add audio commentary tracks.
|
639
633
|
|
640
|
-
For a few problematic videos, I have to apply options like `--force-rate 23.976 --filter detelecine`. But
|
634
|
+
For a few problematic videos, I have to apply options like `--force-rate 23.976 --filter detelecine`. For others, options like `--encoder-option zones=...` to adjust bitrate distribution. But both of these cases are rare.
|
641
635
|
|
642
636
|
## History
|
643
637
|
|
638
|
+
### [0.11.0](https://github.com/donmelton/video_transcoding/releases/tag/0.11.0)
|
639
|
+
|
640
|
+
Thursday, September 15, 2016
|
641
|
+
|
642
|
+
* Change the behavior of `detect-crop` and the `--crop detect` function of `transcode-video` to no longer constrain the crop by default. Add a `--constrain` option to `detect-crop` and a `--constrain-crop` option to `transcode-video` to restore the old behavior. Also, deprecate the `--no-constrain` option of `detect-crop` and the `--no-constrain-crop` option of `transcode-video` since both are no longer necessary. Via [ #81](https://github.com/donmelton/video_transcoding/issues/81).
|
643
|
+
* Update the "README" document to:
|
644
|
+
* Revise multiple sections about the changes to cropping behavior.
|
645
|
+
* Revise the description of the `--small` option in multiple sections.
|
646
|
+
* Revise how I use `transcode-video` in the "FAQ" section.
|
647
|
+
* Add support for the `comb-detect`, `hqdn3d` and `pad` filters to `transcode-video`.
|
648
|
+
* Fix a bug in `transcode-video` where the `--filter` option failed when `nlmeans-tune` was used as a argument. This was due to a regular expression only allowing lowercase alpha characters and not hyphens.
|
649
|
+
* Update the default AC-3 audio and pass-through bitrates in the `--help` output of `transcode-video` to 640 Kbps, matching the behavior of the code since version 0.5.0.
|
650
|
+
|
644
651
|
### [0.10.0](https://github.com/donmelton/video_transcoding/releases/tag/0.10.0)
|
645
652
|
|
646
653
|
Friday, May 6, 2016
|
data/bin/detect-crop
CHANGED
@@ -22,14 +22,14 @@ HERE
|
|
22
22
|
|
23
23
|
def usage
|
24
24
|
<<HERE
|
25
|
-
Detect
|
25
|
+
Detect crop values for video file or disc image directory.
|
26
26
|
|
27
27
|
Usage: #{$PROGRAM_NAME} [OPTION]... [FILE|DIRECTORY]...
|
28
28
|
|
29
29
|
--scan list title(s) and tracks in video media and exit
|
30
30
|
--title NUMBER select numbered title in video media
|
31
31
|
(default: main feature or first listed)
|
32
|
-
--
|
32
|
+
--constrain constrain crop to optimal shape
|
33
33
|
--values-only output only unambiguous crop values, not commands
|
34
34
|
|
35
35
|
-v, --verbose increase diagnostic information
|
@@ -46,15 +46,20 @@ HERE
|
|
46
46
|
super
|
47
47
|
@scan = false
|
48
48
|
@title = nil
|
49
|
-
@constrain =
|
49
|
+
@constrain = false
|
50
50
|
@values_only = false
|
51
51
|
end
|
52
52
|
|
53
53
|
def define_options(opts)
|
54
54
|
opts.on('--scan') { @scan = true }
|
55
55
|
opts.on('--title ARG', Integer) { |arg| @title = arg }
|
56
|
-
opts.on('--
|
56
|
+
opts.on('--constrain') { @constrain = true }
|
57
57
|
opts.on('--values-only') { @values_only = true }
|
58
|
+
|
59
|
+
opts.on '--no-constrain' do
|
60
|
+
Console.warn 'Using deprecated option: --no-constrain'
|
61
|
+
@constrain = false
|
62
|
+
end
|
58
63
|
end
|
59
64
|
|
60
65
|
def configure
|
data/bin/transcode-video
CHANGED
@@ -67,10 +67,10 @@ Quality options:
|
|
67
67
|
|
68
68
|
Video options:
|
69
69
|
--crop T:B:L:R set video crop values (default: 0:0:0:0)
|
70
|
-
(use `--crop detect` for
|
70
|
+
(use `--crop detect` for `detect-crop` behavior)
|
71
71
|
(use `--crop auto` for `HandBrakeCLI` behavior)
|
72
|
-
--
|
73
|
-
|
72
|
+
--constrain-crop
|
73
|
+
constrain `--crop detect` to optimal shape
|
74
74
|
--fallback-crop handbrake|mplayer|none
|
75
75
|
select fallback crop values if `--crop detect` fails
|
76
76
|
--720p fit video within 1280x720 pixel bounds
|
@@ -121,9 +121,9 @@ Audio options:
|
|
121
121
|
with `stereo` to allow only single stereo track
|
122
122
|
(can be used multiple times)
|
123
123
|
--ac3-bitrate 384|448|640
|
124
|
-
set AC-3 audio bitrate (default:
|
124
|
+
set AC-3 audio bitrate (default: 640)
|
125
125
|
--pass-ac3-bitrate 384|448|640
|
126
|
-
set AC-3 audio pass-through bitrate (default:
|
126
|
+
set AC-3 audio pass-through bitrate (default: 640)
|
127
127
|
--copy-audio TRACK|all
|
128
128
|
try to copy track selected by number in its original format
|
129
129
|
falling back to AC-3 format if original not allowed
|
@@ -225,7 +225,7 @@ HERE
|
|
225
225
|
@vbv_maxrate_480p = 2000
|
226
226
|
@quick = false
|
227
227
|
@crop = {:top => 0, :bottom => 0, :left => 0, :right => 0}
|
228
|
-
@constrain_crop =
|
228
|
+
@constrain_crop = false
|
229
229
|
@fallback_crop = nil
|
230
230
|
@target_bitrate = nil
|
231
231
|
@main_audio = nil
|
@@ -354,7 +354,12 @@ HERE
|
|
354
354
|
end
|
355
355
|
end
|
356
356
|
|
357
|
+
opts.on '--constrain-crop' do
|
358
|
+
@constrain_crop = true
|
359
|
+
end
|
360
|
+
|
357
361
|
opts.on '--no-constrain-crop' do
|
362
|
+
Console.warn 'Using deprecated option: --no-constrain-crop'
|
358
363
|
@constrain_crop = false
|
359
364
|
end
|
360
365
|
|
@@ -449,10 +454,11 @@ HERE
|
|
449
454
|
end
|
450
455
|
|
451
456
|
opts.on '--filter ARG' do |arg|
|
452
|
-
if arg =~ /^([a-
|
457
|
+
if arg =~ /^([a-z0-9-]+)(?:=(.+))?$/
|
453
458
|
case $1
|
454
|
-
when '
|
455
|
-
'
|
459
|
+
when 'comb-detect', 'deinterlace', 'decomb', 'detelecine',
|
460
|
+
'hqdn3d', 'denoise', 'nlmeans', 'nlmeans-tune', 'deblock',
|
461
|
+
'rotate', 'pad', 'grayscale'
|
456
462
|
force_handbrake_option $1, $2
|
457
463
|
else
|
458
464
|
fail UsageError, "unsupported filter name: #{$1}"
|
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.11.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-
|
11
|
+
date: 2016-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
Video Transcoding is a package of tools to transcode, inspect
|