Как заменить интегрированный субтитр внешним субтитром с помощью ffmpeg?

Я хочу заменить субтитры, присутствующие в Stream # 0: 6 (eng) , на внешнюю видеоинформацию subtitle.ass

Input #0, matroska,webm, from 'input.mkv':
  Metadata:
    creation_time   : 2021-03-06T17:59:28.000000Z
    ENCODER         : Lavf58.29.100
Stream #0:0: Video: hevc (Main), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 23.98 fps, 23.98 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      BPS-eng         : 2464510
      DURATION-eng    : 00:22:57.001000000
      NUMBER_OF_FRAMES-eng: 33015
      NUMBER_OF_BYTES-eng: 424204175
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:1(jpn): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 224 kb/s
    Metadata:
      BPS-eng         : 224000
      DURATION-eng    : 00:22:57.408000000
      NUMBER_OF_FRAMES-eng: 43044
      NUMBER_OF_BYTES-eng: 38567424
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:2(eng): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 224 kb/s (default)
    Metadata:
      BPS-eng         : 224000
      DURATION-eng    : 00:22:57.408000000
      NUMBER_OF_FRAMES-eng: 43044
      NUMBER_OF_BYTES-eng: 38567424
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:3(spa): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 224 kb/s
    Metadata:
      BPS-eng         : 224000
      DURATION-eng    : 00:22:57.408000000
      NUMBER_OF_FRAMES-eng: 43044
      NUMBER_OF_BYTES-eng: 38567424
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:4(fre): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 224 kb/s
    Metadata:
      BPS-eng         : 224000
      DURATION-eng    : 00:22:57.408000000
      NUMBER_OF_FRAMES-eng: 43044
      NUMBER_OF_BYTES-eng: 38567424
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:5(por): Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 224 kb/s
    Metadata:
      BPS-eng         : 224000
      DURATION-eng    : 00:22:57.408000000
      NUMBER_OF_FRAMES-eng: 43044
      NUMBER_OF_BYTES-eng: 38567424
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:6(eng): Subtitle: hdmv_pgs_subtitle ([255][255][255][255] / 0xFFFFFFFF), 1920x1080 (default)
    Metadata:
      title           : English BD PGS Sub
      BPS-eng         : 35741
      DURATION-eng    : 00:22:47.742000000
      NUMBER_OF_FRAMES-eng: 692
      NUMBER_OF_BYTES-eng: 6110646
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:7(spa): Subtitle: hdmv_pgs_subtitle ([255][255][255][255] / 0xFFFFFFFF), 1920x1080
    Metadata:
      title           : Spanish BD PGS Sub
      BPS-eng         : 41766
      DURATION-eng    : 00:22:47.742000000
      NUMBER_OF_FRAMES-eng: 764
      NUMBER_OF_BYTES-eng: 7140737
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:8(fre): Subtitle: hdmv_pgs_subtitle ([255][255][255][255] / 0xFFFFFFFF)
    Metadata:
      title           : French BD PGS Sub
      BPS-eng         : 36969
      DURATION-eng    : 00:20:43.492000000
      NUMBER_OF_FRAMES-eng: 586
      NUMBER_OF_BYTES-eng: 5746361
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
    Stream #0:9(por): Subtitle: hdmv_pgs_subtitle ([255][255][255][255] / 0xFFFFFFFF), 1920x1080
    Metadata:
      title           : Portuguese BD PGS Sub
      BPS-eng         : 40091
      DURATION-eng    : 00:22:47.909000000
      NUMBER_OF_FRAMES-eng: 590
      NUMBER_OF_BYTES-eng: 6855165
      _STATISTICS_WRITING_APP-eng: mkvmerge v53.0.0 ('Fool's Gold') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-06 17:59:28
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
1
задан 6 April 2021 в 09:07

1 ответ

ffmpeg -i input.mkv -i subtitle.ass -map 0 -map -0:6 -map 1 -c copy -metadata:s:s:4 language=eng output.mkv
  • -map 0 включает все потоки из input.mkv .
  • -map -0: 6 является отрицательным отображением и исключает поток № 0: 6 .
  • -map 1 включает все потоки из subtitle.ass .
  • -c copy включает режим копирования потока , поэтому все просто мультиплексируется, и перекодирование избегается. Как копия и вставка.
  • -metadata: s: s: 3 language = eng устанавливает английский язык для новых добавленных субтитров.
    • Новые субтитры будут добавлены после всех остальных из-за порядок параметров -map .
    • Из input.mkv включены 3 субтитра, поэтому субтитры из subtitle.ass будут четвертыми субтитрами.
    • s: s: 34 относится к stream: subtitles: index # 3 , или «четвертому потоку субтитров на выходе» (он начинает отсчет с 0).

Или более гибкий, но более сложный метод с использованием метаданных языка субтитров:

ffmpeg -i input.mkv -i subtitle.ass -map 0 -map -0:s:m:language:eng -map 1 -c copy output.mkv
  • -map -0: s: m: language: eng - это отрицательная карта, исключающая любой поток субтитров из input.mkv с метаданными на английском языке.

См. FFmpeg Wiki: Карта .

2
ответ дан 23 April 2021 в 23:25

Другие вопросы по тегам:

Похожие вопросы: