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

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:123456@192.168.31.66/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:123456@192.168.31.66/media/video2。

 如果程序无法运行,可能是库文件和exe程序不在同一个目录下,将我们添加的所有依赖库的dll文件拷贝一份到exe程序同级目录下即可。

3.2、通过sln解决方案打开

如果因为环境配置问题,1方式无法使用,也可以通过sln来打开项目。该方式需要首先使用cmake工具生成sln文件。可以参见《ZLToolKit源码学习笔记》(1)VS2019源码编译

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦时小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值