我正在尝试添加单独的 .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 帧(第一个字幕条目)。
我怎样才能避免这种情况,并将额外的字幕附加到主视频流,而不必删除海报图片?