other_video_transcoding 0.3.1 → 0.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: 2d1384cb7611877537d9ff8d72a42251c40697b73685fabfc57ac5796e9e3ebc
4
- data.tar.gz: 813d5df34e4c000f85b0a369acc77b48c57ba66bdcfec8f408dded228a8c5598
3
+ metadata.gz: cfd039fdab5dca779448614baaf5f0e99b3d7dc883f97693919a016224e4b7aa
4
+ data.tar.gz: c97d8899ea867a018059d1896c3608e3982f8677f8fe81c7506097171c7591e8
5
5
  SHA512:
6
- metadata.gz: 189041c0f4c25d0c62376db9f8b5eaf55a819a7c647cc21e8d424355b2e525626096dd2620ad46de2afaba1421f90f455cbea08a56c058244c67a0775654f1af
7
- data.tar.gz: c0c7b1103fbbd187e951f6f16784f74ec7cd966bb50234fa51469b7f2522de880cab2330b2c32fbe984041b84c2eda87e965d6c8d0da2eb1b97db64f4174885f
6
+ metadata.gz: 1915b0bdacf95a0bdfe5e825497f9081571318aaf9423a10df614b0f5ab7a74949ebd6c6039c4ef09c5ce2d567dbe6a851019f996d64284a1ab0525a0a7c10e2
7
+ data.tar.gz: 64f23ade8dc74a15f8024313b66cd91b3298e80d4e39be391f47630ddd2aa812c67271bfa522794202dd33b4ce18b601c8cbf77a8b46078f288c050afd5eef3a
@@ -2,6 +2,14 @@
2
2
 
3
3
  This single document contains all of the notes created for each [release](https://github.com/donmelton/other_video_transcoding/releases).
4
4
 
5
+ ## [0.3.2](https://github.com/donmelton/other_video_transcoding/releases/tag/0.3.2)
6
+
7
+ Friday, September 11, 2020
8
+
9
+ * Modify `other-transcode` to use a new `ffmpeg` Matroksa muxer option so the `-disposition` option is once again honored when using `ffmpeg` version 4.3 and later.
10
+ * Change the codec ID from the default of `hev1` to `hvc1` for HEVC video in MP4 output from `other-transcode` to enable playback in QuickTime on macOS. Via [ #50](https://github.com/donmelton/other_video_transcoding/issues/50).
11
+ * Convert added SRT format subtitles to MOV-compatible format in MP4 output from `other-transcode`. Via [ #55](https://github.com/donmelton/other_video_transcoding/issues/55).
12
+
5
13
  ## [0.3.1](https://github.com/donmelton/other_video_transcoding/releases/tag/0.3.1)
6
14
 
7
15
  Tuesday, May 26, 2020
@@ -15,14 +15,14 @@ module Transcoding
15
15
 
16
16
  class Command
17
17
  def about
18
- <<HERE
19
- ask-ffmpeg-log 0.3.1
18
+ <<-HERE
19
+ ask-ffmpeg-log 0.3.2
20
20
  Copyright (c) 2019-2020 Don Melton
21
- HERE
21
+ HERE
22
22
  end
23
23
 
24
24
  def usage
25
- <<HERE
25
+ <<-HERE
26
26
  Report temporal information from ffmpeg-generated `.log` files
27
27
  containing encoding statistics.
28
28
 
@@ -34,7 +34,7 @@ Options:
34
34
  --tabular use tab character as field delimiter and suppress labels
35
35
  -h, --help display this help and exit
36
36
  --version output version information and exit
37
- HERE
37
+ HERE
38
38
  end
39
39
 
40
40
  def initialize
@@ -17,14 +17,14 @@ module Transcoding
17
17
 
18
18
  class Command
19
19
  def about
20
- <<HERE
21
- other-transcode 0.3.1
20
+ <<-HERE
21
+ other-transcode 0.3.2
22
22
  Copyright (c) 2019-2020 Don Melton
23
- HERE
23
+ HERE
24
24
  end
25
25
 
26
26
  def usage1
27
- <<HERE
27
+ <<-HERE
28
28
  Transcode Blu-ray Disc or DVD rip into a smaller, more portable format
29
29
  while remaining high enough quality to be mistaken for the original.
30
30
 
@@ -34,55 +34,55 @@ Creates Matroska `.mkv` format file in current working directory.
34
34
 
35
35
  Automatically selects a platform-specific hardware video encoder.
36
36
 
37
- HERE
37
+ HERE
38
38
  end
39
39
 
40
40
  def usage2
41
- <<HERE
41
+ <<-HERE
42
42
  Input options:
43
43
  --position TIME, --duration TIME
44
44
  start transcoding at position and/or limit to duration
45
45
  in seconds[.milliseconds] or [HH:]MM:SS[.m...] format
46
46
 
47
- HERE
47
+ HERE
48
48
  end
49
49
 
50
50
  def usage3
51
- <<HERE
51
+ <<-HERE
52
52
  Output options:
53
53
  --debug increase diagnostic information
54
54
  --scan print media information and exit
55
55
  --preview-crop show commands to preview detected video crop and exit
56
- HERE
56
+ HERE
57
57
  end
58
58
 
59
59
  def usage4
60
- <<HERE
60
+ <<-HERE
61
61
  --print-crop print only detected video crop geometry and exit
62
62
  --mp4 output MP4 instead of Matroska `.mkv` format
63
63
  --copy-track-names
64
64
  copy all input audio track names to output
65
- HERE
65
+ HERE
66
66
  end
67
67
 
68
68
  def usage5
69
- <<HERE
69
+ <<-HERE
70
70
  --max-muxing-queue-size SIZE
71
71
  set maximum number of packets to buffer when muxing
72
- HERE
72
+ HERE
73
73
  end
74
74
 
75
75
  def usage6
76
- <<HERE
76
+ <<-HERE
77
77
  -n, --dry-run don't transcode, just show `ffmpeg` command and exit
78
78
 
79
79
  Video options:
80
80
  --hevc use HEVC version of platform-specific video encoder
81
- HERE
81
+ HERE
82
82
  end
83
83
 
84
84
  def usage7
85
- <<HERE
85
+ <<-HERE
86
86
  --vt use Apple Video Toolbox encoder
87
87
  --nvenc use Nvidia video encoder
88
88
  --qsv use Intel Quick Sync video encoder
@@ -101,11 +101,11 @@ HERE
101
101
  --cuvid use Nvidia video decoder
102
102
  for H.264, VC-1, MPEG-2 and other formats
103
103
  (ignores scope set by `--decode`)
104
- HERE
104
+ HERE
105
105
  end
106
106
 
107
107
  def usage8
108
- <<HERE
108
+ <<-HERE
109
109
  --target [2160p=|1080p=|720p=|480p=]BITRATE
110
110
  set video bitrate target (default: based on input)
111
111
  or target for specific input resolution
@@ -113,11 +113,11 @@ HERE
113
113
  set video crop geometry (default: none)
114
114
  or automatically detect it
115
115
  --720p fit video within 1280x720 pixel bounds
116
- HERE
116
+ HERE
117
117
  end
118
118
 
119
119
  def usage9
120
- <<HERE
120
+ <<-HERE
121
121
  --1080p " " " 1920x1080 " "
122
122
  --deinterlace reduce interlace artifacts without changing frame rate
123
123
  (applied automatically for some inputs)
@@ -126,11 +126,11 @@ HERE
126
126
  --detelecine drop duplicate frames to restore original frame rate
127
127
  (disables any deinterlacing and forced frame rate)
128
128
  --no-filters disable any automatic adjustments via filters
129
- HERE
129
+ HERE
130
130
  end
131
131
 
132
132
  def usage10
133
- <<HERE
133
+ <<-HERE
134
134
  --rc-maxrate FACTOR, --rc-bufsize FACTOR
135
135
  set ratecontrol maximum rate and/or buffer size
136
136
  as multiple of video bitrate target
@@ -179,27 +179,27 @@ x264 software video encoder options:
179
179
  --x264-quick increase encoding speed by 70-80%
180
180
  with no easily perceptible loss in video quality
181
181
  (avoids quality problems with some encoder presets)
182
- HERE
182
+ HERE
183
183
  end
184
184
 
185
185
  def usage11
186
- <<HERE
186
+ <<-HERE
187
187
 
188
188
  Audio options:
189
189
  --main-audio TRACK[=WIDTH]
190
190
  select main audio track by number (default: 1)
191
191
  with optional width (default: surround)
192
- HERE
192
+ HERE
193
193
  end
194
194
 
195
195
  def usage12
196
- <<HERE
196
+ <<-HERE
197
197
  (use `original` to disable transcoding)
198
- HERE
198
+ HERE
199
199
  end
200
200
 
201
201
  def usage13
202
- <<HERE
202
+ <<-HERE
203
203
  --add-audio TRACK|all|LANGUAGE|STRING[=WIDTH]
204
204
  add single audio track by number
205
205
  including main audio track
@@ -212,49 +212,49 @@ HERE
212
212
  excluding main audio track
213
213
  (comparison is case-insensitve)
214
214
  with optional width (default: stereo)
215
- HERE
215
+ HERE
216
216
  end
217
217
 
218
218
  def usage14
219
- <<HERE
219
+ <<-HERE
220
220
  (use `original` to disable transcoding)
221
- HERE
221
+ HERE
222
222
  end
223
223
 
224
224
  def usage15
225
- <<HERE
225
+ <<-HERE
226
226
  --surround-bitrate BITRATE
227
227
  set surround audio bitrate (default: 640)
228
228
  --stereo-bitrate BITRATE
229
229
  set stereo audio bitrate (default: 256)
230
- HERE
230
+ HERE
231
231
  end
232
232
 
233
233
  def usage16
234
- <<HERE
234
+ <<-HERE
235
235
  --mono-bitrate BITRATE
236
236
  set mono audio bitrate (default: 50% of stereo bitrate)
237
- HERE
237
+ HERE
238
238
  end
239
239
 
240
240
  def usage17
241
- <<HERE
241
+ <<-HERE
242
242
  --eac3 use Enhanced AC-3 format for surround audio
243
- HERE
243
+ HERE
244
244
  end
245
245
 
246
246
  def usage18
247
- <<HERE
247
+ <<-HERE
248
248
  --all-eac3 " " " " " all audio
249
249
  --keep-ac3-stereo
250
250
  copy stereo and mono audio in AC-3 format
251
251
  even when orginal bitrate is above transcoding bitrate
252
252
  --pass-dts enable passthrough of audio in DTS and DTS-ES formats
253
- HERE
253
+ HERE
254
254
  end
255
255
 
256
256
  def usage19
257
- <<HERE
257
+ <<-HERE
258
258
 
259
259
  Subtitle options:
260
260
  --add-subtitle TRACK[=forced]|auto|all|LANGUAGE|STRING
@@ -279,7 +279,7 @@ Other options:
279
279
  --version output version information and exit
280
280
 
281
281
  Requires `ffprobe`, `ffmpeg` and `mkvpropedit`.
282
- HERE
282
+ HERE
283
283
  end
284
284
 
285
285
  def initialize
@@ -290,6 +290,7 @@ HERE
290
290
  @detect = false
291
291
  @preview = false
292
292
  @format = :mkv
293
+ @mkv_options = []
293
294
  @copy_track_names = false
294
295
  @max_muxing_queue_size = nil
295
296
  @dry_run = false
@@ -887,6 +888,11 @@ HERE
887
888
  @stereo_encoder = 'aac'
888
889
  end
889
890
  end
891
+
892
+ if @format == :mkv
893
+ capabilities = get_muxer_capabilities
894
+ @mkv_options = ['-default_mode', 'passthrough'] if capabilities =~ /passthrough/
895
+ end
890
896
  end
891
897
 
892
898
  def verify_tool_availability(command)
@@ -964,6 +970,30 @@ HERE
964
970
  $CHILD_STATUS.exitstatus == 0
965
971
  end
966
972
 
973
+ def get_muxer_capabilities
974
+ Kernel.warn 'Getting muxer capabilities...'
975
+ output = ''
976
+
977
+ begin
978
+ IO.popen([
979
+ 'ffmpeg',
980
+ '-loglevel', 'quiet',
981
+ '-h', 'muxer=matroska'
982
+ ], :err=>[:child, :out]) do |io|
983
+ io.each do |line|
984
+ Kernel.warn line if @debug
985
+ output += line
986
+ end
987
+ end
988
+ rescue SystemCallError => e
989
+ raise "getting muxer capabilities failed: #{e}"
990
+ end
991
+
992
+ fail 'getting muxer capabilities failed' unless $CHILD_STATUS.exitstatus == 0
993
+
994
+ output
995
+ end
996
+
967
997
  def process_input(path)
968
998
  seconds = Time.now.tv_sec
969
999
 
@@ -1034,7 +1064,7 @@ HERE
1034
1064
  get_audio_options(media_info) +
1035
1065
  get_subtitle_options(media_info, burn_subtitle) + [
1036
1066
  '-metadata:g', 'title='
1037
- ] + (@format == :mp4 ? ['-movflags', 'disable_chpl'] : []) + [
1067
+ ] + (@format == :mkv ? @mkv_options : ['-movflags', 'disable_chpl']) + [
1038
1068
  output_path
1039
1069
  ]
1040
1070
 
@@ -1823,6 +1853,8 @@ HERE
1823
1853
  '-disposition:v', 'default'
1824
1854
  ]
1825
1855
 
1856
+ encode_options += ['-tag:v', 'hvc1'] if @format == :mp4 and @hevc
1857
+
1826
1858
  [decode_options, encode_options]
1827
1859
  end
1828
1860
 
@@ -2095,7 +2127,7 @@ HERE
2095
2127
 
2096
2128
  options += [
2097
2129
  '-map', "0:#{subtitle['index']}",
2098
- "-c:s:#{index}", 'copy',
2130
+ "-c:s:#{index}", ((@format == :mp4 and subtitle['codec_name'] == 'subrip') ? 'mov_text' : 'copy'),
2099
2131
  "-disposition:s:#{index}", (force ? 'default+forced' : '0')
2100
2132
  ]
2101
2133
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'other_video_transcoding'
3
- s.version = '0.3.1'
3
+ s.version = '0.3.2'
4
4
  s.required_ruby_version = '>= 2.0'
5
5
  s.summary = 'Other tools to transcode videos.'
6
6
  s.description = <<-HERE
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: other_video_transcoding
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Don Melton
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-26 00:00:00.000000000 Z
11
+ date: 2020-09-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: " Other Video Transcoding is a package of tools to transcode videos.\n"
14
14
  email: don@blivet.com
@@ -25,12 +25,17 @@ files:
25
25
  - README.md
26
26
  - bin/ask-ffmpeg-log
27
27
  - bin/other-transcode
28
+ - other_video_transcoding-0.1.0.gem
29
+ - other_video_transcoding-0.1.1.gem
30
+ - other_video_transcoding-0.2.0.gem
31
+ - other_video_transcoding-0.3.0.gem
32
+ - other_video_transcoding-0.3.1.gem
28
33
  - other_video_transcoding.gemspec
29
34
  homepage: https://github.com/donmelton/other_video_transcoding
30
35
  licenses:
31
36
  - MIT
32
37
  metadata: {}
33
- post_install_message:
38
+ post_install_message:
34
39
  rdoc_options: []
35
40
  require_paths:
36
41
  - lib
@@ -46,7 +51,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
51
  version: '0'
47
52
  requirements: []
48
53
  rubygems_version: 3.1.2
49
- signing_key:
54
+ signing_key:
50
55
  specification_version: 4
51
56
  summary: Other tools to transcode videos.
52
57
  test_files: []