天天看点

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

文章目录

      • 准备工作
      • vlc-qt的编译
      • vlc-qt的使用

最近要在程序中实现一个能够播放本地视频的内嵌播放器,试过用ffmpeg、QtAV来实现,不是播放的速度有问题,就是在播放FLV视频文件时无法调整进度,因此寄希望于VLC-Qt。下面是我在windows10 VS2019环境下编译VLC-Qt的详细步骤

准备工作

编译环境

windows10

VS2019

Qt 5.15.0

vlc-3.0.16

vlc-qt-1.2.0

cmake-3.19.8-win64-x64

下载源码包

我是用Git工具直接下载的,打开Git Bash,键入

git clone git://github.com/vlc-qt/vlc-qt.git

进行克隆,完成后源码默认被保存在

C:\Users\xxx\vlc-qt

路径下

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

打开VERSION文件可以看到所下载的vlc-qt的版本号,这里是1.2.0

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

也可以直接到github上下载源码包,下载地址:https://github.com/vlc-qt/vlc-qt

下载VLC库

下载地址:http://download.videolan.org/vlc/

这里我选择的是目前最新的3.0.16版本,根据需要选择要下载的是32位还是64位,我的目标是生成64位的vlc-qt,因此下载的是64位库。

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

下载cmake

cmake是用来生成编译代码的,可以到cmake官网进行下载,下载地址:https://cmake.org/download/

这里我下载的是cmake-3.19.8-win64-x64.zip

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

vlc-qt的编译

部署VLC环境

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

【说明】以下提到的Qt安装目录是我个人的安装目录,为

C:\Qt\Qt5.15\5.15.0\msvc2019_64

  • 将plugins文件夹和libvlc.dll、libvlccore.dll复制到Qt安装目录下的bin目录中
  • 将sdk/include/vlc目录复制到Qt安装目录下的include目录中
  • 将sdk/lib下的所有.lib文件复制到Qt安装目录下的lib目录中
  • 打开我的电脑→属性→高级系统设置→环境变量→系统变量,新建一个变量名为

    VLC_PLUGIN_PATH

    ,值为

    plugins目录所在路径

    的系统变量
    VLC-Qt的编译与使用 windows10+VS2019+qt5.15

    生成vs2019项目

    到cmake的bin目录下打开cmake-gui.exe,进行配置

    在where is the source code处选择vlc-qt源码所在路径

    在where to build the binaries处选择vlc-qt编译文件要存放的路径(这个文件夹是临时建的)

    【注意】这里最好将编译目录应该建在源码路径下,以防在生成INSTALL项目时会有问题!!!

    VLC-Qt的编译与使用 windows10+VS2019+qt5.15
    点击“Configure”,选择生成的工程的类型,这里我选择的是Visual Studio 16 2019,64位版本。
    VLC-Qt的编译与使用 windows10+VS2019+qt5.15
    点击“Finish”,出现如下配置信息,进行检查
    VLC-Qt的编译与使用 windows10+VS2019+qt5.15
    需要特别注意的有以下几个配置项
  • CMAKE_INSTALL_PREFIX:最终编译结果输出的路径,建议不要放在C盘,因为在makeinstall时,会因为权限不够造成安装时不成功,这里我将路径改为D:\Program Files\VLC-Qt
  • LIBVLCCORE_LIBRARY:将"vlccore.lib"改为"libvlccore.lib"
  • LIBVLC_LIBRARY:将"vlc.lib"改为"libvlc.lib"
  • 为了防止生成debug和release库时,不带d的库被覆盖掉,还需要增加一个名为

    CMAKE_DEBUG_POSTFIX

    的cmake环境变量,点击“Add Entry”,
    VLC-Qt的编译与使用 windows10+VS2019+qt5.15

最终配置如下

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

点击“Configure”配置成功后,点击“Generate”生成VS2019工程。现在可以看到vlc-qt的编译目录下生成了很多文件与工程。

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

用文本方式打开cmake_install.cmake文件,找到下列语句,将include替换为bin,这才是正确的路径

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

用VS2019打VLC-Qt.sln,我要生成的是64位的Release库,所以这里需要对解决方案的配置和平台进行修改。看到左侧的工程目录,分别修改

Core、PluginQml、Qml、Widgets

的工程属性。

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

以Core项目为例,右键项目属性→配置属性→链接器→命令行,在其他选项中添加

/SAFESEH:NO

,其他项目也是进行相同的操作。

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

完成以上设置后,在

ALL_BUILD

工程上右击生成,此时出现报错

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

查看错误列表

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

问题一: “libvlc_media_read_cb”: 未声明的标识符

解决方法:在vlc.h 文件中 添加 typedef __int64 ssize_t; 即可解决此问题

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

解决这个问题后,重新生成,前4条错误信息都消失了。

问题二:“poll”: 找不到标识符

解决方法:双击错误信息,定位到poll代码区,会看到一个poll的宏定义,需要把这个宏定义剪贴到 poll代码区的上方。

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

修改后

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

解决完这个问题后,重新生成项目,不再报错。

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

其它可能遇到的问题可以参考这位博主整理的

感谢大佬对错误及其解决方法进行详细的记录,让我少走不少弯路 OTL

ALL_BUILD

项目生成成功后,生成

INSTALL

项目,到这一步又遇到

MSB307 命令"setlocal

错误

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

查阅资料,基本上都是介绍这几种方法

  • 尝试在进行cmake配置时,将build目录创建在源码目录下,而不是源码目录之外,然后重新配置、生成,但这个方法对我遇到的问题无效。
  • 用管理员身份运行VS2019,重新编译,这个方法依然无效
  • 我原本就是编译的release版本,所以改用release编译这个方法也无效
  • INSTALL项目属性→配置属性→生成事件→生成后事件→命令行,给cmake.exe路径加上双引号,无效

最后,在一篇博客的评论中找到解决我问题的方法:INSTALL项目属性→配置属性→生成事件→生成后事件,将“在生成中使用”改为“否”

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

清理项目并重新生成,成功!!!

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

现在就可将库提取到在CMake中设置的安装目录中去了

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

vlc-qt的使用

得到我们需要的库文件之后,下一步就是如何在Qt中使用它们。

环境部署

【说明】以下提到的Qt安装目录是我个人的安装目录,为

C:\Qt\Qt5.15\5.15.0\msvc2019_64

  • 将bin目录下的所有dll文件拷贝到Qt安装目录的bin目录下
  • 将include目录下的三个文件夹VLCQtCore、VLCQtQml、VLCQtWidgets拷贝到Qt安装目录的include目录下
  • 将lib目录下cmake文件夹中的四个文件夹VLCQt、VLCQtCore、VLCQtQml、VLCQtWidgets拷贝到Qt安装目录的lib/cmake目录下
  • 将lib目录下所有的lib文件拷贝到Qt安装目录的lib目录下
  • 将qml目录下的文件夹VLCQt拷贝到Qt安装目录的qml目录下

项目中使用

下面我将用vlc-qt官方提供的示例来测试编译好的库是否能正常使用,点此自取,提取码:sjk8

用Qt打开simple-player.pro,将之前编译好的VLCQtCore.lib和VLCQtWidgets.lib拷贝到项目目录下(其实放在哪里都可以,只要在src.pro文件中添加库的时候能对应好就行)

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

src.pro文件中LIBS语句如下

LIBS       += -L$$PWD/../ -lVLCQtCore -lVLCQtWidgets
           

进行Release编译,效果如下

VLC-Qt的编译与使用 windows10+VS2019+qt5.15

这里我播放的是FLV视频文件,与QtAV不同的是,VLC-Qt不仅支持MP4视频文件进度调整,还支持FLV视频文件进度调整,完美符合我的需求,到这里就大功告成了(๑•̀ㅂ•́)و✧

【参考文章】

QT5.9.3 使用vlc-qt

vlc-qt —— Windows下编译(最新)

Windows平台vlc-qt的编译和使用

VS2015+QT5.9.3+vlc-qt 完全编译

vlc-qt编译VS2017+QT5.9.0

继续阅读