继上一遍博客,我们对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 |
![](https://img.haomeiwen.com/i1898419/0a9ef6fcf5d9fb96.png)
为视频添加动态水印
在添加为视频添加水印方面,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个输出 |
![](https://img.haomeiwen.com/i1898419/3773b10df92dacd4.gif)
![](https://img.haomeiwen.com/i1898419/1181cb4845ece105.png)
视频合成
曾经流传的一种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 | 将视频分享给别人的时候,可以边下边看 |
网友评论