在 Windows 下使用 libVLC

proginn468312

共 1268字,需浏览 3分钟

 · 2020-08-21

在前面,我们分享了很多 VLC 理论相关的知识,现在是时候一展身手了!


由于 libVLC 是跨平台的,所以可以在 Windows、Linux 等多个平台上进行开发。本节我们将先从 Windows 开始着手,分享下如何在 VS 中使用 libVLC。在后面的文章中,会分享 VLC 在 Linux 下的编译,以及跨平台的环境配置、开发!



1

安装 SDK


在 Windows 平台,VLC 二进制安装程序不包含 libVLC SDK,因为对大多数用户而言,这会浪费带宽和空间。要获取 SDK 文件(即:头文件和库文件),可以从官网直接下载 7-ZIP 软件包,也可以由源码构建。


为了便于使用,进入VLC 下载页面(详见:https://download.videolan.org/pub/videolan/vlc/),直接下载编译好的压缩包:



完成之后,进行解压缩,然后就可以看到 SDK 了:



对于我们来说,只需要用到以下部分:


  • 头文件(.h):位于 sdk/include 目录下

  • 库文件(.lib):位于 sdk/lib 目录下

  • 动态链接库和插件(.dll):libvlc.dll、libvlccore.dll 以及 plugins 目录下的所有文件。



2

项目配置


打开 VS,新建一个工程。然后,右键项目,打开属性窗口进行项目配置。


首先,选择“C/C++ -> 常规”,将 sdk/include 添加到“附加包含目录”中:



然后,选择“连接器 -> 常规”,将 sdk/lib 添加到“附加库目录”中:



最后,选择“连接器 -> 输入”,将库文件 libvlc.lib、libvlccore.lib 添加到“附加依赖项”中:



经过以上几步,配置就基本完成了,下面来写一个简单的示例程序。



3

示例程序


既然是测试程序,就应该尽可能的简洁,能保证环境正常使用就足够了。


好了,来一个加强版的“Hello, World!”。代码比较简单,一起来看看吧:


#include 

using namespace std;

// 避免 ssize_t 引发的错误
#if defined(_MSC_VER)
#include 
typedef SSIZE_T ssize_t;
#endif

#include 

int main()
{
    // 获取 libVLC 的版本
    const char *version = libvlc_get_version();
    // 获取编译 libVLC 的编译器版本
    const char *compiler = libvlc_get_compiler();
    // 获取 libVLC 的变更集
    const char *changeset = libvlc_get_changeset();

    cout << "Hello, libVLC!" << endl;
    cout << "Version is: " << version << endl;
    cout << "Compiler is: " << compiler << endl;
    cout << "Changeset is: " << changeset << endl;

    getchar();

    return 0;
}


在这里,我们包含了 vlc.h,它是 libVLC 中的一个全局头文件,其中包含了其他常用的头文件(例如:libvlc.h、libvlc_media_player.h 等),这在以后会经常用到。随后,就可以调用相应的接口获取 libVLC 的版本、编译器等信息了。


最后,在一些高版本的 VS 中,可能会出现以下错误:


error: C2065: “libvlc_media_read_cb”: 未声明的标识符


这可以通过上述代码中的 typedef 来解决。


需要注意的是,在运行程序之前,记得将 libvlc.dll、libvlccore.dll 以及 plugins 目录拷贝至程序所在目录。



大功告成,到这里就说明环境没有问题了!


·END·
 

浏览 182
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报