ffmpeg 视频合成,字幕合成等常规功能介绍

󰃭 2022-09-12

视频增加多个字幕

ffmpeg -i "input.mp4" -i zhcn.srt -i eng.srt -map 0:v -map 0:a -map 0:s -map 1:s  -c:v copy -c:a copy -c:s copy -metadata:s:s:0 language=chn -metadata:s:s:1 language=eng "output.mp4"

其中,input.mp4是输入视频,zhcn.srt是中文字幕srt文件,eng.srt是英文字幕srt文件,output.mp4是输出视频。

解释: -i 是输入文件。三个文件都是用-i 输入的。

-map是轨道参数,如果只有一个字幕,就不需要这个参数

-map 0:v 表示第一个文件输入视频轨道 -map 0:a 表示第二个轨道是第一个文件输入的音频轨道 -map 0:s 建立第三个轨道 -map 1:s 建立第四个轨道 -c:v copy 表示复制视频流,不需要重新编码,速度更快。 -c:a copy 复制音频流,不需要重新编码,速度更快 -c:s copy 复制字幕

-c:s mov_text 字幕轨道采用mov_text的格式。这种格式是直接将srt或者vtt文件添加到视频文件中,但是不是直接渲染到视频中。这样的好处是添加速度快,缺点是如果播放器不支持就不会显示字幕(手机上qq自带的和windows player之类的都不能正确显示),但是一般的PC播放器、手机上的mplayer、vlc、potplayer之类的主流播放器都可以显示。如果要做到视频里面去就要用其他参数,还要设置好字体、字号、颜色等等。

metadata:s:s:0 language=chn 这是设置第一条字幕的参数,如设置语言为中文。请注意,这个语言不能写错或自定义,只能设置成固定的缩写。如将这个写成zh-CN显示成 数字1之类的。 -metadata:s:s:1 language=eng 第二条字幕的语言设置为英文