《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译 |
您所在的位置:网站首页 › 笔记目录结构 › 《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译 |
系列文章目录
《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译(本文) 前言学习源码前,需要先让程序跑起来,本节我们学习下在windows下如何使用Visual Studio 2022来编译ZLMediaKit。 它的依赖库ZLToolKit源码学习参见《ZLToolKit源码学习笔记》。 目录系列文章目录 前言 一、源码下载 二、依赖库下载 2.1、openssl 2.2、ffmpeg 2.3、sdl2 2.4、srtp 2.5、faac 三、VS2022编译 3.1、通过cmake直接打开 3.2、通过sln解决方案打开 一、源码下载github可能访问不了或者下载速度太慢,这里本人使用码云下载,地址:https://gitee.com/xia-chu/ZLMediaKit.git windows git客户端在这里下载,https://github.com/git-for-windows/git/releases/download/v2.35.1.windows.2/Git-2.35.1.2-64-bit.exe,在git-bash中执行以下命令: # git clone https://gitee.com/xia-chu/ZLMediaKit.git # cd ZLMediaKit # git submodule update --init 二、依赖库下载本人测试使用的是64位程序,所以这里所有用到的依赖库均为64位版本。(所有的库都不是必须的,可以根据需要自行安装)。 2.1、openssl下载地址:http://slproweb.com/download/Win64OpenSSL-3_0_1.exe 下载完成后傻瓜式安装即可。ZLMediaKit中无需配置,Cmake会自己找到我们安装的路径。(通过默认的FindOpenSSL.cmake) 2.2、ffmpeg下载地址:https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-5.0-full_build-shared.7z 使用ffmpeg5.0,下载后的库放到3rdpart目录下: 修改ZLMediaKit/cmake/FindAVCODEC.cmake文件中find_path和find_library的路径: find_path(AVCODEC_INCLUDE_DIR NAMES libavcodec/avcodec.h PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/ffmpeg/include) find_library(AVCODEC_LIBRARY NAMES avcodec PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/ffmpeg/lib) 修改ZLMediaKit/cmake/FindAVUTIL.cmake文件中find_path和find_library的路径: find_path(AVUTIL_INCLUDE_DIR NAMES libavutil/avutil.h PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/ffmpeg/include) find_library(AVUTIL_LIBRARY NAMES avutil PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/ffmpeg/lib) 修改ZLMediaKit/cmake/FindSWRESAMPLE.cmake文件中find_path和find_library的路径: find_path(SWRESAMPLE_INCLUDE_DIR NAMES libswresample/swresample.h PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/ffmpeg/include) find_library(SWRESAMPLE_LIBRARY NAMES swresample PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/ffmpeg/lib)
由于本人使用的是ffmpeg5.0版本,作者使用的应该是3.x的版本,这里需要修改下新版本的编译错误,比较暴力,直接注释掉废弃的接口。 修改ZLMediaKit/player/FFMpegDecoder.cpp文件: 下载地址:http://www.libsdl.org/release/SDL2-devel-2.0.20-VC.zip 下载后的库放到3rdpart目录下: 修改ZLMediaKit/cmake/FindSDL2.cmake文件中find_path和find_library的路径: find_path(SDL2_INCLUDE_DIR NAMES SDL2/SDL.h HINTS SDL2 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/sdl2/include) find_library(SDL2_LIBRARY NAMES SDL2 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/../3rdpart/sdl2/lib/x64)
srtp需要自行编译,可以在github下载,本人使用的是2.4.2版本,地址:https://codeload.github.com/cisco/libsrtp/zip/refs/tags/v2.4.2 VS2022,选择打开cmake项目,选中CMakeLists.txt文件后打开。默认是debug版本的,增加一个release版本的配置。
切换到release编译,勾选编译动态库和支持openssl,保存,重新生成项目,安装libsrtp: 最后把libsrtp-2.4.2/out/install/x64-Release目录下生成的文件拷贝到ZLMediaKit的3rdpart目录下: 修改ZLMediaKit/cmake/FindSRTP.cmake文件中的路径: set(_SRTP_ROOT_PATHS ${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/srtp2 ) find_path(SRTP_INCLUDE_DIRS NAMES srtp2/srtp.h HINTS ${_SRTP_ROOT_PATHS} ${SRTP_PREFIX} PATH_SUFFIXES include ) github地址:https://github.com/knik0/faac 使用Git Bash拉取代码: git clone https://github.com/knik0/faac.git通过faac\project\msvc\faac.sln直接使用VS打开解决方案。faac当前已经支持到VS2019,使用VS2022打开时直接提升即可。切换到release版本,仅编译dll项目。 在faac\project\msvc\bin\Release目录下将lib和dll文件拷贝到ZLMediaKit\3rdpart\faac\lib目录下,并修改文件名,同时将头文件拷贝到include目录下: 修改ZLMediaKit/cmake/FindFAAC.cmake文件中的路径: find_path(FAAC_INCLUDE_DIR NAMES faac.h PATHS ${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/faac/include ) find_library(FAAC_LIBRARY NAMES faac PATHS ${CMAKE_CURRENT_SOURCE_DIR}/3rdpart/faac/lib ) ZLMediaKit\CMakeLists.txt中使能FAAC: option(ENABLE_FAAC "Enable FAAC" true)至此,依赖库配置完成,最终所有涉及修改或新增的文件如下: 以上配置已经全部上库到https://gitee.com/qinshixiao/ZLMediaKit,可以直接下载使用。 三、VS2022编译 3.1、通过cmake直接打开打开本地文件夹,选定ZLMediaKit后打开,VS会自动识别出cmake项目。
也可以手动选择打开cmake项目,选中CMakeLists.txt文件后打开。 项目装载完成后,即可直接编译运行,比如测试test_player.exe程序,配置默认启动参数,测试rtsp拉流。在launch.vs.json文件中设置程序启动时的参数。 注意上边的args参数,本人测试的是宇视IPC的rtsp拉流地址: rtsp://admin:[email protected]/media/video2。 如果程序无法运行,可能是库文件和exe程序不在同一个目录下,将我们添加的所有依赖库的dll文件拷贝一份到exe程序同级目录下即可。 3.2、通过sln解决方案打开如果因为环境配置问题,1方式无法使用,也可以通过sln来打开项目。该方式需要首先使用cmake工具生成sln文件。可以参见《ZLToolKit源码学习笔记》(1)VS2019源码编译。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |