因項(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會有正常提示信息,如果是亂碼則將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í)會用到,若不安裝會警告,最好是安裝
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/對應(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目錄下娜庇,將對應(yīng)的bin、lib方篮、include目錄拷貝到/usr/local對應(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í)汁掠,會將生成的庫安裝到這個(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 //編譯為動態(tài)庫 --enable-libx264 --enable-libx265
//啟用支持x264和x265,,解碼h264和265會需要用到 --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目錄移動到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í)會遇到各種奇奇怪怪的問題,但是只要靜下心來慢慢的看日志冀惭,查資料總能把問題解決申鱼,有志者事竟成,加油T仆贰>栌选!溃槐。