轻松在Linux/Mac/Windows上配置FFmpeg开源音频工具

本文最后更新于:2021年7月20日 凌晨

作者: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可以轻松(包括但不限于):

🎥视频转码

使用FFmpeg,可以轻松将MP4格式文件,转码为Mov格式,或者是其他格式视频。方便储存视频到不同平台。
视频转码

🎙音频抽离

有时候,我们又一个MV(Music Video),但是我们想将它变成纯音频格式放进我们的MP3里。这个时候,我们可以使用FFmpeg来抽离音频,如:

1
2
3
4
# 抽离Mintimate.mov的音频为Mintimate.acc音频
ffmpeg -i Mintimate.mov -vn -y -acodec copy Mintimate.aac
# 抽离Mintimate.mp4的音频为Mintimate.mp3音频
ffmpeg -i Mintimate.mov -vn -y -acodec copy Mintimate.mp3

📽直播录屏
一般的网站,直播可能有一个m3u8的播放地址,这个地址是CDN的视频流。我们可以使用FFmpeg,对这个视频流进行录制:

1
ffmpeg -i https://这里是直播地址嗷/Mintimate.m3u8 -c:v copy -c:a copy -bsf:a aac_adtstoasc Output.mp4

直播录屏

这样,你可以把直播录下来。分享给小伙伴。

本文须知

因为FFmepg用途很广,且不同场景下还有特定参数。一篇文章无法同时详解配置和使用。所以,本文章,主要讲解如何在Linux/Mac/Windows上配置FFmepg。
🔗相关链接:

  • FFmpeg项目官网
  • FFmpeg官方总下载地址

为什么要用FFmpeg

举个“荔枝”,

  1. 下载了电影原盘,清晰度极高,但是想放到电视、投影仪上看,不能匹配字幕文件;这个是时候,你就可以用FFmpeg转码文件的同时,加入字幕。
  2. 设备不支持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,需要指向FFmpeg的绝对路径,那么推荐手动配置)

快速编译

首先确定你Linux基于的发行版本,大部分人是基于CentosDebian,打开终端试试就知道:
基于Debian,输入apt-get

如果你输入apt-get,发现出现apt-get: command not found。那么可以使用yum试试。反之同理。

之后,你在终端内输入:

1
2
3
4
# For Debian
apt-get install ffmpeg
# For Centos
yum install ffmpeg

一般会询问是否按安装:
确认安装,输入“y”后回车
之后,“跑码”完成后,FFmpeg就安装好了:
安装完成
如果失败,且出现下列提示:
地址解析失败
一般是你apt-get/yum太久没更新,或者你换过它们的源,没有更新配置。只需要运行:

1
2
3
4
# For Debian
apt-get update
# For Centos
yum update

之后在运行FFmpeg安装命令即可。

手动配置

因为Linux不同设备编译过程参数不一样,本文不提供编译安装方法。这边提供下载预编译版本FFmpeg,并配置到环境变量。

首先,进入FFmpeg官方Linux预编译版本页面内,下载对应系统架构的FFmpeg:
根据架构选择
我Linux设备是x64设备,所以选择amd64版本。终端内,创建FFmpeg文件夹,并下载解压这个文件:

1
2
3
4
# 下载FFmpeg
wget "https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz"
# 解压
tar -xf ffmpeg-release-amd64-static.tar.xz

Tips:tar命令具体使用教程
之后,我们配置环境变量:

  • 如果你用bash,那么,配置/etc/profile这个文件
  • 如果你使用ZSH,那么配置~/.zhsrc这个文件
    大部分Linux用户使用bash,所以我们演示一下:
    1
    2
    # 编辑/etc/profile
    vim /etc/profile
    进入后,按i进入编辑模式,文末添加:
    1
    2
    # FFmpeg
    export PATH=$PATH:「Path」
    保存并退出
    之后,再重载配置文件:
    1
    source /etc/profile
    即可:
    安装完成

Mac上配置FFmpeg

macOS上安装FFmpeg也很简单,两种方法:

  • 快速编译:使用Homebrew软件包工具快速安装仓库内预先编译好版本的FFmpeg,但是因为FFmpeg不在Homebrew官方仓库内,即使换源Homebrew也要连接GitHub。
  • 手动配置:到FFmpeg项目官网,下载预编译版本FFmpeg或FFmpeg源码进行编译,并配置到环境变量。

本文手动配置使用的是预编译版本FFmpeg,预编译版本目前并没有适配M1芯片设备。请使用快速编译方法!

快速编译(推荐)

这个很简单,不再赘述。已经安装Homebrew的用户,终端内输入:

1
brew install ffmpeg

漫长等待后,FFmpeg就安装好了。

手动配置1(推荐)

相信很多macOS用户并没有手动配置过环境。这边重点讲解如何手动配置。同样我们下载预编译版本的FFmpeg:

我们下载最新版本:
下载4.4版本FFmpeg
下载后,解压并重命名放到我们熟悉的地址,如:/Users/mintimate/ffmpeg:
下载好后,解压到熟悉的地址
如果你的macOS上并没有显示为执行图标(exec),使用Terminal进行提权限:

1
chmod +x ffmpeg

之后,我们配置到环境变量即可:

1
open ~/.zshrc

在文木添加:

1
2
# FFmpeg
export PATH=$PATH:/Users/mintimate/ffmpeg

保存后,终端内输入source ~/.zsshrc或重启终端即可:
ffmpeg安装完成

手动配置2(不推荐)

本方法不适用小白,所以简单说一下:
下载源码解压:

终端进入解压后的文件夹内:

1
./configure --enable-shared --prefix=/usr/local/ffmpeg

/usr/local/ffmpeg 为编译安装地址。
编译好后,参考手动配置1(推荐)添加进环境变量。

Windows上配置FFmpeg

Windwos的配置最为简单,我们进入FFmpeg项目官方Windows预编译下载界面:
ffmpeg下载

这边我推荐使用:GPL协议版本

📖配置环境变量

举个例子,我们下来了:ffmpeg-n4.4-4-gacb339bb88-win64-gpl-4.4.zip

我们下载好并解压,得到以下文件:
解压后得到文件
之后,我们打开环境变量:
环境变量
编辑Path,添加一条记录到刚刚解压出文件的bin文件夹下:
添加记录

🔧使用FFmpeg

配置好,保存后就可以在CMDPowershell等地方使用FFmpeg了:
使用FFmpeg

FFmpeg操作

添加字幕

我们下载下来的视频,总是字幕和视频原文件区别开来的(蓝光、蓝光压缩盘等),所以需要合并;你还在用老牌格式工厂等工具吗?其实,FFmpeg即可
在文件目录下,终端输入:

1
ffmpeg -y -i 「视频全名」 -vf subtitles=「字幕文件名」 「导出的视频文件名」

命令解锁:
其实,-y是不需要的,只是为了防止目录下有和导出视频文件名相同的视频,导致其失败;所以-y即:覆盖。
e.g.ffmpeg -y -i 1.mkv -vf subtitles=1.ass out.mp4

转换视频格式

1
2
3
4
5
ffmpeg -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.wmv

-i 后面是输入文件名。-vcodec 后面是编码格式,h264 最佳,但 Windows 系统默认不安装。如果是要插入 ppt 的视频,选择 wmv1 或 wmv2 基本上万无一失。

如果你想维持你的源视频文件的质量,使用 -qscale 0 参数:

1
ffmpeg -i input.webm -qscale 0 output.mp4

转换视频格式并添加字幕

因为下载,h264的mp4,从压缩和质量角度来说很不错;如果加了字幕还要质量,选择h264吧。

1
ffmpeg -y -i 「视频全名」 -vf subtitles=「字幕文件名」 -vcodec h264 「导出的视频文件」.mp4

或者这个,crf最高,但是清晰度很高:

1
ffmpeg -y -i filename.mkv -vf subtitles='filename.mkv' -disposition:s default+forced -c:v libx264 -c:a libmp3lame -crf 27 -preset ultrafast filename.mp4 

总结

其实FFmpeg的配置很简单,而且配置方法多种多样。但是FFmpeg这个根据却相当好用。如果你对此感兴趣,可以自己探索探索使用FFmpeg,将它运用到代码内,进一步提高你代码的功能性。

最后,感觉文章有用,可以:


若对文章很感兴趣,可以B站关注我ヾ(≧▽≦*)o

点击跳转“爱发电”页面(○` 3′○)