macOS上如何安装(不需要编译安装或者brew)、使用ffmpeg转码的教程,以及如何使用硬件加速
最近要将mkv格式转为mp4格式,由于compressor不支持mkv,所以就打算用ffmpeg来转,但是由于视频文件巨大,简单的命令太慢了,所以就想用硬件加速,但是由于macOS的特殊性,官网上给出硬件加速的方法不管用,所以就研究了一下,正好写一下这款程序的一个小教程,希望能帮到有需要的人。
需要注意的是,ffmpeg不是GUI(图形交互)软件,所以操作起来需要有一定命令行使用的经验,不过我也会一步步来,尽力让新手也能看懂。
首先介绍一下ffmpeg。
ffmpeg是一款非常好用的视频音频转码、编码、解码录制程序,可以用于录制流媒体视频音频、转换音视频文件格式等各种用途,官网是:http://www.ffmpeg.org。由于是开源软件,很多转码、下载视频软件的内在就是ffmpeg。
安装FFmpeg
第一步肯定是安装程序了,官网不光提供源码可以让我们按需编译程序,也给我们提供了完整的编译版本,这里我们直接安装编译好的完整版。
首先我们进入官网,点击“Download”:
再点击苹果图标,然后点击64位的静态版本下载:
这时候下载了一个归档,也就是压缩包。我们在桌面新建一个文件夹,这里将其命名为“ffmpeg
”,然后将压缩包拖到这个新文件夹中。双击解压之后就得到程序了,大致如下:
这时候我们双击运行,会自动配置好,如下:
这时候就算安装好了。
初步使用FFmpeg
这时候我们需要打开“终端”(Terminal),打开终端有几种比较方便的办法。
- 按下Command键+空格键,唤出“聚焦搜索”,搜索“终端”或者“Terminal”,就可以找到了。
- 点击“启动台”,找到“其他”,就可以找到“终端”了。
由于macOS终端的默认工作目录是用户的根目录,所以我们需要输入以下命令来切换到刚才新建的ffmpeg
文件夹:
cd Desktop/ffmpeg/
然后我们就可以用./ffmpeg
来使用ffmpeg程序了。
我们可以使用以下命令来查看“帮助”:
# 下面这个命令可以查看比较简短的帮助和提示
./ffmpeg -h
# 下面这个命令可以查看比较长的帮助和提示
./ffmpeg -h long
# 下面这个命令可以查看完整的帮助和提示
./ffmpeg -h full
好了,我们开始转码吧。
初步视频格式转换(视频转码)
ffmpeg转码非常简单。这里出于演示目的,我往ffmpeg文件夹中拖入了一个名为in.mp4
的MP4视频文件作为输入文件,如下:
然后使用以下命令将其转成名为out.mov
的MOV视频文件(这里in.mp4
和out.mov
都可以自己决定的):
./ffmpeg -i in.mp4 out.mov
按下回车就会进入转码状态了,画面上会出现这样的内容:
这里讲一下如何看这个部分,先看重复很多的那些行,从左到右:
frame=
:这部分显示的是已经生成了多少帧。fps=
:这部分显示的是从上条信息到这条信息期间,生成了多少帧。这里和左下角的speed
部分有关系,等会说speed
部分的时候再讲。q
:这部分表示的是视频质量。由于我们没有设定转码质量,所以由系统自动决定,这里的是31(最高是52,部分编码器可能会不同)。size=
:这里显示的是从上条信息到这条信息期间,生成了多少数据。time
:这部分显示的是到被转码视频的哪部分了,比如说time=00:01:36.68
表示转码到视频的1分36.68秒。bitrate=
:这里显示的是从上条信息到这条信息期间转码的视频的平均码率。这个数据一般维持在一个值附近,这个值可以指定,稍后说。
然后就是刚才提到的左下角的speed
部分,这部分表示的是转码速度是视频帧数的几倍,比如说这个视频平均帧数是60帧,每次转码72帧,这里显示的就是1.2x
了。(视频时间除以speed
就是大致的渲染时间)这部分越高,就表示转码速度越快。如果这部分小于1x
,那就算慢了,就需要使用硬件加速。
转码速度取决于源文件、目标文件的码率,如果源文件码率低,转码会快。目标文件同理,但是码率低可能会大幅降低画质。
而且转码速度也取决于目标文件格式,例如转avi文件会快很多。
但是我们如果看一下转码后的视频,可能会发现视频比源文件糊,这是因为目标文件的码率太低(如果目标文件比源文件小太多就会这样)。如下图,上边是源文件,平均码率是41970k;下边是目标文件,平均码率是2780k:
可以看到下面的头发糊到一起了,所以我们得使用一个比较高的码率,来改善这一情况。
如果只是想转码,不想损耗画质,使用的码率得大于等于源文件。
如果是想发在视频平台上,一般1080P的视频想要获取比较好的画质,码率至少在5000k以上即可。
这里需要注意的是同等码率下,mov画质不如mp4,所以我们将码率设置成10000k,码率几乎是之前的4倍,:
./ffmpeg -i in.mp4 -b:v 10000k out.mov
对比图如下(从上到下为“源文件”、“自动设置”、“10000码率”):
可以看到虽然画质还是比不上源文件但是好很多了。
FFmpeg加速渲染
上面提到过渲染很慢可以使用硬件加速,也就是利用显卡或者一些指令集加速。使用硬件加速不光会加快转码速度,也会减少内存和CPU的占用
但是如果使用官网文档的方法是没有办法在macOS平台加速,官网甚至没有提到相关内容。
首先我们使用以下命令来查看可以使用的硬件加速方式:
./ffmpeg -hwaccels
这时候我们可以在最下面看到支持的硬件加速方式,如下:
这里可以看到只支持videotoolbox
方式来进行硬件加速。没错,macOS平台没办法按照官网文档中说的那样使用qsv
或者其他硬件加速方式,需要使用videotoolbox
。
Apple使用VideoToolbox来为h264和265/HEVC视频编码提供硬件加速。
我们来更改一下之前使用过的命令,使用硬件加速,如下:
./ffmpeg -hwaccel videotoolbox -i in.mp4 -c:v h264_videotoolbox -b:v 10000k out.mov
我们先用-hwaccel videotoolbox
选项来表示使用videotoolbox
工具包,然后使用-c:v h264_videotoolbox
表示我们使用h264编/解码器来进行转码,如果源文件是h265/HEVC编码的,就使用-c:v hevc_videotoolbox
。
刚才不用加速的时候,速度是0.949x
,使用加速之后达到了1.91x
,几乎是之前的两倍(这一般取决于显卡能力)。
不过需要注意的是,加速转码的画质可能会不如直接转码,但是除非大码率转码,不然的话二者画质没有任何区别。如果很担心这个问题,但是又需要加速,视频是h264或者h265/HEVC编码的视频,可以使用-preset veryslow
选项来缓和一下,如下:
./ffmpeg -hwaccel videotoolbox -i in.mp4 -c:v h264_videotoolbox -b:v 10000k -preset veryslow out.mov
这样就基本可以使用FFmpeg程序了,后面应该还会写一写其他的用法。
希望可以帮到有需要的人~
macOS上如何安装(不需要编译安装或者brew)、使用ffmpeg转码的教程,以及如何使用硬件加速相关推荐
- Redhat EL 5.3上安装Cacti(4)- 编译安装rrdtool及安装配置snmp
Redhat EL 5.3上安装Cacti(4)- 编译安装rrdtool及安装配置snmp Linux下安装Cacti实现网络监控 由于博客字符8万限制,所以分开5部分上传! 请看Redhat EL ...
- 最新版本Redis:Redis 7.0 安装使用,编译安装Redis,Redis使用场景-2022年最新Redis图解安装
最新版本Redis:Redis 7.0 安装使用,编译安装Redis,Redis使用场景. 本章主要目标: 1.Redis介绍 2.下载Redis,编译安装Redis 3.启动Redis使用 4.Re ...
- python3.7.2安装-ubuntu下编译安装Python3.7.2
Ubuntu下安装Python3.7.2 1.去官网下载Python3.7.2 首先到要安装的文件夹下创建安装目录 mkdir /usr/local/bin/python3.7 切到要下载的文件夹下: ...
- ubuntu 编译安装php mysql_ubuntu编译安装php5 mysql nginx
一.首先下载软件源码包 wget http://sysoev.ru/nginx/nginx-0.8.53.tar.gz wget http:/.s135.com/soft/linux/nginx_ph ...
- apache 编译安装php mysql_编译安装APACHE+PHP+MYSQL
adminjun qq:279872 网络技术研究会群:8070045 中国linux公社论坛群:4478487 其实这是我用RouterOS和redhat linux进行pppoe服务器的配置及在r ...
- 从nginx的编译安装,了解编译安装原理
nginx编译安装过程 https://www.cnblogs.com/liujuncm5/p/6713784.html 1.configure 这一步一般用来生成 Makefile,为下一步的编译做 ...
- freerdp 解压安装_Ubuntu下编译安装运作FreeRdp连接Windows
Ubuntu下编译安装运行FreeRdp连接Windows. linux下编译源码进行USB重定向到远程桌面的测试,经过参数的正确配置,可以正常的重定向.具体的操作步骤如下: ⑴在虚拟机上安装git, ...
- 编译安装python3.6_编译安装Python3.6及以上
编译安装Python3.6及以上 前言 系统环境为centos6或7系统,编译安装python3.6及以上版本需要带上ssl模块,否则后面pip3安装会出现ssl类似的报错.而3.6及以上中的ssl模 ...
- linux nginx编译安装mysql_Centos7下编译安装配置Nginx+PHP+MySql环境
序言 这次玩次狠得.除了编译器使用yum安装,其他全部手动编译.哼~ 看似就Nginx.PHP.MySql三个东东,但是它们太尼玛依赖别人了. 没办法,想用它们就得老老实实给它们提供想要的东西. 首先 ...
最新文章
- Mysql 索引 事物
- 【TP3.2】模板 select选项采坑
- 解决类似umount target is busy挂载盘卸载不掉问题
- mysql 索引语法_MySQL 索引:语法及案例剖析
- python判断字符是否是字典的键_Python3基础 dict in/not in 查询一个字符是否指定字典的键或者值...
- .NET跨平台之旅:将示例站点从ASP.NET 5 Beta7升级至RC1
- Node中同步与异步的方式读取文件
- linux的文件io操作(转)
- 【监控】Grafana面板修改记录
- 鼠标经过(hover)事件的延时处理
- python数据分析之(6)简单绘图matplotlib.pyplot
- php判断平板,一种 PHP 判断设备是否是手机/平板的方法
- Carryon 数数字(x^n ≡1 mod(x-1))
- Unity ML-Agents 从零训练你自己的AI!:一、环境配置
- Linux常用指令(5)——20.4.25
- android studio DDMS debug process 无法激活,小虫子灰色
- 一文搞懂谐波、纹波、噪声
- Nginx+Docker+Jekyll+阿里云ECS+备案搭建博客全记录
- 《MongoDB极简教程》第一章 NoSQL简史 amp; MongoDB安装amp;环境配置
- 分享一下基于autojs4的WX加好友
热门文章
- 基于SSM和mysql实现的Web便利店收银管理系统实现,Javaweb实现的超市收银平台
- 724便利店系统完整项目及讲解
- 计算机网络的管理分析,计算机网络管理软件的分析研究
- 报错解决:Can‘t connect to X11 window server using……
- Could not launch “” Domain: IDEDebugSessionErrorDomain Code: 3 Failure Rea
- 打开管家婆软件提示:已停止工作/程序无响应
- EFI系统分区如何删除
- Linux 探索之旅 | 第二部分第一课:终端 Terminal,好戏上场
- access下如何配置两个vlan_锐捷三层交换机创建的两个vlan之间怎么样配置能通
- 四位行波进位加法器_《城市:天际线》中的图灵机:用水电管道做一个四位加法器...