ffmpeg添加双字幕

ffmpeg作为处理视频的利器,在使用的时候不熟悉也会遇到很多坑。这次在添加双字幕的时候由于在网上找不到好用的例子,只能自己研究了一下这个命令的参数特点。现给大家一起分享一下。

首先直接给出添加双字幕的代码参数吧。

ffmpeg -i "input.mp4" -i zhcn.srt -i eng.srt -map 0:v -map 0:a -map 1 -map 2  -c:v copy -c:a copy -c:s mov_text -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 1建立第三个轨道,-map 2建立第四个轨道。如果添加map参数,默认就只有一个字幕轨道,第二个英文字幕会覆盖第一个中文字幕轨道。

-c:v copy 表示复制视频流,不需要重新生成。(有些转码的时候视频流不能复制会报错,复制视频流可以节省很多时间)。帮助文档里是这么解释-c:参数的
-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
Select an encoder (when used before an output file) or a decoder
(when used before an input file) for one or more streams. codec is
the name of a decoder/encoder or a special value “copy” (output
only) to indicate that the stream is not to be re-encoded.
-c:a 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 第二条字幕的语言设置为英文。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值