在 Windows 下使用 libVLC

proginn468312

共 1268字,需浏览 3分钟

 ·

2020-08-21 08:59

在前面,我们分享了很多 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·
 

浏览 249
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报