VS2019+msys2編譯ffmpeg

因項(xiàng)目需要,最近在學(xué)習(xí)音視頻相關(guān)開發(fā)技術(shù)。第一步是搭建開發(fā)環(huán)境,通過參考網(wǎng)上查到的資料結(jié)合實(shí)際情況,最終將ffmpeg編譯通過,并支持x264、x265、fdk-aac。在這里將具體的操作過程記錄下來,方便以后參考。

1、下載VS2019社區(qū)版本、下載msys64位版本的可執(zhí)行文件進(jìn)行安裝。

https://www.msys2.org msys2官網(wǎng)
https://visualstudio.microsoft.com/zh-hans/downloads/ VS2019下載地址

2、通過vs2019的x86 Native Tools 命令行工具打開msys2,并繼承命令行工具的環(huán)境變量

用文本編輯器打開 msys2安裝根目錄下的msys2_shell.cmd ,將
rem set MSYS2_PATH_TYPE=inherit
改為set MSYS2_PATH_TYPE=inherit,即去掉行首的rem字符并保存。

打開x86 Native Tools 命令行工具,cd到msys2安裝根目錄下,執(zhí)行命令
msys2_shell.cmd -mingw32 打開一個(gè)mingw32終端,這時(shí)候輸入cl會(huì)有正常提示信息,如果是亂碼則將options里的語言設(shè)置為GBK即可。

3、配置編譯環(huán)境

安裝之前,先替換安裝包的源地址,打開msys2的安裝目錄進(jìn)入/etc/pacman.d/文件夾下配置3個(gè)文件(mirrorlist.mingw32、mirrorlist.mingw64、mirrorlist.msys)

在mirrorlist.mingw32文件最前面增加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
在mirrorlist.mingw64文件最前面增加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
在mirrorlist.msys文件最前面增加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

依次執(zhí)行下面的命令更新環(huán)境

pacman -S nasm #匯編工具,安裝
pacman -S yasm #匯編工具,安裝
pacman -S make #項(xiàng)目編譯工具,必須安裝 
pacman -S cmake #項(xiàng)目編譯工具,必須安裝 
pacman -S diffutils #比較工具,ffmpeg configure 生成makefile時(shí)會(huì)用到,若不安裝會(huì)警告,最好是安裝 
pacman -S pkg-config #庫配置工具,編譯支持x264和x265用到 pacman -S git #下載源碼用,可以不安裝,可自行通過其它方式下載源碼
pacman -S base-devel # 安裝基本開發(fā)組件
pacman -S binutils #包含ld等命令

4、下載并編譯x264

在msys根目錄的home目錄下新建xsrc目錄,使用git下載源碼達(dá)到本地。在msys2命令行中輸入下面的命令克隆代碼。

git clone https://code.videolan.org/videolan/x264.git

下載完成后,cd到x264目錄下,執(zhí)行命令

CC=cl ./configure --enable-shared

生成makefile 文件

輸入命令

make

等待編譯,編譯完成后輸入命令

make install

默認(rèn)安裝到msys2根目錄的 usr/local 目錄下

5、下載并編譯x265

在xsrc 下執(zhí)行命令

git clone https://github.com/videolan/x265.git

下載完成后關(guān)閉所有命令行窗口,重新以管理員身份運(yùn)行x86 Native Tools 命令行工具,打開msys2命令行,cd到x265目錄下執(zhí)行編譯命令

./make-Makefiles.sh

編譯完成后執(zhí)行安裝命令

nmake install

該命令默認(rèn)將x265安裝到 C:/Program Files (x86)/目錄下。將該目錄x265中的bin、lib、include 目錄拷貝到msys2根目錄的usr/local/對(duì)應(yīng)的目錄下,并修改lib/pkgconfig 中的 x265.pc,將第一行的prefix路徑改為prefix=/usr/local

6、下載并編譯fdk-aac

在xsrc 下執(zhí)行命令

git clone https://github.com/mstorsjo/fdk-aac.git

cd到fdk-aac源碼文件夾 ,執(zhí)行文件autogen.sh

./autogen.sh

執(zhí)行命令生成makefile

./configure --enable-shared --enable-static

編譯 make -j6

安裝 make install

默認(rèn)安裝到mingw32目錄下,將對(duì)應(yīng)的bin、lib、include目錄拷貝到/usr/local對(duì)應(yīng)目錄下,并修改fdk-aac.pc,將第一行的prefix路徑改為prefix=/usr/local。

7、下載并編譯ffmpeg

在xsrc 下執(zhí)行命令

git clone https://github.com/FFmpeg/FFmpeg.git

cd到FFmpeg源碼文件夾 ,新建install目錄,后面執(zhí)行make install時(shí),會(huì)將生成的庫安裝到這個(gè)目錄下。

執(zhí)行命令,生成makefile文件 CC=cl.exe ./configure --prefix=./install --toolchain=msvc --enable-shared --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265

./configure -h 可以查看每個(gè)配置項(xiàng)的具體含義。這里

--prefix=./install --toolchain=msvc

//指定安裝路徑和工具鏈MSVC --enable-shared //編譯為動(dòng)態(tài)庫 --enable-libx264 --enable-libx265

//啟用支持x264和x265,,解碼h264和265會(huì)需要用到 --enable-gpl //開啟協(xié)議,x264,x265必需 --enable-libfdk-aac --enable-nonfree

//aac音頻編碼,aac必須啟用nonfree

如果一切順利接下來執(zhí)行 make 開始編譯

編譯結(jié)束后 執(zhí)行 make install 將生成的文件和依賴安裝到install目錄下。

在 ./configure 階段可能遇到的問題

a)libx264.lib找不到,這是因?yàn)樯傻膞264庫默認(rèn)命名為libx264.dll.lib,將其改為libx264.lib可解決這個(gè)問題。
b)fdk-aac 庫文件找不到,這里有兩個(gè)方法,一個(gè)是將/usr/local/lib 目錄下的pkgconfig目錄移動(dòng)到mingw32/lib目錄下;另一個(gè)是將/usr/local/lib/pkgconfig 設(shè)置到環(huán)境變量中,export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig":$PKG_CONFIG_PATH
c)ERROR: x265 not found using pkg-config

將libx265.lib 改名為x265.lib后配置成功。

總結(jié):
編譯ffmpeg時(shí)會(huì)遇到各種奇奇怪怪的問題,但是只要靜下心來慢慢的看日志,查資料總能把問題解決,有志者事竟成,加油?。?!。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容