如何简单地编辑 MKV 文件的字幕同时保留视频、音频和附件流?

如何简单地编辑 MKV 文件的字幕同时保留视频、音频和附件流?

所以当我看原始视频时:

ffprobe -v error -show_entries stream=index,codec_name,codec_type example.mkv

我看到的是这样的:

[STREAM]
index=0
codec_name=h264
codec_type=video
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_type=audio
[/STREAM]
[STREAM]
index=2
codec_name=ass
codec_type=subtitle
[/STREAM]
[STREAM]
index=3
codec_name=ttf
codec_type=attachment
[/STREAM]

我的过程包括通过以下方式提取 ass 文件:

ffmpeg -i input.mkv -map 0:s:0 subs.ass

我在 中编辑字幕文件vim。然后我尝试使用以下命令将字幕文件添加回 mkv 文件中:

ffmpeg -i input.mkv -f ass -i subs.ass  \
-map 0:0 -map 0:1 -map 1:0 -c:v copy -c:a copy \
-c:s copy output.mkv

但是当我探测 output.mkv 时,我只看到

[STREAM]
index=0
codec_name=h264
codec_type=video
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_type=audio
[/STREAM]
[STREAM]
index=2
codec_name=ass
codec_type=subtitle
[/STREAM]

如您所见,我丢失了附件流,并且字幕不再默认播放。所以我遇到了其他命令:

将字幕设为默认字幕:

ffmpeg -i output.mkv -f ass -i subs.ass -c copy -disposition:s:0 default out.mkv

从原始字体中转储字体:

ffmpeg -dump_attachment:t "" -i original.mkv

将字体附加到编辑后的视频:

ffmpeg -i out.mkv -attach OpenSans-Semibold.ttf -metadata:s:3 mimetype=application/x-truetype-font final.mkv

但不知何故,在这些过程中,音频从 变为aacvorbis视频从 变为h264 (native)h264 (libx264)如何在对字幕进行简单的错误更改的同时保留流?

答案1

#1提取字幕

ffmpeg -i input.mkv -c copy -map 0:s:0 subs.ass

#2多路复用编辑订阅

ffmpeg -i input.mkv -i subs.ass  \
       -map 0:v -map 0:a -map 1 -map 0:t -c copy -disposition:s:0 default output.mkv

相关内容