ffmpeg

视频转为图片

ffmpeg -i input.mp4 ./image%d.png
*ffmpeg -i input.mp4 -ss 00:00:7.435 -vframes 1 out.png //获取视频定时截图
在这里插入图片描述

图片合成视频

ffmpeg -f image2 -i image%d.png video.avi
在这里插入图片描述

切割视频

ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
表示开始切割的时间,-t表示要切多少。上面就是从开始,切5秒钟出来
在这里插入图片描述

从视频中提取音频

ffmpeg -i test.mp4 -vn music.mp3

视频与音频合成

现在有个视频video.avi,有个音频 audio.mp3,将其合并成output.avi
两个命令
ffmpeg -i video.avi -vcodec copy -an video2.avi
ffmpeg -i video2.avi -i audio.mp3 -vcodec copy -acodec copy output.avi

添加视频Logo

  1. ffmpeg -i input.mp4 -i dd.png -filter_complex “[1:v]scale=176:144[logo];[0:v][logo]overlay=x=0:y=0” output.mp4
  2. ffmpeg -i input.mp4 -vf “movie=log.png[wn]; [in][wn]overlay=30:10[out]” output.mp4
  3. 右上角: ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4
    左下角: ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4
    右下角: ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4

去除视频Logo

ffmpeg -i input.mp4 -vf delogo=0:0:220:90?1 output.mp4

语法:-vf delogo=x:y:w:h[:t[:show]] x:y 离左上角的坐标 w:h logo的宽和高 t: 矩形边缘的厚度默认值4 show:若设置为1有一个绿色的矩形,默认值0。

视频添加水印

  1. 文字水印 利用drawtext filter (如果显示汉字,需要用的字体库支持汉字,本机支持的字库可以使用fc-list命令来查看)
    ffmpeg -i input.mp4 -vf “drawtext=fontsize=100:fontfile=FreeSerif.ttf:text=‘hello world’:fontcolor=green:x=20:y=20” output.mp4
  2. 时间水印:enable的作用是每3秒显示一次,如果要一直显示,去掉enable选项。
    ffmpeg -i input.mp4 -vf “drawtext=fontsize=100:fontfile=FreeSerif.ttf:text=’%{localtime:%Y-%m-%d %H-%M-%S}’:fontcolor=green:box=1:boxcolor=yellow:enable=lt(mod(t,3),1)” output.mp4 (这里注意转义字符,:和,都需要转义,因为ffmpeg中,和:都是分隔符,是有特殊意义的,所以某些命令中需要的这些符号,都需要转义,告诉ffmpeg这不是ffmpeg的分隔符。比如这里的:就是localtime命令里面的,所以就需要转移,后面的逗号也是一样)
  3. 图片水印:movie 滤镜
    ffmpeg -i input.mp4 -vf “movie=logo.png[wm];[in][wm]overlay=30:10[out]” output.mp4
    半透明水印:
    有些水印图片是有背景色的,比如很多logo图片是白底的,这时overlay到视频上会非常突兀,可以利用colorkey来做成半透明效果,colorkey有三个参数(ffmpeg -h filter=colorkey) :color,similarity, blend. color是指定要透明的颜色,similarity指定相似度,blend指定叠加的参数。下面的例子logo图片是白色底的,我们这里color就设置为white(也可以设置颜色色值,比如黑色就是全0x0000,也可以写black),similarity设置相似度,因为我们要把白色去掉,可以设置的小一些0.2,blend设置为0.5
    ffmpeg -i input.mp4 -vf “movie=logo.png, colorkey=white:0.2:0.5 [wm]; [in][wm] overlay=30:10 [out]” output.mp4
  4. 画中画:
    ffmpeg -re -i input.mp4 -vf “movie=sub.mp4,scale=480x320[test]; [in][test] overlay=x=main_w-480:y=main_h-320 [out]” -vcodec libx264 output.flv
  5. 跑马灯,就是子视频从左向右游动
    ffmpeg -re -i input.mp4 -vf “movie=sub.mp4,scale=480x320[test]; [in][test] overlay=x=‘if(gte(t,2), -w+(t-2)*20,NAN)’:y=0 [out]” -vcodec libx264 output.mp4
  6. 九宫格 shortest参数是overlay的参数,表明终止最短的视频时全部终止
    ffmpeg -re -i input1.mp4 -re -i input2.mp4 -re -i input3.mp4 -re -i input4.mp4 -filter_complex “nullsrc=size=640x480 [base]; [0:v] setpts=PTS-STARTPTS, scale=320x240 [upperleft];[1:v] setpts=PTS-STARTPTS, scale=320x240 [upperright];[2:v] setpts=PTS-STARTPTS, scale=320x240 [lowerleft];[3:v] setpts=PTS-STARTPTS, scale=320x240 [lowerright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=320 [tmp2]; [tmp2][lowerleft] overlay=shortest=1:y=240 [tmp3];[tmp3][lowerright] overlay=shortest=1:x=320:y=240” -c:v libx264 output.mp4
  7. 将字幕写入视频流 ass滤镜,这个滤镜是将字幕overlay到视频流上。
    ffmpeg -i input.mp4 -vf ass=t1.ass -f mp4 output.mp4
  8. 将字幕流封装到文件中
    ffmpeg -i input.mp4 -i t1.ass -acodec copy -vcodec copy -scodec copy output.mkv
    如果input.mp4中已经有了字幕,想用t1.ass来替换原有的字幕,需要用map来指定(map n:m n指第几个输入,m指该输入的第几个流,从0开始计数。如-map 0:1 就是第0个输入的第1个流。)
    ffmpeg -i input.mp4 -i t1.ass -map 0:0 -map 0:1 -map 1:0 -acodec copy -vcodec copy -scodec copy output.mkv
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值