Fla*_*air 3 video ffmpeg subtitles matroska truetype-fonts
所以当我看原视频时:
ffprobe -v error -show_entries stream=index,codec_name,codec_type example.mkv
Run Code Online (Sandbox Code Playgroud)
我看到这样的事情:
[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]
Run Code Online (Sandbox Code Playgroud)
我的过程涉及通过以下方式提取 ass 文件:
ffmpeg -i input.mkv -map 0:s:0 subs.ass
Run Code Online (Sandbox Code Playgroud)
我在 中编辑字幕文件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
Run Code Online (Sandbox Code Playgroud)
但是当我探测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]
Run Code Online (Sandbox Code Playgroud)
如您所见,我丢失了附件流,并且默认情况下不再播放字幕。所以我遇到了其他命令:
将字幕设置为默认:
ffmpeg -i output.mkv -f ass -i subs.ass -c copy -disposition:s:0 default out.mkv
Run Code Online (Sandbox Code Playgroud)
从原始转储字体:
ffmpeg -dump_attachment:t "" -i original.mkv
Run Code Online (Sandbox Code Playgroud)
将字体附加到编辑的视频:
ffmpeg -i out.mkv -attach OpenSans-Semibold.ttf -metadata:s:3 mimetype=application/x-truetype-font final.mkv
Run Code Online (Sandbox Code Playgroud)
但不知何故,沿着这些过程,音频从 变为aac
,vorbis
视频从h264 (native)
变为h264 (libx264)
。如何在对字幕进行简单错误更改的同时保留流?
#1提取字幕
ffmpeg -i input.mkv -c copy -map 0:s:0 subs.ass
Run Code Online (Sandbox Code Playgroud)
#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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7409 次 |
最近记录: |