other_video_transcoding 0.1.1 → 0.2.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/CHANGELOG.md +11 -0
- data/bin/ask-ffmpeg-log +1 -1
- data/bin/other-transcode +137 -65
- data/other_video_transcoding.gemspec +1 -1
- 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: fbe4654304564db44ba76d5b6b4a805a853e4ae2fca1238f69d7ceac6152970b
|
4
|
+
data.tar.gz: 5104621d3963ddacfd90796a2dd9cad57fc04f03c47e6122cc7dccd3794df16c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6eec714eb59091c7ee48b74a4ac6dba65b3333bfa3dbb76b24ef5afb334e0c7434cc16234fe8e056cb7328eecc820794a8f54433082a49db6e06c02b812c690d
|
7
|
+
data.tar.gz: ff5ee96313996a08b9433e223c64e01b492c7bebc1735c5533d6f263373c56e8202d13e78bd9c07221f6b08c502577d9ae8701a53f5741a4ce57911b8024b826
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,17 @@
|
|
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.2.0](https://github.com/donmelton/other_video_transcoding/releases/tag/0.2.0)
|
6
|
+
|
7
|
+
Monday, January 13, 2020
|
8
|
+
|
9
|
+
* Allow `all` to be used as an argument to the `--add-audio` and `--add-subtitle` options of `other-transcode`, adding all audio tracks or all subtitle tracks. Via [ #3](https://github.com/donmelton/other_video_transcoding/issues/3).
|
10
|
+
* Add `original` as a width attribute to the `--main-audio` and `--add-audio` options of `other-transcode`. Unlike `stereo` and `surround`, this disables transcoding and always copies the selected track(s). Via [ #5](https://github.com/donmelton/other_video_transcoding/issues/5).
|
11
|
+
* Add a `--copy-video` option to `other-transcode`. This disables transcoding and copies the original video track to the output.
|
12
|
+
* No longer ignore any image-based subtitles added to MP4 output. Instead, let `ffmpeg` foolishly add DVD-style subtitles and (currently) fail when adding Blu-ray Disc-style subtitles.
|
13
|
+
* Deprecate the `--name` option of `other-transcode` because it doesn't make sense to name only the first output file from a tool which can take multiple inputs. The option still works for now, but using it issues a warning message. It will be removed in a future release.
|
14
|
+
* Remove warnings when other options disable the Nvidia video decoder, which could only happen if the `--burn-subtitle` or `--detelecine` options were used with the `--cuvid` option.
|
15
|
+
|
5
16
|
## [0.1.1](https://github.com/donmelton/other_video_transcoding/releases/tag/0.1.1)
|
6
17
|
|
7
18
|
Friday, January 3, 2020
|
data/bin/ask-ffmpeg-log
CHANGED
data/bin/other-transcode
CHANGED
@@ -18,7 +18,7 @@ module Transcoding
|
|
18
18
|
class Command
|
19
19
|
def about
|
20
20
|
<<HERE
|
21
|
-
other-transcode 0.
|
21
|
+
other-transcode 0.2.0
|
22
22
|
Copyright (c) 2019-2020 Don Melton
|
23
23
|
HERE
|
24
24
|
end
|
@@ -59,8 +59,6 @@ HERE
|
|
59
59
|
<<HERE
|
60
60
|
--print-crop print only detected video crop geometry and exit
|
61
61
|
--mp4 output MP4 instead of Matroska `.mkv` format
|
62
|
-
--name STRING set output filename, excluding format extension
|
63
|
-
(default: based on input filename)
|
64
62
|
--copy-track-names
|
65
63
|
copy all input audio track names to output
|
66
64
|
HERE
|
@@ -132,6 +130,7 @@ HERE
|
|
132
130
|
|
133
131
|
def usage10
|
134
132
|
<<HERE
|
133
|
+
--copy-video disable transcoding and copy original video track
|
135
134
|
|
136
135
|
Apple Video Toolbox encoder options:
|
137
136
|
--vt-allow-sw allow software encoding
|
@@ -185,9 +184,22 @@ Audio options:
|
|
185
184
|
--main-audio TRACK[=WIDTH]
|
186
185
|
select main audio track by number (default: 1)
|
187
186
|
with optional width (default: surround)
|
188
|
-
|
187
|
+
HERE
|
188
|
+
end
|
189
|
+
|
190
|
+
def usage12
|
191
|
+
<<HERE
|
192
|
+
(use `original` to disable transcoding)
|
193
|
+
HERE
|
194
|
+
end
|
195
|
+
|
196
|
+
def usage13
|
197
|
+
<<HERE
|
198
|
+
--add-audio TRACK|all|LANGUAGE|STRING[=WIDTH]
|
189
199
|
add single audio track by number
|
190
200
|
including main audio track
|
201
|
+
or all audio tracks
|
202
|
+
excluding main audio track
|
191
203
|
or audio tracks by language code
|
192
204
|
excluding main audio track
|
193
205
|
(in ISO 639-2 format, e.g.: `eng`)
|
@@ -195,6 +207,17 @@ Audio options:
|
|
195
207
|
excluding main audio track
|
196
208
|
(comparison is case-insensitve)
|
197
209
|
with optional width (default: stereo)
|
210
|
+
HERE
|
211
|
+
end
|
212
|
+
|
213
|
+
def usage14
|
214
|
+
<<HERE
|
215
|
+
(use `original` to disable transcoding)
|
216
|
+
HERE
|
217
|
+
end
|
218
|
+
|
219
|
+
def usage15
|
220
|
+
<<HERE
|
198
221
|
--surround-bitrate BITRATE
|
199
222
|
set surround audio bitrate (default: 640)
|
200
223
|
--stereo-bitrate BITRATE
|
@@ -202,15 +225,16 @@ Audio options:
|
|
202
225
|
--eac3 use Enhanced AC-3 format for surround audio
|
203
226
|
|
204
227
|
Subtitle options:
|
205
|
-
--add-subtitle TRACK[=forced]|auto|LANGUAGE|STRING
|
228
|
+
--add-subtitle TRACK[=forced]|auto|all|LANGUAGE|STRING
|
206
229
|
add single subtitle track by number
|
207
230
|
optionally setting forced disposition
|
208
231
|
or enable automatic addition of forced subtitle
|
209
|
-
or add subtitle tracks
|
232
|
+
or add all subtitle tracks
|
233
|
+
or subtitle tracks by language code
|
210
234
|
(in ISO 639-2 format, e.g.: `eng`)
|
211
235
|
or subtitle tracks with titles containing string
|
212
236
|
(comparison is case-insensitve)
|
213
|
-
(
|
237
|
+
(variations exclude any burned track)
|
214
238
|
--burn-subtitle TRACK|auto
|
215
239
|
burn subtitle track by number into video
|
216
240
|
or enable automatic burning of forced subtitle
|
@@ -295,12 +319,13 @@ HERE
|
|
295
319
|
case arg
|
296
320
|
when 'full'
|
297
321
|
puts usage1 + usage2 + usage3 + usage4 + usage5 + usage6 +
|
298
|
-
usage7 + usage8 + usage9 + usage10 + usage11
|
322
|
+
usage7 + usage8 + usage9 + usage10 + usage11 + usage12 +
|
323
|
+
usage13 + usage14 + usage15
|
299
324
|
when 'more'
|
300
325
|
puts usage1 + usage2 + usage3 + usage4 + usage6 + usage7 +
|
301
|
-
usage8 + usage9 + usage11
|
326
|
+
usage8 + usage9 + usage11 + usage13 + usage15
|
302
327
|
else
|
303
|
-
puts usage1 + usage3 + usage6 + usage8 + usage11
|
328
|
+
puts usage1 + usage3 + usage6 + usage8 + usage11 + usage13 + usage15
|
304
329
|
end
|
305
330
|
|
306
331
|
exit
|
@@ -360,6 +385,9 @@ HERE
|
|
360
385
|
|
361
386
|
opts.on '--name ARG' do |arg|
|
362
387
|
@name = arg
|
388
|
+
Kernel.warn '**********'
|
389
|
+
Kernel.warn 'Using deprecated option: --name'
|
390
|
+
Kernel.warn '**********'
|
363
391
|
end
|
364
392
|
|
365
393
|
opts.on '--copy-track-names' do
|
@@ -411,10 +439,12 @@ HERE
|
|
411
439
|
|
412
440
|
opts.on '--[no-]10-bit' do |arg|
|
413
441
|
@ten_bit = arg
|
442
|
+
@encoder = nil if @encoder == 'copy'
|
414
443
|
end
|
415
444
|
|
416
445
|
opts.on '--preset ARG' do |arg|
|
417
446
|
@preset = arg
|
447
|
+
@encoder = nil if @encoder == 'copy'
|
418
448
|
end
|
419
449
|
|
420
450
|
opts.on '--decode ARG' do |arg|
|
@@ -451,6 +481,8 @@ HERE
|
|
451
481
|
else
|
452
482
|
@target = [arg.to_i, 1].max
|
453
483
|
end
|
484
|
+
|
485
|
+
@encoder = nil if @encoder == 'copy'
|
454
486
|
end
|
455
487
|
|
456
488
|
opts.on '--crop ARG' do |arg|
|
@@ -462,22 +494,27 @@ HERE
|
|
462
494
|
else
|
463
495
|
fail UsageError, "invalid crop geometry: #{arg}"
|
464
496
|
end
|
497
|
+
|
498
|
+
@encoder = nil if @encoder == 'copy'
|
465
499
|
end
|
466
500
|
|
467
501
|
opts.on '--720p' do
|
468
502
|
@max_width = 1280
|
469
503
|
@max_height = 720
|
504
|
+
@encoder = nil if @encoder == 'copy'
|
470
505
|
end
|
471
506
|
|
472
507
|
opts.on '--1080p' do
|
473
508
|
@max_width = 1920
|
474
509
|
@max_height = 1080
|
510
|
+
@encoder = nil if @encoder == 'copy'
|
475
511
|
end
|
476
512
|
|
477
513
|
opts.on '--deinterlace' do
|
478
514
|
@deinterlace = true
|
479
515
|
@detelecine = false
|
480
516
|
@enable_filters = false
|
517
|
+
@encoder = nil if @encoder == 'copy' and @decoder_type != :cuvid
|
481
518
|
end
|
482
519
|
|
483
520
|
opts.on '--rate ARG' do |arg|
|
@@ -500,6 +537,7 @@ HERE
|
|
500
537
|
|
501
538
|
@detelecine = false
|
502
539
|
@enable_filters = false
|
540
|
+
@encoder = nil if @encoder == 'copy'
|
503
541
|
end
|
504
542
|
|
505
543
|
opts.on '--detelecine' do
|
@@ -507,12 +545,26 @@ HERE
|
|
507
545
|
@deinterlace = false
|
508
546
|
@rate = nil
|
509
547
|
@enable_filters = false
|
548
|
+
@encoder = nil if @encoder == 'copy'
|
510
549
|
end
|
511
550
|
|
512
551
|
opts.on '--no-filters' do
|
513
552
|
@enable_filters = false
|
514
553
|
end
|
515
554
|
|
555
|
+
opts.on '--copy-video' do
|
556
|
+
@encoder = 'copy'
|
557
|
+
@hevc = false
|
558
|
+
@ten_bit = nil
|
559
|
+
@preset = nil
|
560
|
+
@target = nil
|
561
|
+
@crop = nil
|
562
|
+
@rate = nil
|
563
|
+
@detelecine = false
|
564
|
+
@enable_filters = false
|
565
|
+
@burn_subtitle_track = 0
|
566
|
+
end
|
567
|
+
|
516
568
|
opts.on '--vt-allow-sw' do
|
517
569
|
@encoder = @hevc ? 'hevc_videotoolbox' : 'h264_videotoolbox'
|
518
570
|
@vt_allow_sw = true
|
@@ -603,7 +655,7 @@ HERE
|
|
603
655
|
end
|
604
656
|
|
605
657
|
opts.on '--main-audio ARG' do |arg|
|
606
|
-
if arg =~ /^([0-9]+)(?:=(surround|
|
658
|
+
if arg =~ /^([0-9]+)(?:=(stereo|surround|original))?$/
|
607
659
|
@audio_selections[0][:track] = $1.to_i
|
608
660
|
@audio_selections[0][:width] = $2.to_sym unless $2.nil?
|
609
661
|
else
|
@@ -612,7 +664,7 @@ HERE
|
|
612
664
|
end
|
613
665
|
|
614
666
|
opts.on '--add-audio ARG' do |arg|
|
615
|
-
if arg =~ /^([^=]+)(?:=(surround|
|
667
|
+
if arg =~ /^([^=]+)(?:=(stereo|surround|original))?$/
|
616
668
|
scope = $1
|
617
669
|
width = $2
|
618
670
|
|
@@ -676,6 +728,8 @@ HERE
|
|
676
728
|
else
|
677
729
|
fail UsageError, "invalid subtitle track: #{arg}"
|
678
730
|
end
|
731
|
+
|
732
|
+
@encoder = nil if @encoder == 'copy'
|
679
733
|
end
|
680
734
|
end
|
681
735
|
|
@@ -735,7 +789,7 @@ HERE
|
|
735
789
|
else
|
736
790
|
@encoder.sub!(/^h264/, 'hevc') if @hevc
|
737
791
|
|
738
|
-
unless @dry_run or encoders =~ /#{@encoder}/
|
792
|
+
unless @dry_run or @encoder == 'copy' or encoders =~ /#{@encoder}/
|
739
793
|
fail "video encoder not available: #{@encoder}"
|
740
794
|
end
|
741
795
|
end
|
@@ -1241,13 +1295,7 @@ HERE
|
|
1241
1295
|
overlay_filter = nil
|
1242
1296
|
else
|
1243
1297
|
overlay_filter = "[0:#{burn_subtitle['index']}]overlay"
|
1244
|
-
|
1245
|
-
unless cuvid_decoder.nil?
|
1246
|
-
Kernel.warn '**********'
|
1247
|
-
Kernel.warn "burning subtitle disables video decoder: #{cuvid_decoder}"
|
1248
|
-
Kernel.warn '**********'
|
1249
|
-
cuvid_decoder = nil
|
1250
|
-
end
|
1298
|
+
cuvid_decoder = nil
|
1251
1299
|
end
|
1252
1300
|
|
1253
1301
|
deinterlace = @deinterlace
|
@@ -1267,7 +1315,7 @@ HERE
|
|
1267
1315
|
|
1268
1316
|
if deinterlace
|
1269
1317
|
if cuvid_decoder.nil?
|
1270
|
-
frame_rate_filter = 'yadif=deint=interlaced'
|
1318
|
+
frame_rate_filter = 'yadif=deint=interlaced' unless @encoder == 'copy'
|
1271
1319
|
else
|
1272
1320
|
cuvid_options += ['-deint:v', 'adaptive']
|
1273
1321
|
end
|
@@ -1280,14 +1328,8 @@ HERE
|
|
1280
1328
|
end
|
1281
1329
|
|
1282
1330
|
if @detelecine
|
1283
|
-
unless cuvid_decoder.nil?
|
1284
|
-
Kernel.warn '**********'
|
1285
|
-
Kernel.warn "detelecine disables video decoder: #{cuvid_decoder}"
|
1286
|
-
Kernel.warn '**********'
|
1287
|
-
cuvid_decoder = nil
|
1288
|
-
end
|
1289
|
-
|
1290
1331
|
frame_rate_filter = 'fieldmatch=order=tff:combmatch=none,decimate'
|
1332
|
+
cuvid_decoder = nil
|
1291
1333
|
end
|
1292
1334
|
|
1293
1335
|
width = video['width'].to_i
|
@@ -1375,12 +1417,16 @@ HERE
|
|
1375
1417
|
conversion_filter = nil
|
1376
1418
|
end
|
1377
1419
|
|
1378
|
-
|
1379
|
-
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1420
|
+
if @encoder == 'copy'
|
1421
|
+
filter = ''
|
1422
|
+
else
|
1423
|
+
filter = overlay_filter.nil? ? '' : overlay_filter
|
1424
|
+
filter += frame_rate_filter.nil? ? '' : ",#{frame_rate_filter}"
|
1425
|
+
filter += crop_filter.nil? ? '' : ",#{crop_filter}"
|
1426
|
+
filter += scale_filter.nil? ? '' : ",#{scale_filter}"
|
1427
|
+
filter += conversion_filter.nil? ? '' : ",#{conversion_filter}"
|
1428
|
+
filter.sub!(/^,/, '')
|
1429
|
+
end
|
1384
1430
|
|
1385
1431
|
if overlay_filter.nil?
|
1386
1432
|
encode_options = [
|
@@ -1463,8 +1509,12 @@ HERE
|
|
1463
1509
|
end
|
1464
1510
|
|
1465
1511
|
Kernel.warn 'Stream mapping:'
|
1466
|
-
text = "#{sprintf("%2d", video['index'])} = #{@encoder}
|
1467
|
-
|
1512
|
+
text = "#{sprintf("%2d", video['index'])} = #{@encoder}"
|
1513
|
+
|
1514
|
+
unless @encoder == 'copy'
|
1515
|
+
text += " / #{bitrate} Kbps"
|
1516
|
+
text += " / #{preset}" unless preset.nil?
|
1517
|
+
end
|
1468
1518
|
|
1469
1519
|
unless burn_subtitle.nil?
|
1470
1520
|
text += " / #{sprintf("%d", burn_subtitle['index'])} = #{burn_subtitle['codec_name']} / burn"
|
@@ -1473,7 +1523,7 @@ HERE
|
|
1473
1523
|
Kernel.warn text
|
1474
1524
|
encode_options += ['-c:v', @encoder]
|
1475
1525
|
encode_options += ['-pix_fmt:v', (@encoder =~ /(nvenc|qsv)$/ ? 'p010le' : 'yuv420p10le')] if @ten_bit
|
1476
|
-
encode_options += ['-b:v', "#{bitrate}k"]
|
1526
|
+
encode_options += ['-b:v', "#{bitrate}k"] unless @encoder == 'copy'
|
1477
1527
|
encode_options += ['-maxrate:v', "#{maxrate}k"] if @encoder =~ /(nvenc|hevc_qsv|libx26[45])$/
|
1478
1528
|
encode_options += ['-bufsize:v', "#{maxrate}k"] if @encoder =~ /^libx26[45]$/
|
1479
1529
|
encode_options += ['-preset:v', preset] unless preset.nil?
|
@@ -1544,10 +1594,15 @@ HERE
|
|
1544
1594
|
encode_options += ['-profile:v', 'high'] if @encoder =~ /^(h264_nvenc|h264_amf|libx264)$/
|
1545
1595
|
end
|
1546
1596
|
|
1597
|
+
unless @encoder == 'copy'
|
1598
|
+
encode_options += [
|
1599
|
+
'-color_primaries:v', color_primaries,
|
1600
|
+
'-color_trc:v', color_trc,
|
1601
|
+
'-colorspace:v', colorspace
|
1602
|
+
]
|
1603
|
+
end
|
1604
|
+
|
1547
1605
|
encode_options += [
|
1548
|
-
'-color_primaries:v', color_primaries,
|
1549
|
-
'-color_trc:v', color_trc,
|
1550
|
-
'-colorspace:v', colorspace,
|
1551
1606
|
'-metadata:s:v', 'title=',
|
1552
1607
|
'-disposition:v', 'default'
|
1553
1608
|
]
|
@@ -1577,7 +1632,14 @@ HERE
|
|
1577
1632
|
audio_tracks = [{
|
1578
1633
|
:stream => main_audio,
|
1579
1634
|
:width => width,
|
1580
|
-
:bitrate => width
|
1635
|
+
:bitrate => case width
|
1636
|
+
when :stereo
|
1637
|
+
@stereo_bitrate
|
1638
|
+
when :surround
|
1639
|
+
@surround_bitrate
|
1640
|
+
when :original
|
1641
|
+
nil
|
1642
|
+
end
|
1581
1643
|
}]
|
1582
1644
|
|
1583
1645
|
titles = {}
|
@@ -1590,7 +1652,14 @@ HERE
|
|
1590
1652
|
end
|
1591
1653
|
|
1592
1654
|
width = selection[:width]
|
1593
|
-
bitrate = width
|
1655
|
+
bitrate = case width
|
1656
|
+
when :stereo
|
1657
|
+
@stereo_bitrate
|
1658
|
+
when :surround
|
1659
|
+
@surround_bitrate
|
1660
|
+
when :original
|
1661
|
+
nil
|
1662
|
+
end
|
1594
1663
|
|
1595
1664
|
unless selection[:track].nil?
|
1596
1665
|
audio_track = 0
|
@@ -1616,7 +1685,8 @@ HERE
|
|
1616
1685
|
media_info['streams'].each do |stream|
|
1617
1686
|
next if stream['codec_type'] != 'audio'
|
1618
1687
|
|
1619
|
-
if
|
1688
|
+
if (selection[:language] == 'all' or
|
1689
|
+
stream.fetch('tags', {}).fetch('language', '') == selection[:language]) and
|
1620
1690
|
stream['index'] != main_audio['index']
|
1621
1691
|
audio_tracks += [{
|
1622
1692
|
:stream => stream,
|
@@ -1660,28 +1730,32 @@ HERE
|
|
1660
1730
|
bitrate = nil
|
1661
1731
|
channels = nil
|
1662
1732
|
|
1663
|
-
if track[:width] == :
|
1664
|
-
if codec_name == @surround_encoder or codec_name == 'ac3'
|
1733
|
+
if track[:width] == :original
|
1665
1734
|
encoder = 'copy'
|
1666
|
-
|
1667
|
-
|
1668
|
-
|
1735
|
+
else
|
1736
|
+
if track[:width] == :surround
|
1737
|
+
if codec_name == @surround_encoder or codec_name == 'ac3'
|
1738
|
+
encoder = 'copy'
|
1739
|
+
elsif input_channels > 2
|
1740
|
+
encoder = @surround_encoder
|
1741
|
+
bitrate = @surround_bitrate
|
1742
|
+
end
|
1669
1743
|
end
|
1670
|
-
end
|
1671
1744
|
|
1672
|
-
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1745
|
+
if encoder.nil?
|
1746
|
+
if input_channels <= 2 and (codec_name == 'aac' or
|
1747
|
+
((codec_name == @surround_encoder or codec_name == 'ac3') and
|
1748
|
+
(track[:stream]['bit_rate'].to_i / 1000) <= @stereo_bitrate))
|
1749
|
+
encoder = 'copy'
|
1750
|
+
else
|
1751
|
+
encoder = @stereo_encoder
|
1752
|
+
bitrate = @stereo_bitrate
|
1680
1753
|
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1754
|
+
if input_channels > 2
|
1755
|
+
channels = 2
|
1756
|
+
elsif input_channels == 1
|
1757
|
+
bitrate = @stereo_bitrate / 2
|
1758
|
+
end
|
1685
1759
|
end
|
1686
1760
|
end
|
1687
1761
|
end
|
@@ -1764,7 +1838,8 @@ HERE
|
|
1764
1838
|
media_info['streams'].each do |stream|
|
1765
1839
|
next if stream['codec_type'] != 'subtitle'
|
1766
1840
|
|
1767
|
-
if
|
1841
|
+
if (selection[:language] == 'all' or
|
1842
|
+
stream.fetch('tags', {}).fetch('language', '') == selection[:language])
|
1768
1843
|
subtitles += [stream]
|
1769
1844
|
end
|
1770
1845
|
end
|
@@ -1792,9 +1867,6 @@ HERE
|
|
1792
1867
|
subtitles.each do |subtitle|
|
1793
1868
|
next if (not burn_subtitle.nil?) and burn_subtitle['index'] == subtitle['index']
|
1794
1869
|
|
1795
|
-
next if @format == :mp4 and
|
1796
|
-
(subtitle['codec_name'] == 'hdmv_pgs_subtitle' or subtitle['codec_name'] == 'dvd_subtitle')
|
1797
|
-
|
1798
1870
|
force = (index == 0 and not force_subtitle.nil?)
|
1799
1871
|
text = "#{sprintf("%2d", subtitle['index'])} = #{subtitle['codec_name']}"
|
1800
1872
|
text += ' / force' if force
|
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.
|
4
|
+
version: 0.2.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: 2020-01-
|
11
|
+
date: 2020-01-13 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
|