ffmpeg threads_用ffmpeg命令行转压视频
首先得安装好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命令行转压视频相关推荐
- ffmpeg 命令行实现多路视频拼接播放
FFmpeg命令行实现多路视频拼接 下面我将实现的是4个视频合为一个视频 注意:不是首位连接 是同时显示 效果如下: ffmpeg命令为: ffmpeg -i out1.mp4 -i out2.mp4 ...
- FFmpeg 快速上手:命令行详解、工具、教程、电子书
FFmpeg 简介 FFmpeg 是一个开源的音视频处理工具,诞生已22年.它可以用来处理音视频的编解码.格式转换.剪辑.合并.抽取.压缩.解压缩.滤镜.字幕等等.它可以在 Windows.Linux ...
- ffmpeg mp4 提取h265命令行_安装FFmpeg多媒体库,以及命令行程序使用介绍
FFmpeg是非常流行的多媒体框架,主要用于音视频的解码.编码.转码.混流.过滤.播放等操作. 2000年,法国著名的程序员Fabrice Bellard创建FFmpeg项目,前两个字母FF是Fast ...
- 视频处理小技巧|ffmpeg视频命令行快速旋转视频
拍视频没注意,横屏内容拍成了竖屏,变成这样了: 直接用剪映呢,旋转后大小不对,虽然也有办法可以调整,但以后还会用这些视频,所以决定修正原始视频. 想起以前用过的强大视频转换命令行工具ffmpeg, 应 ...
- mac 命令行 解压7z文件_如何在Mac上快速压缩和解压文件?Mac上解压和压缩文件的方法...
苹果mac电脑怎么压缩和解压文件?Mac电脑仅默认支持把文件压缩成zip格式,解压成zip.tar.gz,bz2等格式,有些操作需要安装第三方软件来完成,这篇文章为大家带来几种关于在Mac上解压和压缩 ...
- mac 命令行 解压7z文件_命令行压缩解压7z
命令行压缩解压一 7z 1) 简介7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压软件.主页:http://www.7-zip.org/中文主页:http://7z.spar ...
- mac 命令行 解压7z文件_命令行压缩解压缩一 7z
命令行压缩解压缩一 7z 1) 简介 7z,全称7-Zip, 是一款开源软件.是目前公认的压缩比例最大的压缩解压缩软件. 主页:http://www.7-zip.org/ 中文主页:http://7z ...
- 【随笔】谷歌浏览器+终端命令行下载美拍视频
今天遇到想要的视频但是美拍没有提供下载.下载方法如下: 1.使用谷歌浏览器,打开视频播放链接地址(比如别人发来的播放地址) 2.菜单栏-视图-开发者-开发者工具 3.选择network选项 4.刷新网 ...
- FFMPEG学习(一)---【命令行】采集视频和音频
FFMPEG常识 参数 参考:ffmpeg-比特率,帧率和文件大小 下载资源 下载ffmpeg安装包 加入环境变量: e:\ProgramFiles_D\ffmpeg\bin\ 输入设备 dshow ...
最新文章
- Android常用代码(类似工具类吧)
- shell 补齐路径_bash shell:命令的文件名自动补全设置
- Eureka简介与Eureka Server上
- pytest+allure测试框架搭建
- LeetCode 76. 最小覆盖子串 (滑动窗口哈希表)
- expect脚本中,变量的写法
- 在C#中使用DevExpress中的ChartControl实现极坐标图
- 花生壳:域名诊断—客户端离线
- 微信小程序401unauthorized授权问题解决方法
- 购物商城php设计与实现,php微信商城购物平台的设计与实现
- 月薪翻20倍,从小编辑到百度高级产品经理,我是如何打怪升级的
- 剑灵灵动区服务器位置,《剑灵》这波电二合区,属实让我脑壳疼
- python爬虫之糗事百科
- ZYNQ学习笔记PS部分【基本介绍】
- 阿里云免费SSL证书申请与安装使用-附Nginx,Apache,IIS 6,IIS 8配置SSL教程
- KVM虚拟机系统迁移
- 测试工具开发手把手教程
- uni-app调用百度语音播报
- Java BlockingQueue
- RockChip Android平台抓取android trace的windows环境搭建
热门文章
- windows内置的linux安卓驱动多系统摆脱虚拟机(下)
- 基于JAVA+Servlet+JSP+MYSQL的停车场管理系统
- postman delete 请求传递数组_Postman请求方法
- 阅读笔记11-孤独后厂村:30万互联网人跳不出的中国硅谷
- Date-calendar 类
- java 获取日期的几天前,几个月前和几年前
- 通过telnet来实践HTTP协议。
- SharePoint自动化系列——通过PowerShell创建SharePoint Lists
- spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入...
- ToString(C2)转人民币金额时的相关问题