目錄
編譯
基礎(chǔ)環(huán)境準(zhǔn)備
依賴(lài)環(huán)境安裝
依賴(lài)庫(kù)安裝
X264
fdk-aac
X265
ffmpeg-4.3.6
調(diào)試
基礎(chǔ)項(xiàng)目環(huán)境搭建
VS2019項(xiàng)目創(chuàng)建
VS2019項(xiàng)目代碼
vs2019配置
VS2019調(diào)試文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-502039.html
編譯
基礎(chǔ)環(huán)境準(zhǔn)備
1、安裝vs2019環(huán)境
2、安裝msys2工具
3、開(kāi)始菜單啟動(dòng)x86 Native Tools Command Prompt for VS2019
4、進(jìn)入msys2安裝目錄找到msys2_shell.cmd腳本,打開(kāi)修改?
?? ?rem set MSYS2_PATH_TYPE=inherit?刪掉rem,打開(kāi)環(huán)境變量的繼承
5、在第3步的終端里輸入msys2_shell.cmd -mingw32? 啟動(dòng)msys2的mingw32終端窗口
6、在窗口中敲cl正常執(zhí)行說(shuō)明VS2019的環(huán)境已經(jīng)繼承過(guò)來(lái)
如果是亂碼,則右擊終端窗口選擇
Options->Text->Locale選擇zh_CN
Options->Text->Character set->GBK
依賴(lài)環(huán)境安裝
pacman -S nasm
pacman -S yasm?? ?? ? ? ? ??#這兩個(gè)是匯編需要
pacman -S make cmake
pacman -S diffutils? ? ? ? ??#比較工具,ffmpeg?configure生成makefile時(shí)用到
pacman -S pkg-config? ? #找依賴(lài)使用
pacman -S git
無(wú)法翻墻則替換msys2數(shù)據(jù)源(類(lèi)似linux數(shù)據(jù)源):
依賴(lài)庫(kù)安裝
X264
使用上述方法進(jìn)入msys2終端
git下載源碼?? ??? ??? ?
CC=cl ./configure --enable-shared?--prefix=/usr/local? ?#指定編譯器和編成動(dòng)態(tài)鏈接庫(kù)
make -j8 && make install
fdk-aac
?(21條消息) Windows平臺(tái)下libfdk-aac庫(kù)的編譯方法_libfdk_aac_Jncryang的博客-CSDN博客文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-502039.html
git下載源碼到msys2家目錄,和x264放一起
version 2.0.1
進(jìn)入
x86 Native Tools Command Prompt for VS2019終端
nmake -f Makefile.vc
nmake -f Makefile.vc prefix=./install install
version 2.0.2
進(jìn)入
x86 Native Tools Command Prompt for VS2019終端
無(wú)
Makefile.vc文件,執(zhí)行cmake .生成vs?sln項(xiàng)目文件,用vs打開(kāi)編譯
或者
使用msys2終端
pacman -S?autoconf?automake libtool
./autogen.sh
CC=cl ./configure --enable-shared --prefix=/usr/local
? ? #指定編譯器和編成動(dòng)態(tài)鏈接庫(kù)
make -j8 && make install
X265
git clone multicoreware / x265_git / wiki / Home — Bitbucket
/home/admin/x265_git/build/msys-cl
mv /usr/bin/cmake.exe /usr/bin/ccmake.exe? #不能使用msys2中的cmake要使用msvc中的cmake,默認(rèn)可能是/usr/bin/cmake,改個(gè)名就默認(rèn)編程vs2019的cmake了
./make-Makefiles.sh
nmake install? #可能會(huì)出錯(cuò)因?yàn)榭截愖罱K文件沒(méi)有c盤(pán)的權(quán)限
D:\msys64\home\admin\x265_git\build\msys-cl\
cmake_install.cmake中的路徑C盤(pán)
改成D盤(pán)就好了
拷貝D盤(pán)的編譯生成的數(shù)據(jù)全部拷貝放到msys2中的?
/usr/local
ffmpeg-4.3.6
?CC=cl.exe ./configure --prefix=./install --toolchain=msvc --enable-shared --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265
ERROR: libfdk_aac not found
ffbuild/config.log查看錯(cuò)誤日志(亂碼的話(huà)使用vscode 的gbk2312編碼方式)
pkg-config --cflags --libs fdk-aac發(fā)現(xiàn)找不到fdk-aac.pc
$ echo $PKG_CONFIG_PATH
/mingw32/lib/pkgconfig:/mingw32/share/pkgconfig
把/usr/local/lib/pkgconfig文件夾移動(dòng)到
/mingw32/lib/即可,或者改
PKG_CONFIG_PATH環(huán)境變量添加/usr/local/lib路徑
$ pkg-config.exe --cflags --libs fdk-aac
-I/usr/local/include -L/usr/local/lib -lfdk-aac
ERROR: libx264 not found??
鏈接錯(cuò)誤沒(méi)找到libx264
libx264.lib.dll? ?改成??libx264.lib
ERROR: x265 not found using pkg-configx
libx265.lib? 改成??x265.lib
x265.pc中的路徑記得改成 prefix=/usr/local?之前默認(rèn)是C盤(pán)的(詳見(jiàn)X265?安裝說(shuō)明)
make -j8 && make install
調(diào)試
基礎(chǔ)項(xiàng)目環(huán)境搭建
創(chuàng)建以下目錄
bin/x86? ? ? 所有可執(zhí)行文件和dll文件??D:\msys64\home\admin\ffmpeg-4.3.6\install\bin中所有dll文件
include? ? ? 所有頭文件? ? ? ? ? ? ? ? ? ? ? ? D:\msys64\home\admin\ffmpeg-4.3.6\install\include
lib? ? ? ? ? ? ? 所有l(wèi)ib文件?? ??? ??? ?? ? ? ? ???D:\msys64\home\admin\ffmpeg-4.3.6\install\bin中所有l(wèi)ib文件
src? ? ? ? ? ? ?項(xiàng)目文件
tools? ? ? ? ? 源碼
doc? ? ? ? ? ? 文檔
上一章編譯windows ffmpeg文檔中的?最終輸出目錄
D:\msys64\home\admin\ffmpeg-4.3.6\install
lib和dll詳見(jiàn)博客
(22條消息) C/C++庫(kù)文件全了解(包含靜態(tài)庫(kù)、動(dòng)態(tài)庫(kù),包含windows、linux,包含dll、lib、so)_GT19930910的博客-CSDN博客
VS2019項(xiàng)目創(chuàng)建
vs2019創(chuàng)建新項(xiàng)目,空項(xiàng)目
位置指定上面的src,鉤子勾上
VS2019項(xiàng)目代碼
添加main.cpp
添加代碼
#include <iostream>
using namespace std;
extern "C"http://指定函數(shù)是c語(yǔ)言函數(shù),函數(shù)名不包含重載標(biāo)注
{
???????//引用ffmpeg頭文件
#include <libavcodec/avcodec.h>
}
//預(yù)處理指令導(dǎo)入庫(kù)
#pragma comment(lib, "avcodec.lib")
int main(int argc, char* argv[])
{
???????cout << "first ffmpeg" << endl;
???????cout << avcodec_configuration() << endl;
???????return 0;
}
vs2019配置
屬性-》c/c++-》常規(guī)-》附加包含目錄-》添加頭文件目錄? ..\..\include
屬性-》鏈接器-》常規(guī)-》附加庫(kù)目錄-》添加編譯lib文件目錄? ..\..\lib
屬性-》鏈接器-》輸入-》附加依賴(lài)項(xiàng)-》添加編譯需要的依賴(lài)lib? ?
#此條與代碼中的#include <libavcodec/avcodec.h>選一項(xiàng)配置即可
屬性-》常規(guī)-》輸出目錄-》..\..\bin\x86?指定可執(zhí)行文件目錄,此目錄之前已經(jīng)放置好所有的dll運(yùn)行依賴(lài)庫(kù)
VS2019調(diào)試
調(diào)試avcodec_configuration()函數(shù),f11能進(jìn)入源碼,因?yàn)橛心J(rèn)的編譯環(huán)境
會(huì)進(jìn)入D:\msys64\home\admin\ffmpeg-4.3.6\源碼中
若是別的環(huán)境,沒(méi)有此編譯環(huán)境,需要把源碼拷貝到tools中
解決方案-》屬性-》調(diào)試源文件
添加D:\ffmpeg-lesson\tools\ffmpeg-4.3.6源碼目錄
D:\msys64\home\admin\ffmpeg-4.3.6\中搜索*.pdb全部拷貝到D:\ffmpeg-lesson\bin\x86中
全部重新構(gòu)建再次調(diào)試即可進(jìn)入D:\ffmpeg-lesson\tools\ffmpeg-4.3.6的源碼中
到了這里,關(guān)于ffmpeg windows編譯及調(diào)試完整版的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!