以下为我的实际配置过程:
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,如下图红框位置所示:
2.配置环境变量
配置一个环境变量,名称为VLC_PLUGIN_PATH,指向C:\Program Files (x86)\VideoLAN\VLC\plugins
3.打开vlc-qt的CMakeList.txt文件,增加VC编译时的开关参数:
打开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文件,增加指定的参数信息,具体修改内容如下:
如下面这样:
再次运行cmake-gui,file->delete cache,重新配置后发现加载的全是mingw64的qt库,不是我的vc编译静态库,还得改,再次修改cmakelist.txt,设定QT库地址,内容如下:
上面的d:/qt/qt5_15_msvc_static_x86就是我要用的静态编译32位qt5路径,cmake-gui再次delete cache,reload重新配置以后终于不报错了:
5.修改上图中红框中的两个位置,在文件名前面增加lib,即将原来的vlccore.lib改为libvlccore.lib,将原来的vlc.lib改为libvlc.lib,然后点击Generate,再点击Open Project,在vs2019里面准备下一步的编译过程,直接编译,报错如下:
右键点击各工程名称,选择属性-》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。