美文网首页FFmpeg实用轮子程序员
闲来无事聊一聊FFmpeg(二)

闲来无事聊一聊FFmpeg(二)

作者: 小黑_Coder | 来源:发表于2017-02-19 17:03 被阅读942次

继上一遍博客,我们对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(二)

    继上一遍博客,我们对FFmpeg有一个初步的认识之后,这篇博客依然是初步认识FFmpeg好了大家也不要抱怨,只能怪...

  • 闲来无事聊一聊FFmpeg(一)

    本人学识肤浅,FFmpeg这么高深的东西,不是我一两篇博客就能说清楚的。那我为什么还是要写这篇博客呢?因为我想为那...

  • 聊一聊对象(二)

    sizeof() // 传的类型.是个运算符并不是函数即便是我传了一个对象,也是对类型进行计算。因为编译器编译期间...

  • 聊一聊Block(二)

    函数内定义的变量叫做局部变量,函数外部定义的变量叫做全局变量。 block封装了函数调用,以及函数调用环境的oc对...

  • 起早闲来无事一聊

    在简村,看到“日更达人”这名字,我就由衷地敬佩。 日更,它让我想到了古代守更人打更,公鸡打鸣。请...

  • 摘自片刻,写于笔下

    那日闲来无事,写字聊暇。

  • 聊一聊如何“积累”(二)

    关于笔记,有如下五个主要应用场景: 速记式笔记 流程式笔记此时可以用如EXCEL表将复杂内容转为流程图或流程表 梳...

  • 聊一聊“减肥”(之二)

    呵呵,废话说了一堆,没有真的说到我要聊的与“减肥”相关的“七分吃”。 “吃”是件非常重要的事,生命的延续靠吃,生活...

  • 关于UIViewController的属性——hidesBott

    今天闲来无事来聊一聊这个反复刷新我开发观的属性——hidesBottomBarWhenPushed。 在开发的过程...

  • 聊一聊

    就是这样,喜欢自我欺骗,明知道,真心想你,或者有事的人,会打电话给你。却还是忍不住的用微信,看一个人的消息和动态,...

网友评论

  • 766a546ee35d:你好,请问下,添加水印的时候,视频分辨率不同,添加的水印大小就不同,怎么能设置水印大小一样呢?

本文标题:闲来无事聊一聊FFmpeg(二)

本文链接:https://www.haomeiwen.com/subject/txujwttx.html