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會有正常提示信息,如果是亂碼則將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仆贰>栌选!溃槐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匣砖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猴鲫,老刑警劉巖对人,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拂共,居然都是意外死亡牺弄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門宜狐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來势告,“玉大人,你說我怎么就攤上這事抚恒≡厶ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵俭驮,是天一觀的道長回溺。 經(jīng)常有香客問我,道長混萝,這世上最難降的妖魔是什么遗遵? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮逸嘀,結(jié)果婚禮上车要,老公的妹妹穿的比我還像新娘。我一直安慰自己厘熟,他們只是感情好屯蹦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布维哈。 她就那樣靜靜地躺著绳姨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阔挠。 梳的紋絲不亂的頭發(fā)上飘庄,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機(jī)與錄音购撼,去河邊找鬼跪削。 笑死,一個(gè)胖子當(dāng)著我的面吹牛迂求,可吹牛的內(nèi)容都是我干的碾盐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼揩局,長吁一口氣:“原來是場噩夢啊……” “哼毫玖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤付枫,失蹤者是張志新(化名)和其女友劉穎烹玉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阐滩,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡二打,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掂榔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片继效。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衅疙,靈堂內(nèi)的尸體忽然破棺而出莲趣,到底是詐尸還是另有隱情,我是刑警寧澤饱溢,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布喧伞,位于F島的核電站,受9級特大地震影響绩郎,放射性物質(zhì)發(fā)生泄漏潘鲫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一肋杖、第九天 我趴在偏房一處隱蔽的房頂上張望溉仑。 院中可真熱鬧,春花似錦状植、人聲如沸浊竟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽振定。三九已至,卻和暖如春肉拓,著一層夾襖步出監(jiān)牢的瞬間后频,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工暖途, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卑惜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓驻售,卻偏偏與公主長得像露久,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子欺栗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容