ffmpeg:向 MKV 添加字幕(.srt)只会添加第一个字幕帧

ffmpeg:向 MKV 添加字幕(.srt)只会添加第一个字幕帧

我正在尝试添加单独的 .srt 文件使用 ffmpeg 到现有的 MKV 容器:

> ffmpeg -i 'input.mkv' -fix_sub_duration -i 'subtitles.srt' -map 0 -c copy -map 1 -c:s:1 srt 'output.mkv'

我使用是-c:s:1因为原始 MKV 已经有 PSG 字幕流。

但生成的 MKV 容器仅包含第一个字幕条目:

> ffmpeg -i output.mkv -c:s:1 copy output.srt; cat output.txt

1
00:00:06,080 --> 00:00:12,154
Advertise your product or brand here
contact www.OpenSubtitles.org today

> ffprobe output.mkv
[...]
    Stream #0:5(eng): Subtitle: subrip
    Metadata:
      ENCODER         : Lavc58.54.100 srt
      DURATION        : 00:00:12.154000000

注意字幕流时长只有12秒。

但当我专门选择仅第一个视频流(-map 0:v:0)时,它可以工作:

ffmpeg -i 'input.mkv' -i 'subtitles.srt' -map 0:v:0 -map 0:a -map 0:s -c copy -map 1 -c:s:1 srt  'output.mkv'

今天我注意到原始文件包含2个视频流:电影(#0:0)和海报图片(#0:4):

> ffprobe input.mkv
    Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv), 1920x800, SAR 1:1 DAR 12:5, 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
    Stream #0:1(eng): Audio: aac (LC), 48000 Hz, 7.1, fltp (default)
    Stream #0:2(eng): Audio: aac (HE-AAC), 48000 Hz, stereo, fltp
    Stream #0:3(eng): Subtitle: hdmv_pgs_subtitle (default)
    Stream #0:4: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 640x360 [SAR 96:96 DAR 16:9], 90k tbr, 90k tbn, 90k tbc (attached pic)

我怀疑使用-map 0会导致额外的字幕流附加到图片视频流(而不是主视频流),导致它只有 1 帧(第一个字幕条目)。

我怎样才能避免这种情况,并将额外的字幕附加到主视频流,而不必删除海报图片?

相关内容