《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译

您所在的位置:网站首页 笔记目录结构 《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译

《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译

2023-08-19 05:43| 来源: 网络整理| 查看: 265

系列文章目录

《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文件:

2.3、sdl2

下载地址: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)

  

2.4、srtp

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 )

 

2.5、faac

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文件中设置程序启动时的参数。

​​

{ "version": "0.2.1", "defaults": {}, "configurations": [ { "type": "default", "project": "CMakeLists.txt", "projectTarget": "test_player.exe (E:\\work\\openSource\\ZLMediaKit\\release\\windows64\\Debug\\test_player.exe)", "name": "test_player.exe (E:\\work\\openSource\\ZLMediaKit\\release\\windows64\\Debug\\test_player.exe)", "args": [ "rtsp://admin:[email protected]/media/video2", "0" ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "MediaServer.exe (E:\\work\\openSource\\ZLMediaKit\\release\\windows64\\Debug\\MediaServer.exe)", "name": "MediaServer.exe (E:\\work\\openSource\\ZLMediaKit\\release\\windows64\\Debug\\MediaServer.exe)" } ] }

注意上边的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