闲来无事聊一聊FFmpeg(二)
2017-02-19 本文已影响942人
小黑_Coder
继上一遍博客,我们对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 | 将视频分享给别人的时候,可以边下边看 |