首先得安装好ffmpeg程序(Linux下还得安装x264编码)。Mac下直接用brew安装:

brew install ffmpeg --with-faac --with-fdk-aac --with-ffplay --with-fontconfig --with-freetype --with-libass --with-libbluray --with-libcaca --with-libsoxr --with-libquvi --with-frei0r --with-libvidstab --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-openssl --with-opus --with-rtmpdump --with-schroedinger --with-speex --with-theroa --with-tools --with-x265

装好后就可以用ffmpeg这个命令压制MP4文件了:

ffmpeg -i MVI_7274.MOV -vcodec libx264 -preset fast -crf 20 -y -vf "scale=1920:-1" -acodec libmp3lame -ab 128k a.mp4

-preset:指定编码的配置。x264编码算法有很多可供配置的参数,不同的参数值会导致编码的速度大相径庭,甚至可能影响质量。为了免去用户了解算法,然后手工配置参数的麻烦。x264提供了一些预设值,而这些预设值可以通过preset指定。这些预设值有包括:ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow和placebo。ultrafast编码速度最快,但压缩率低,生成的文件更大,placebo则正好相反。x264所取的默认值为medium。需要说明的是,preset主要是影响编码的速度,并不会很大的影响编码出来的结果的质量。压缩高清电影时,我一般用slow或者slower,当你的机器性能很好时也可以使用veryslow,不过一般并不会带来很大的好处。

-crf:这是最重要的一个选项,用于指定输出视频的质量,取值范围是0-51,默认值为23,数字越小输出视频的质量越高。这个选项会直接影响到输出视频的码率。一般来说,压制480p我会用20左右,压制720p我会用16-18,1080p我没尝试过。个人觉得,一般情况下没有必要低于16。最好的办法是大家可以多尝试几个值,每个都压几分钟,看看最后的输出质量和文件大小,自己再按需选择。

其实还有-b 1024k这样的参数,但是我发现-crf设置上后-b就不管用了。根据我自己的简单尝试,压制5D2拍摄的一段18秒1920x1080的视频(下午自然光、图像简单、大面积白墙、只有一扇黑门)crf和压出来的文件大小关系如下:

crf

文件大小

16

54M

18

39M

20

25M

22

17M

24

11M

26

7.3M

28

5.0M

30

3.6M

32

2.7M

默认

14M(crf为23)

又比较了一下crf在20、28、32时的视频质量,发现32还是能看出质量下降的,20的确非常精细,但28跟20之间的差别并不是那么大,crf值设置在26-28之间比较好。如果对尺寸有要求,什么都不设,用默认的也行(可能是31)。

另外,关于preset,slow和fast只跟运行时间有关,slow跑的时间比fast长不少,slow出来的mp4文件会小一些(12M),fast出来的文件会大一些(14M),但视频质量的差距并不明显。

如果把原视频尺寸从1920x1080缩小到960x540,则视频尺寸变为了:

crf

文件大小

16

11M

18

6.7M

20

4.4M

22

3.0M

24

2.1M

26

1.6M

28

1.3M

30

1.1M

32

893K

默认

2.5M(crf为23)

综上,对质量要求较高时,选22以下;对尺寸要求非常高时,选26(但质量确实是会稍差一些),否则选24的性价比比较高(或者默认的23也行),如果对尺寸实在要求非常非常高,那就28以上吧。

后记补充(来自@gghyoo)

可以用-threads n 来实施多线程的运算,充分利用多核cpu

例子如下:

ffmpeg -threads 2 -crf 20 -y -i ML-02.avi -strict experimental ML-02.mp4

ffmpeg threads_用ffmpeg命令行转压视频相关推荐

  1. ffmpeg 命令行实现多路视频拼接播放

    FFmpeg命令行实现多路视频拼接 下面我将实现的是4个视频合为一个视频 注意:不是首位连接 是同时显示 效果如下: ffmpeg命令为: ffmpeg -i out1.mp4 -i out2.mp4 ...

  2. FFmpeg 快速上手:命令行详解、工具、教程、电子书

    FFmpeg 简介 FFmpeg 是一个开源的音视频处理工具,诞生已22年.它可以用来处理音视频的编解码.格式转换.剪辑.合并.抽取.压缩.解压缩.滤镜.字幕等等.它可以在 Windows.Linux ...

  3. ffmpeg mp4 提取h265命令行_安装FFmpeg多媒体库,以及命令行程序使用介绍

    FFmpeg是非常流行的多媒体框架,主要用于音视频的解码.编码.转码.混流.过滤.播放等操作. 2000年,法国著名的程序员Fabrice Bellard创建FFmpeg项目,前两个字母FF是Fast ...

  4. 视频处理小技巧|ffmpeg视频命令行快速旋转视频

    拍视频没注意,横屏内容拍成了竖屏,变成这样了: 直接用剪映呢,旋转后大小不对,虽然也有办法可以调整,但以后还会用这些视频,所以决定修正原始视频. 想起以前用过的强大视频转换命令行工具ffmpeg, 应 ...

  5. mac 命令行 解压7z文件_如何在Mac上快速压缩和解压文件?Mac上解压和压缩文件的方法...

    苹果mac电脑怎么压缩和解压文件?Mac电脑仅默认支持把文件压缩成zip格式,解压成zip.tar.gz,bz2等格式,有些操作需要安装第三方软件来完成,这篇文章为大家带来几种关于在Mac上解压和压缩 ...

  6. mac 命令行 解压7z文件_命令行压缩解压7z

    命令行压缩解压一 7z 1) 简介7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压软件.主页:http://www.7-zip.org/中文主页:http://7z.spar ...

  7. mac 命令行 解压7z文件_命令行压缩解压缩一 7z

    命令行压缩解压缩一 7z 1) 简介 7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压缩软件. 主页:http://www.7-zip.org/ 中文主页:http://7z ...

  8. 【随笔】谷歌浏览器+终端命令行下载美拍视频

    今天遇到想要的视频但是美拍没有提供下载.下载方法如下: 1.使用谷歌浏览器,打开视频播放链接地址(比如别人发来的播放地址) 2.菜单栏-视图-开发者-开发者工具 3.选择network选项 4.刷新网 ...

  9. FFMPEG学习(一)---【命令行】采集视频和音频

    FFMPEG常识 参数 参考:ffmpeg-比特率,帧率和文件大小 下载资源 下载ffmpeg安装包 加入环境变量: e:\ProgramFiles_D\ffmpeg\bin\ 输入设备 dshow ...

最新文章

  1. Android常用代码(类似工具类吧)
  2. shell 补齐路径_bash shell:命令的文件名自动补全设置
  3. Eureka简介与Eureka Server上
  4. pytest+allure测试框架搭建
  5. LeetCode 76. 最小覆盖子串 (滑动窗口哈希表)
  6. expect脚本中,变量的写法
  7. 在C#中使用DevExpress中的ChartControl实现极坐标图
  8. 花生壳:域名诊断—客户端离线
  9. 微信小程序401unauthorized授权问题解决方法
  10. 购物商城php设计与实现,php微信商城购物平台的设计与实现
  11. 月薪翻20倍,从小编辑到百度高级产品经理,我是如何打怪升级的
  12. 剑灵灵动区服务器位置,《剑灵》这波电二合区,属实让我脑壳疼
  13. python爬虫之糗事百科
  14. ZYNQ学习笔记PS部分【基本介绍】
  15. 阿里云免费SSL证书申请与安装使用-附Nginx,Apache,IIS 6,IIS 8配置SSL教程
  16. KVM虚拟机系统迁移
  17. 测试工具开发手把手教程
  18. uni-app调用百度语音播报
  19. Java BlockingQueue
  20. RockChip Android平台抓取android trace的windows环境搭建

热门文章

  1. windows内置的linux安卓驱动多系统摆脱虚拟机(下)
  2. 基于JAVA+Servlet+JSP+MYSQL的停车场管理系统
  3. postman delete 请求传递数组_Postman请求方法
  4. 阅读笔记11-孤独后厂村:30万互联网人跳不出的中国硅谷
  5. Date-calendar 类
  6. java 获取日期的几天前,几个月前和几年前
  7. 通过telnet来实践HTTP协议。
  8. SharePoint自动化系列——通过PowerShell创建SharePoint Lists
  9. spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入...
  10. ToString(C2)转人民币金额时的相关问题