天天看点

使用ffmpeg进行视频格式和大小的处理;字幕,水印的添加以及相关位置、大小的设定

常用的ffmpeg指令(字幕、水印)

    • 常用指令
    • 添加水印
      • 在固定的位置添加水印
      • 自适应添加水印
      • 添加两个水印,10秒交替出现
    • 添加字幕
      • 给视频添加一个字幕
    • 修改视频的分辨率和长宽比
    • 同时为视频添加水印和字幕

常用指令

使用指令可以让我们快速上手使用ffmpeg这个软件,经过前面的安装,已经能够正常使用ffmpeg了,通过命令行或java中的Process相关类,我们就可以实现自动的ffmpeg处理视频或者图片.

添加水印

在固定的位置添加水印

ffmpeg -i test.mp4 -i test.png -filter_complex “overlay=10:10” watermark.mp4

在test.mp4左上角10,10的位置添加水印图片test.png,同时在根目录产出一个watermark.mp4的视频

自适应添加水印

ffmpeg -i test.mp4 -i test.png -filter_complex “overlay=x=main_h-10:main_w-10” watermark.mp4

在test.mp4距离右下角10,10的位置添加水印,main_h代表视频的高度,main_w代表视频的宽度

添加两个水印,10秒交替出现

ffmpeg -i /root/test.mp4 -i /root/videoProcessing/youtube/test.png -i /root/test.png -filter_complex “overlay=x=if(lt(mod(t,20),10),10,NAN ):y=10,overlay=x=if(gt(mod(t,20),10),main_w-273,NAN ) :y=main_h-113,subtitles=/root/test.srt :force_style=‘Fontsize=14’” /root/test3.mp4

添加两个水印,overlay=x=if(lt(mod(t,20),10),10,NAN ):y=10,overlay=x=if(gt(mod(t,20),10),main_w-273,NAN ) 这两个使用了函数,代表是交替出现水印。

mod(t,20)代表当前时间对20进行取模;

lt(a,b)表示的是a<b,则为true

if(true,a,b)表示的是如果为true,则返回a,否则返回b

ps:如果需要在程序中进行命令行的拼接,一定要记得转义,否则会报错。

添加字幕

给视频添加一个字幕

ffmpeg -i test.mp4 -vf subtitles=test.srt output.mp4

给test.mp4添加字幕并产出成output.mp4

修改视频的分辨率和长宽比

ffmpeg -i test.mp4 -aspect 16:9 -vf scale=1280:720 output.mp4

将视频格式化成长宽比为16:9的1280*720的格式化视频

同时为视频添加水印和字幕

ffmpeg -i test.mp4 -i test.png -filter_complex “overlay=x=main_w-273:y=main_h-113,subtitles=test.srt:force_style=‘Fontsize=11’” output.mp4

给test.mp4添加字幕和水印,同时字幕字体的大小为11px,如果还需要设置字幕的位置,字体,阴影等可以直接在Fontsize=11后面直接拼接即可。Shadow=0,MarginV=20代表阴影为1,距离下边距为20px