web-dev-qa-db-ja.com

ビデオ、オーディオ、添付ファイルのストリームを保持しながら、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
_

しかし、どういうわけか、これらのプロセスに沿って、オーディオはaacからvorbisに変わり、ビデオはh264 (native)からh264 (libx264)に変わります。字幕に簡単なエラー変更を加えながらストリームを保持するにはどうすればよいですか?

3
Flair

#1字幕を抽出する

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

#2 Mux編集済み潜水艦

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
3
Gyan