闲来无事聊一聊FFmpeg(二)

继上一遍博客,我们对FFmpeg有一个初步的认识之后,这篇博客依然是初步认识FFmpeg好了大家也不要抱怨,只能怪本人知识太过于平庸,不过我也在不停的学习中。在开始正文前先说一下本博客参考的一些资料

  • 雷霄骅博客雷神你在天国安好
  • 官方文档当然少不了
  • 可能还有一些遗漏,如果涉及到侵权请联系小弟

制作GIF图

在一些视屏制作软件甚至播放器上经常会看到把视一段视频制作成gif图,当然我们使用FFmepg也只需要一行命令就能完成。当然把gif转换成视频也只需要一行命令就能完成。

ffmpeg -ss startSecond -t duration -i movieFile -f formate gif.gif
ffmpeg -i gif.gif movieFile

参数说明

参数 说明
ss position (input/output) 开始位置单位秒
t duration (input/output) 转化时长
f fmt (input/output) 输入/出格式

为视频添加静态水印

做过视频推广的朋友应该都知道在,视屏的某一个角落总是能看到一个log用于推广自己的产品等等。一个静态的水印在FFmpeg中也变得如此简单。

ffmpeg -y -i movieFile -vf "movie=watermark.png [watermark]; [in][watermark] overlay=x:y:opaque [out]" movieWatermark.mp4

参数说明

参数 说明
-y Overwrite output files without asking
overlay x/y:图片距离视频左/上边的距离 opaque:支持透明,为1时表示支持透明水印。使用透明的png图片进行视频编码后,获得带透明水印的视频
-vf video filter
-af audio filter
movieWatermark

为视频添加动态水印

在添加为视频添加水印方面,FFmpeg不仅仅只支持png格式的水印图片还支持gif格式的图片。但是和上面命令相比,并不是简单的watermark.png换成watermark.gif

ffmpeg -y -i movieFile -ignore_loop 0 -i gif.gif -ss start -t duration  -filter_complex overlay=0:0:1 movieGifFile

当然首时候我们的gif图片过大,这个时候我们可以设置scale来调整添加到视频上面的动态水印大小。

ffmpeg -y -i movie.mkv -ignore_loop 0 -i movieGif.gif -ss 0 -t 100 -filter_complex '[0:0]scale=iw:ih[firstInput]; [1:0]scale=iw/4:ih/4[secondInput]; [firstInput][secondInput]overlay=0:0:1' movieScaleGif.mp4

当然水印的位置大小等也能修改,就不在这里一一列举了。

参数说明

参数 说明
ignore_loop ignore loop setting (default true) 是否循环添加
[x:y] x:第x个输入 y:第y个输出
动态水印

修改水印大小

视频合成

曾经流传的一种6分钟诅咒视频不知道有没有听过。在上一篇博客闲来无事聊一聊FFmpeg(一)中我们提到如何将一个视频截取成多个视频,那我们在这里就来谈一谈如何将多个视频合并成一个视频。

对于MPEG格式的视频,可以直接连接

ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy outputMovie.mpg

对于非MPEG格式容器,但是是MPEG编码器H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3,可以包装进TS格式的容器再合并

ffmpeg -i input1 -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2 -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i input3 -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output

参数说明

参数 说明
bsf Set bitstream filters for matching streams 设置比特流
-movflags +faststart 将视频分享给别人的时候,可以边下边看

你可能感兴趣的:(闲来无事聊一聊FFmpeg(二))