带你走近FFmpeg

第一部分,简单介绍ffmpeg

ffmpeg,最为强大的视频处理之一,几乎所有功能,比如视频格式转换、压缩、拼接、添加水印、以及声音的处理、录屏、gif动图都可以用它来转换

他本身是一个命令行工具很轻量,完全免费所有平台通用。

第二部分ffmpeg基本用法

一、下载和安装(百度安装即可)

二、基本用法

通过-i 来指定输入文件的名字,然后在最后一个参数指定要输出的文件名,ffmpeg会自动根据扩展名帮我们转换视频文件的格式

ffmpeg -i test.avi test.mp4

什么是视频文件的格式

mp4准确的来说是视频文件的一种封装格式也叫容器格式,包含了视频流,音频流,字幕和一些其他元素。而其中的音频、视频又可以采用不同的编码格式

什么是编码呢

编码解决的是如何将每一帧的画面存储成二进制的数据在硬盘或者通网络传输,不同的编码对视频的质量和压缩率有很大的影响,对mp4文件,使用最广泛的是编码是h264

ffmpeg对于mp4默认使用的是h264编码,当然可以通过 -c:v (video encoder) 去手动制定一个视频编码器,这里的libx264是ffmpeg默认提供的用纯软件实现的h264编码器,如果使用的是Nvidia显卡的话,使用h264_nevnc进行硬件加速

ffmpeg -i test.avi -c:v libx264/(h264_nevnc) test.mp4

也可以用它转换音频

ffmpeg -i test.wav test.mp3

在转换视频的时候,可以设置一些其他参数来压缩视频文件大小,如h264编码器可以用一个预设 preset

ffmpeg -i test.avi -c:v libx264 -preset xxx test.mp4

可以是下面的取值,最上面的拥有最快的速度,但同时产生一个较大的文件,下面反之,可以在文件大小和速度之间取舍

  • ultrafast

  • superfast

  • veryfast

  • faster

  • fast

  • medium(默认)

  • slow

  • slower

  • veryslow

crf 用来控制图像的质量,取值范围0-51,值越大代表图像质量越差,0代表无损压缩,实际常用的是19-28,可以在视频文件和图像质量之间做一些取舍

ffmpeg -i test.avi -c:v libx264 -crf 22 test.mp4

过滤器(filter)

过滤器可以对视频图像进行变化,比如修改它的尺寸,裁剪,旋转,添加滤镜等等,并且可以指定一系列过滤器,前一个过滤器输出的值会作为下一个过滤器的输入,比如可以先缩放0.5倍,再旋转90度

我们使用参数 -vf(video filter)来指定一个过滤器,如果要修改视频的尺寸,可以用scale,后面输入缩放之后的长度和宽度,中间冒号分割,可以将其中任一一个参数设置成-1,让ffmpeg根据另外一个参数自动推算。b不同过滤器可以相互组合,用逗号分隔。ffmpeg有上百种过滤器,用法都一致

ffmpeg 过滤器

ffmpeg -i test.avi -c:v libx264 -vf “scale=1024:576,transpose=1” test.mp4

ffmpeg对视频的剪切与合并

剪裁需要用俩个参数 -ss 表示起始的位置,-t表示片段的时长,可以用时:分:秒(hh:mm:ss)的格式,也可以直接填写秒数(00:00:05 / 5),-ss需要放在-i参数后面,才可以准确切割,否则可能造成偏差,如果是定位较长的视频可以放在前面,这样定位的速度很快。

ffmpeg -i test.avi -c:v libx264 -ss 00:00:03 -t 00:00:05 test.mp4

也可以用-to指定片段的结束范围

ffmpeg -i test.avi -c:v libx264 -ss 00:00:03 -to 00:00:08 test.mp4

合并文件:

首先将所有的文件列举在一个文本中,然后通过-f concat 制定接下来输入的文件是一个视频列表,后面-i传入列表文件,-c copy 代表我们不希望重新编码而是直接拷贝原始视频的数据,因为我们输入的视频格式都是一样的,重新编译会浪费很多时间。

ffmpeg -f concat -i mylist.txt -c copy output.mp4

和视频过滤器一样,可以用过滤器对音频处理,用的是-af(audio filter)参数,ffmpeg对音频的支持同样相当齐全,比如可以用volume调节音量大小,添加高通、低通滤波器、甚至均衡器等等

ffmpeg -i test.mp4 -af "volume=1.5" output.mp4

有时候希望删除视频中的音频轨,创建一个无声的视频,用-an参数,类似还有-vn删除视频轨、-sn删除字幕、-dn删除数据流

ffmpeg -i test.mp4 -an output.mp4

参考:https://www.bilibili.com/video/BV1AT411J7cH/?spm_id_from=333.999.0.0&vd_source=f0d3d5b65674d14b260b5f71fd040c54

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值