美文网首页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 将视频分享给别人的时候,可以边下边看

    相关文章

      网友评论

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

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

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