18.MFC使用VLC库开发视频播放器指南

1.前言

上一章我们讲到了C/C++开发聊天室,主要运用的知识点是TCP网络编程。

而本章我将再讲解一个项目的开发实现,即我们常见的视频播放器,比如腾讯、爱奇艺、优酷等等,看看这些视频播放器都是怎么开发出来的?

放心,既然将本章放到了这个,那么就请相信你目前是有能力开发的。

本文的目的也并不是非要你能够自制播放器,只是为了给你拓宽知识面,比如,如何去使用别人写好的开源库?

毕竟只有站在巨人的肩膀上我们才能走的更远。

2.VLC库介绍

让我们现在立马自己开发一个能播放视频的功能库,那明显是不现实的,因为先不说目前视频格式就一大堆,比如mp4、AVI、WMV等等等等。

就算只开发一种格式播放的播放器,如mp4,那都不是一件简单的事情。

所以这种时候,肯定第一时间想到的就是使用现成的库,而VLC就是本章选择的视频播放器库。

这个库经过近20年的发展,目前已经是相当强悍的地步了,基本支持播放我们常见的所有视频格式。

库文件的下载地址为:这里

image-20231224100718468

我这里就直接选用最新版本的库文件好了,目前最新版本的是3.0.20

不过由于我们是开发windows视频播放器,所以肯定选择上面的两个,但目前已经普遍是64位电脑了,所以我这里也就直接选用win64的:

image-20231224100803638

然后我们要下载的是这个包含库文件的压缩包:

image-20231224100852193

解压后,可以看到目录:

image-20231224101030736

首先就是将plugins文件夹以及下方两个动态库libvlc.dlllibvlccore.dll复制到我们的项目文件夹中。

然后来到sdk文件夹中,将头文件以及库文件目录也要复制到我们的项目中:

image-20231224101118648

3.库函数详解及封装

3.1 初步使用

一般在正式使用一个库前,我们还需要先学会如何使用这个库里面包含的函数,最简单的方式当然是使用控制台了。

先随便建立一个测试用的控制台项目:

image-20231224101228824

然后,将上面的文件复制到当前项目中:

image-20231224101342151

接着,我们还要在项目里面添加它们:

#include"include/vlc/vlc.h"
#pragma comment(lib,"lib/libvlc.lib")
#pragma comment(lib,"lib/libvlccore.lib")

int main() {
	
}

但这样直接运行会报错,因为vlc.h这个头文件里面包含了很多其它头文件,它是一个vlc所有头文件的集合:

image-20231224101444691

但其使用的路径都为:vlc/...,所以就会找不到,因为按相对路径来看,这些头文件是在include文件夹下的vlc文件夹中,而且这些都是使用的尖括号<>,所以必须将vlc文件夹添加到VS的搜索目录中。

而vlc文件夹在include文件夹中,所以我们只需要将include文件夹添加到当前项目属性的包含目录中即可:

image-20231224101553030

这里要注意上面的配置,最好将releasedebug都添加上为好。

因为include目录也在vs的包含目录中,所以我们就可以使用尖括号,直接引用vlc/vlc.h了:

#include<vlc/vlc.h>
#pragma comment(lib,"lib/libvlc.lib")
#pragma comment(lib,"lib/libvlccore.lib")

int main() {
	
}

但运行依旧会报错,而且还是一堆莫名其妙的错误,这就是vlc这个库的一个小bug

image-20231224101713640

只需要我们在vlc.h头文件前面,添加一个定义类型就好了: