在Linux/Mac/Windows上配置FFmpeg开源音频工具,轻松完成视频转码、音频混合等操作
本文最后更新于 2023年9月17日 上午
作者:Mintimate
博客:https://www.mintimate.cn
腾讯云社区:https://cloud.tencent.com/developer/user/7704194
Mintimate’s Blog,只为与你分享
FFmpeg简介
“FFmpeg”这个项目单词中的“FF”指的是“Fast Forward(快速前进),而“mpeg”指的是“Moving picture expert group”。这个项目主要用于图片、声音处理,目前广泛 被用于视频软件和视频处理中。
使用FFmepg可以轻松(包括但不限于):视频转码、音频抽离和字幕与视频合并等操作。我就经常拿来给电影原盘转码为H264 MP4并添加硬字幕,用于电视上播放(*≧ω≦)
🎥视频转码
使用FFmpeg,可以轻松将MP4格式文件,转码为Mov格式,或者是其他格式视频。方便储存视频到不同平台。
🎙音频抽离
有时候,我们又一个MV(Music Video),但是我们想将它变成纯音频格式放进我们的MP3里。这个时候,我们可以使用FFmpeg来抽离音频,如:
1 |
|
📽直播录屏
一般的网站,直播可能有一个m3u8的播放地址,这个地址是CDN的视频流。我们可以使用FFmpeg,对这个视频流进行录制:
1 |
|
这样,你可以把直播录下来。分享给小伙伴。
本文须知
因为FFmepg用途很广,且不同场景下还有特定参数。一篇文章无法同时详解配置和使用。所以,本文章,主要讲解如何在Linux/Mac/Windows上配置FFmepg。
🔗相关链接:
- FFmpeg项目仓库地址:https://github.com/FFmpeg/FFmpeg
- FFmpeg官方总下载地址:https://www.ffmpeg.org/download.html
- FFmpeg Static(预编译版本):https://github.com/eugeneware/ffmpeg-static
为什么要用FFmpeg
举个“荔枝”,
- 下载了电影原盘,清晰度极高,但是想放到电视、投影仪上看,不能匹配字幕文件;这个是时候,你就可以用FFmpeg转码文件的同时,加入字幕。
- 设备不支持mkv格式,只支持h264的mp4格式?这个时候,你就可以用FFmpeg转码mkv为mp4了。
视频教程
觉得视频有用,可以投币点赞嗷~
如果无法播放,视频链接:10分钟学会在Windows/Mac/Linux系统上安装和配置转码利器–“FFmpeg”
前提
一台带Mac/Linux/Windows的设备一台。
(理论上,树莓派也可以,但是可能性能不足……)
Linux上配置FFmpeg
Linux安装FFmpeg很简单,两种方法:
- 软件包安装:使用Linux发行版本自带的软件包工具(apt-get、yum等)快速安装仓库内预先编译好版本的FFmpeg。
- 手动配置:到FFmpeg项目官网,下载预编译版本FFmpeg或FFmpeg源码进行编译,并配置到环境变量。
- 编译安装:FFmpeg编译安装特别麻烦,主要是可以自定义的外部支持库太多了(比PHP、Nginx编译多太多),所以本文不介绍。
前两种方法各有利弊,大家可以按需选择。
如果你是使用编程语言调用FFmpeg,需要指向FFmpeg的绝对路径,或者需要更新版本的FFmpeg特性,那么推荐手动配置
软件包安装
首先确定你Linux基于的发行版本,大部分人是基于Centos
或Debian
,打开终端试试就知道:
如果你输入apt-get
,发现出现apt-get: command not found
。那么可以使用yum
试试。反之同理。
之后,你在终端内输入:
1 |
|
一般会询问是否按安装:
之后,“跑码”完成后,FFmpeg就安装好了:
如果失败,且出现下列提示:
一般是你apt-get/yum太久没更新,或者你换过它们的源,没有更新配置。只需要运行:
1 |
|
之后在运行FFmpeg安装命令即可。
手动配置
因为Linux不同设备编译过程参数不一样,本文不提供编译安装方法。这边提供下载预编译版本FFmpeg,并配置到环境变量。
首先,进入FFmpeg官方Linux预编译版本页面内,下载对应系统架构的FFmpeg:
我Linux设备是x64
设备,所以选择amd64
版本。终端内,创建FFmpeg文件夹,并下载解压这个文件:
1 |
|
Tips:tar命令具体使用教程
之后,我们配置环境变量:
- 如果你用bash,那么,配置
~/.bashrc
这个文件 - 如果你使用ZSH,那么配置
~/.zhsrc
这个文件
大部分Linux用户使用bash,所以我们演示一下:进入后,按1
2# 编辑~/.bashrc环境变量
vim ~/.bashrci
进入编辑模式,文末添加:1
2# FFmpeg
export PATH=$PATH:「Path」
之后,再重载配置文件:即可:1
source ~/.bashrc
2022.04.23更新:之前都是编辑
/etc/bashrc
这个文件,这个其实全局环境变量(Bash情况下),想想还是演示用户环境变量比较好……所以现在教程改为编辑~/.bashrc
。视频教程内还是编辑/etc/bashrc
,大家可以自己定夺配置那个哦。
macOS上配置FFmpeg
macOS上安装FFmpeg也很简单,两种方法:
- 快速编译:使用Homebrew软件包工具快速安装仓库内预先编译好版本的FFmpeg,但是因为FFmpeg不在Homebrew官方仓库内,即使换源Homebrew也要连接GitHub。
- 手动配置:到FFmpeg项目官网,下载预编译版本FFmpeg或FFmpeg源码进行编译,并配置到环境变量。
- 编译配置:下载FFmpeg的源码,使用cmake或者make进行编译和安装。有一定门槛,且自定义的外部支持库太多了(比PHP、Nginx编译多太多),不推荐新手配置。
本文手动配置使用的是预编译版本FFmpeg,预编译版本目前并没有适配M1芯片设备。请使用快速编译方法!预编版本,目前支持全版本macOS,包括ARM64架构和X86架构。
快速编译(推荐)
这个很简单,不再赘述。已经安装Homebrew的用户,终端内输入:
1 |
|
漫长等待后,FFmpeg就安装好了:
如果你并没有安装Homebrew,可以参考文章:
手动配置1(推荐)
相信很多macOS用户并没有手动配置过环境。这边重点讲解如何手动配置。同样我们下载预编译版本的FFmpeg:
我们下载最新版本:
下载后,解压并重命名放到我们熟悉的地址,如:/Users/mintimate/myEnvironment/ffmpeg
:
如果你的macOS上并没有显示为执行图标(exec),使用Terminal进行提权限:
1 |
|
之后,我们配置到环境变量即可:
1 |
|
在文木添加:
1 |
|
保存后,终端内输入source ~/.zsshrc
或重启终端即可:
ffmpeg安装完成
编译配置(不推荐)
本方法不适用小白,所以简单说一下:
下载源码解压:
终端进入解压后的文件夹内:
1 |
|
/usr/local/ffmpeg 为编译安装地址。
编译好后,参考手动配置1(推荐)
添加进环境变量。
Windows上配置FFmpeg
Windwos的配置最为简单,我们进入FFmpeg项目官方Windows预编译下载界面:
这边我推荐使用:GPL协议版本。
📖配置环境变量
举个例子,我们下来了:ffmpeg-n4.4-4-gacb339bb88-win64-gpl-4.4.zip
我们下载好并解压,得到以下文件:
之后,我们打开环境变量:
编辑Path,添加一条记录到刚刚解压出文件的bin文件夹下:
🔧使用FFmpeg
配置好,保存后就可以在CMD和Powershell等地方使用FFmpeg了:
FFmpeg操作
字幕And轨道选取
我们下载下来的视频,总是字幕和视频原文件区别开来的(蓝光、蓝光压缩盘等),所以需要合并;你还在用老牌格式工厂等工具吗?其实,FFmpeg即可
在文件目录下,终端输入:
1 |
|
命令解锁:
其实,-y是不需要的,只是为了防止目录下有和导出视频文件名相同的视频,导致其失败;所以-y即:覆盖。
e.g.
1 |
|
另外,如果是MKV这样内嵌多音轨或多字幕的文件,我们可以使用map
进行提取。举个例子,我这个电影文件:
1 |
|
可以发现,是多音轨和字幕:
如果我想单独提取视频轨道和音频轨道,只需要:
1 |
|
这样输出的视频,就只有第1和第2轨道(视频轨道和音频默认轨道):
正因为如此,我们可以把默认的字幕也提取抽离出来,并转为mp4文件:
1 |
|
其中:
方法1中,
-filter_complex "[0:v:0]subtitles=Hotel.Transylvania.4.Transformania.2022.中英字幕.mkv:si=2[v]" -map "[v]"
代表截取并融合Hotel.Transylvania.4.Transformania.2022.中英字幕.mkv
视频文件内视频轨和字幕第2轨道为参数[v]
轨道,并融合后续音频轨的渲染。方法2shi
转换视频格式
1
2
3
4
5ffmpeg -i input.ogv -vcodec h264 out.mp4
ffmpeg -i input.ogv -vcodec mpeg4 out.mp4
ffmpeg -i input.ogv -vcodec libxvid out.mp4
ffmpeg -i input.mp4 -vcodec wmv1 out.wmv
ffmpeg -i input.mp4 -vcodec wmv2 out.wmvi 后面是输入文件名。-vcodec 后面是编码格式,h264 最佳,但 Windows 系统默认不安装。如果是要插入 ppt 的视频,选择 wmv1 或 wmv2 基本上万无一失。
如果你想维持你的源视频文件的质量,使用 -qscale 0 参数:
1 |
|
转换视频格式并添加字幕
因为下载,h264的mp4,从压缩和质量角度来说很不错;如果加了字幕还要质量,选择h264吧。
1 |
|
或者这个,crf最高,但是清晰度很高:
1 |
|
总结
其实FFmpeg的配置很简单,而且配置方法多种多样。但是FFmpeg这个根据却相当好用。如果你对此感兴趣,可以自己探索探索使用FFmpeg,将它运用到代码内,进一步提高你代码的功能性。
最后,感觉文章有用,可以: