以下为我的实际配置过程:

1.libvlc sdk下载

  官网里面确实有libvlc项目,但是找不到适配msvc的预编译.lib库文件的下载包,还是需要参考人家博文里面的路径,到vlc官方去下载压缩包,不过现在都2021年了,可以下载最新版的压缩包了,地址是:​​http://download.videolan.org/vlc/last/win32/​​ ,

下载完成以后解压缩,复制文件到C:\Program Files (x86)\VideoLAN\VLC目录,主要去掉文件名称里面多余的软件版本号。为啥非要这么复制呢?因为vlc-qt里面的cmake文件在windows平台默认去到C:\Program Files (x86)\VideoLAN\VLC下面找sdk,如下图红框位置所示:

vlc-qt集成使用备忘_码流

 

2.配置环境变量

  配置一个环境变量,名称为VLC_PLUGIN_PATH,指向C:\Program Files (x86)\VideoLAN\VLC\plugins

3.打开vlc-qt的CMakeList.txt文件,增加VC编译时的开关参数:

if(WIN32)
if(MSVC)
# disable SAFESEH
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D \"SAFESEH:NO\"")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
endif(MSVC)
endif(WIN32)

  打开vlc-qt\config\Dependencies.cmake文件,修改里面的qt版本和自己使用的一致。

 

4.运行cmake-gui进行构建的时候,如果提示如下的错误信息:

Building VLC-Qt 1.2.0

Git revision: 9b2f561

Selecting Windows SDK version 8.1 to target Windows 6.1.7601.

The C compiler identification is unknown

The CXX compiler identification is unknown

CMake Error at CMakeLists.txt:32 (PROJECT):
No CMAKE_C_COMPILER could be found.
 

CMake Error at CMakeLists.txt:32 (PROJECT):
No CMAKE_CXX_COMPILER could be found.

打开cmakeerror.log,里面有这样的错误提示:

  LINK : fatal error LNK1104: 无法打开文件“ucrtd.lib”

出现这个错误的原因是我的开发机器是win7系统,cmake-gui默认按照开发机器的版本去找对应的window kit sdk了,解决办法是再次修改vlc-qt\cmakelist.txt文件,增加指定的参数信息,具体修改内容如下:

set(CMAKE_SYSTEM_VERSION 10.0.17763.0)

  如下面这样:

vlc-qt集成使用备忘_码流_02

再次运行cmake-gui,file->delete cache,重新配置后发现加载的全是mingw64的qt库,不是我的vc编译静态库,还得改,再次修改cmakelist.txt,设定QT库地址,内容如下:

set(CMAKE_PREFIX_PATH D:/Qt/qt5_15_msvc_static_x86)

上面的d:/qt/qt5_15_msvc_static_x86就是我要用的静态编译32位qt5路径,cmake-gui再次delete cache,reload重新配置以后终于不报错了:

vlc-qt集成使用备忘_vlc-qt_03

5.修改上图中红框中的两个位置,在文件名前面增加lib,即将原来的vlccore.lib改为libvlccore.lib,将原来的vlc.lib改为libvlc.lib,然后点击Generate,再点击Open Project,在vs2019里面准备下一步的编译过程,直接编译,报错如下:

vlc-qt集成使用备忘_码流_04

右键点击各工程名称,选择属性-》c/c++语言-》将wchart_t视为内置类型改成否,c/c++->代码生成-》运行库改成和自己的QT编译时一样,我最早是按照/MTD编译的,需要改一下,最后回到常规-》配置类型,修改成与QT编译方式一样的,如我的是静态编译的,就改成静态库(.lib),再次编译后成功,依次对所有工程都修改编译成功后,最后运行INSTALL工程,整体安装到目标路径。

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

顺便把mingw32下面的编译过程记录一下:

在vlc-qt目录里面,mkdir build,mkdir install 建立这两个目录。

进入build目录,新建一个mybuild.bat,配置里面的内容如下:

set path=D:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin;D:\Qt\Qt5.14.2\Tools\mingw730_32\bin;%PATH%;
cmake .. -G"MinGW Makefiles"  -DCMAKE_INSTALL_PREFIX="../install"  -DLIBVLC_LIBRARY="D:/cpp_tools/vlc-3.0.12-win32/vlc/sdk/lib/libvlc.lib"   -
DLIBVLCCORE_LIBRARY="D:/cpp_tools/vlc-3.0.12-win32/vlc/sdk/lib/libvlccore.lib" -DLIBVLC_INCLUDE_DIR="D:/cpp_tools/vlc-3.0.12-win32/vlc/sdk/include/vlc"

注意上面一共是两行内容,第二行内容自己处理好换行,第一行的set path是为了引入32位mingw编译环境,第二行里面的libvlc.lib路径等都要搞对。

运行mybuild.bat,一般情况下都能正常编译,要是不能编译或者老是提示什么Undefined reference to之类的错误,可能是没有正确配置Tools\mingw下面的路径造成的。

之后运行mingw32-make进行编译,编译完成后mingw32-make install进行安装,完事。

测试一下效果吧 ,左侧的图像是vlc-qt播放的rtsp码流,右侧的图像是qtav播放的rtsp码流,对比来看的话vlc里面去放rtsp码流还是很省心的,而且这玩意还支持windows xp。

vlc-qt集成使用备忘_vlc-qt_05