簡介
FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計(jì)算機(jī)程序。采用LGPL或GPL許可證 。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進(jìn)的音頻/視頻編解碼庫libavcodec。
FFmpeg在Linux平臺(tái)下開發(fā),但它同樣也可以在其它操作系統(tǒng)環(huán)境中編譯運(yùn)行,包括Windows、[Mac OS X](https://baike.baidu.com/item/Mac OS X/470629?fromModule=lemma_inlink)等。
用戶既可以使用命令行直接對(duì)音視頻進(jìn)行操作(CLI),也可以調(diào)用其開源庫進(jìn)行個(gè)性化的功能開發(fā)(SDK)。
如果要在自己的程序中使用 ffmpeg ,那么使用它的 SDK 是最好的選擇。當(dāng)前 ffmpeg 包含以下幾個(gè)庫:
- libavcodec : 編/解碼
- libavfilter : 幀級(jí)操作(如添加濾鏡)
- libavformat : 文件 I/O 和 封裝/解封裝
- libavdevice : 設(shè)備視頻文件的封裝/解封裝
- libavutil : 通用工具集合
- libswresample : 音頻重采樣、格式處理、混音等
- libpostproc : 預(yù)處理
- libswscale : 色彩處理和縮放
FFmpeg編譯
為什么要編譯它呢?
? 由于ffmpeg 目前不提供預(yù)編譯的庫文件,而是需要自己下載源碼并編譯,而且可以自定義配置和優(yōu)化,比直接下載預(yù)編譯的二進(jìn)制的版本更加靈活。
編譯安裝準(zhǔn)備
在 Windows 下,編譯需要做的準(zhǔn)備如下:
- 安裝并配置 MYSY2
- 安裝 git (可選)
- ffmpeg 源碼
安裝 MSYS2 及編譯工具鏈
MSYS2 是 Windows 下的一組編譯套件,它可以在 Windows 系統(tǒng)中模擬 Linux 下的編譯環(huán)境,如使用 shell 運(yùn)行命令、使用 pacman 安裝軟件包、使用 gcc (MinGW) 編譯代碼等。簡單來說,使用 MSYS2 ,你可以通過在 Linux 下非常熟悉的各種命令,來編譯 Windows 下的軟件。
MSYS2 的安裝也非常省心,只需要到 MSYS2 官網(wǎng) 下載.exe
安裝包,管理員身份運(yùn)行安裝即可。
注意安裝盤必須是NTFS,路徑要全使用 ACSII 字符,不能有空格。建議就安裝在默認(rèn)位置,如果不想裝在 C 盤,就直接改下盤符,裝在其他盤的根目錄。
安裝完畢后,開始菜單里就會(huì)有下面的程序:
點(diǎn)擊它們就會(huì)啟動(dòng)一個(gè) shell 窗口,Just like on Linux ! 這個(gè) shell 程序默認(rèn)是 Mintty,類似 Linux 系統(tǒng)中的 bash shell。
MSYS2 支持多個(gè)編譯器工具鏈,它們的環(huán)境是獨(dú)立的(可以去安裝文件夾查看),
在開始菜單打開MSYS2 MSYS,使用命令pacman -Syu
升級(jí)所有庫
在編譯安裝FFmpeg之前,先安裝FFmpeg編譯需要的依賴和工具
pacman -S mingw-w64-x86_64-toolchain # mingw64編譯工具鏈,win下的gcc
pacman -S base-devel # 一些基本的編譯工具
pacman -S yasm nasm # 匯編器
pacman -S mingw-w64-x86_64-SDL2 # SDL2 是ffmpeg依賴的,因?yàn)闆]有它ffpaly不能用
安裝完畢后,可以輸入gcc -v
查看 gcc 版本:
最后需要添加環(huán)境變量。右擊此電腦 -> 屬性 -> 高級(jí)系統(tǒng)設(shè)置 -> 環(huán)境變量 -> 選擇 Path
(用戶變量和系統(tǒng)變量都要)-> 編輯 -> 新建,添加編譯工具鏈的路徑:
添加環(huán)境變量這一步,是為了以后使用其他編輯器或者IDE時(shí),能夠找到 MINGW64 的編譯工具鏈。在 MSYS2 中編譯 ffmpeg 本身是不需要添加 Windows 的環(huán)境變量的。
ffmpeg 源碼下載
在 ffmpeg 官網(wǎng) 下載源碼,目前最新的版本是 5.1.2 。注意不要下載成 executable files 了,那個(gè)是可以直接運(yùn)行的 CLI 程序。
三個(gè) download 都可以,只是壓縮包格式不一樣:
下載后解壓到一個(gè)好找的文件夾即可。
在 MSYS2 的 shell 中,打開源碼所在文件夾。
執(zhí)行編譯安裝命令
我們編譯安裝ffmpeg選擇使用mingw64終端 (如果你也是64位系統(tǒng)的話)。
-
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-sdl2 --disable-static
括號(hào)中的值都是可選的。
configure說明 --prefix=/usr/local/ffmpeg # 安裝位置 --enable-debug # 啟動(dòng)debug調(diào)試 --enable-sdl2 # 引入SDL2庫,ffplay編譯必須; --enable-static # 編譯靜態(tài)庫(默認(rèn)開啟) --enable-shared # 編譯動(dòng)態(tài)庫(默認(rèn)關(guān)閉) --enable-libvpx # VP8/VP9 視頻編碼器 --enable-libvmaf # VMAF視頻質(zhì)量評(píng)估工具 --disable-x86asm # 未知 --enable-gpl # 允許使用GPL(默認(rèn)關(guān)閉) --enable-nonfree # 允許使用非免費(fèi)的代碼, 產(chǎn)生的庫和二進(jìn)制程序?qū)⑹遣豢稍侔l(fā)行的 --enable-libx264 # 啟用H.264編碼(默認(rèn)關(guān)閉) --enable-libfdk-aac # 使能aac編碼(默認(rèn)關(guān)閉) --disable-optimizations # 禁用編譯器優(yōu)化 --disable-asm # 禁用全部匯編程序優(yōu)化 --enable-librtmp # 使用librtmp拉流(默認(rèn)關(guān)閉)
更多詳細(xì)說明可查詢
ffmpeg ./configure參數(shù)說明
-
編譯:make -j 4
4 表示編譯需要用4個(gè)線程。
-
安裝 sudo make install
這一步都安裝完成了,在安裝目錄下的bin目錄執(zhí)行.\ffmpeg.exe -version
設(shè)置環(huán)境變量
為了能夠每次打開的時(shí)候,都能執(zhí)行ffmpeg命令。在配置文件中末尾添加 export PATH=$PATH:/d/repos/ffmpeg/ffmpeg_5.2.1_install/bin
這個(gè)命令。配置文件就是msys的安裝位置/msys64/etc/profile
.這個(gè)文件和 Linux 下的/etc/profile
文件作用是類似的。
ffmpeg 集成x264
libx264 編譯安裝
ffmpeg 提供了相當(dāng)多的外部庫支持,但是如果要使用的話需要自己編譯外部庫。
libx264 由 VideoLAN 組織所發(fā)布,它是 H.264 的一套性能較好的軟編碼器實(shí)現(xiàn)(不包括解碼器)。H.264 (AVC) 是當(dāng)前較常用的視頻編碼,目前 H.264 的繼任者 H.265 (HEVC) 也漸趨成熟, VideoLAN 也有一套實(shí)現(xiàn) libx265。
-
進(jìn)入x264官網(wǎng)頁面下載
官方建議使用 git 下載源碼(下載壓縮包再解壓應(yīng)該也是一樣的):
git clone https://code.videolan.org/videolan/x264.git
-
進(jìn)入源碼目錄
-
執(zhí)行以下命令進(jìn)行編譯和安裝
編譯安裝過程和ffmpeg相似。
./configure --prefix=安裝路徑 --enable-shared
make -j 4
make install
– enable-shared ,同時(shí)在系統(tǒng)中生成共享庫,方便其他程序調(diào)用。
-
查看libx264是否安裝成功
到x264的可執(zhí)行文件目錄,執(zhí)行
./x264.exe --version
打印類似如下信息,安裝成功。
編譯ffmpeg庫,集成libx264
-
檢查 PKG_CONFIG_PATH 環(huán)境變量是否正確配置
pkg-config 工具通過 PKG_CONFIG_PATH 環(huán)境變量來查找?guī)斓?pkg-config 配置文件。ibx264的pkg-config是一個(gè)用于管理庫依賴的工具。它可以幫助開發(fā)者在編譯和鏈接源代碼時(shí)自動(dòng)包含庫文件,并提供必要的編譯器和鏈接器選項(xiàng)。此外,它還可以與其他開發(fā)工具集成,例如Autotools和CMake,以實(shí)現(xiàn)更完整和自動(dòng)化的構(gòu)建過程。
可以執(zhí)行以下命令確認(rèn) PKG_CONFIG_PATH 是否包含了 libx264 的 pkg-config 配置文件路徑:
echo $PKG_CONFIG_PATH
如果沒有包含,你可以使用以下命令將 libx264 的 pkg-config 配置文件路徑添加到 PKG_CONFIG_PATH 中:
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/f/software/install/ffmpeg/x264_install/lib/pkgconfig
-
編譯安裝ffmpeg
./configure --prefix=/f/software/install/ffmpeg/ffmpeg_install \ --enable-shared --enable-sdl2 --disable-static --enable-gpl --enable-libx264 \ --extra-cflags=-I/f/softweg/x264_install/include \ --extra-ldflags=-L/f/software/install/ffmpeg/x264_install/lib make -j 4 make install
這里使用了以下參數(shù):
- 加入
--enable-libx264
參數(shù)
- 加入
-
加入
--enable-gpl
參數(shù)。否則會(huì)提示libx264 is gpl and --enable-gpl is not specified
-
–extra-cflags=“-I/f/softweg/x264_install/include”:指定 x264 的頭文件路徑為 /f/softweg/x264_install/include。
- –extra-ldflags=“-L/f/software/install/ffmpeg/x264_install/lib”:指定 x264 的庫文件路徑為/f/software/install/ffmpeg/x264_install/lib,并鏈接到 libx264.so 動(dòng)態(tài)庫文件。
注意: 有一個(gè)坑就是 編譯安裝完成之后,執(zhí)行ffmpeg、ffplay等命令都沒有反應(yīng)。或者雙節(jié)ffmpeg.exe 提示 由于找不到libx264-164.dll,無法繼續(xù)執(zhí)行代碼。重新安裝程序可能會(huì)解決此問題。這是因?yàn)槲覀僱ibx264和ffmpeg的安裝路徑不在同一個(gè)地方。需要libx264安裝目錄的bin文件夾下的libx264-164.dll放到ffmpeg安裝路徑的bin目錄下。文章來源:http://www.zghlxwxcb.cn/news/detail-766002.html
參考
fmpeg庫編譯安裝及入門指南(Windows篇)文章來源地址http://www.zghlxwxcb.cn/news/detail-766002.html
到了這里,關(guān)于音視頻開發(fā)三:Windows環(huán)境下FFmpeg編譯安裝的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!