在 Windows 下使用 libVLC
共 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·