最新libvlc4.0+Qt设计视频播放器

开源
目前VLC已经推出了全新的4.0版本,解决了很多3.0里一直存在的问题。并且4.0的VLC支持提供了渲染接口,支持opengl、D3D渲染,二次开发非常方便,源码里提供了很多例子,方便开发者二次开发参考,有Qt的、SDL的、GTK的、OpenGL渲染的、D3D渲染的等等。

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

一、前言

VLC是一款简单且非常优秀的免费开源软件,所有开源软件的好处他都有,而且是为数不多开源并长期更新维护的播放器,兼容性等各个方面都很好。VLC提供了libvlc库,可以很方便进行二次开发。

稳定版本,3.0 版本官网:https://www.videolan.org/。

目前VLC已经推出了全新的4.0版本,解决了很多3.0里一直存在的问题。并且4.0的VLC支持提供了渲染接口,支持opengl、D3D渲染,二次开发非常方便,源码里提供了很多例子,方便开发者二次开发参考,有Qt的、SDL的、GTK的、OpenGL渲染的、D3D渲染的等等。

VLC最新的4.0版本官网首页:https://nightlies.videolan.org/。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

二、VLC4.0源码和库文件下载

1、SDK库文件下载

官网地址:https://nightlies.videolan.org/。

打开网页,可以看到各种环境的下载选项。我的开发环境是在windows下,我这里就分别下载32位和64位的SDK文件。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

从时间上来看,VLC更新的频率还是很高的。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

下载win64的包,直接下载7z包就行,解压就能直接使用。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

下载win32的包:

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

这是下载好的win32和win64的库文件:

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

打开解码的目录,可以看到sdk目录,这个sdk目录里有include和lib目录,二次开发需要用到。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

外面的libvlc.dll和 libvlccore.dll 库文件、plugins插件目录是运行过程中需要使用文件。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

2、vlc源码下载

通过git克隆一份最新的源码下来。 源码里包含了vlc4.0的使用示例代码,通过例子代码可以快速运行。

git clone https://code.videolan.org/videolan/vlc.git

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

克隆成功: 在vlc\doc\libvlc 目录下有很多例子。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

这里面可以看到QtGL和QtPlayer两个Qt例子,我这里就分别运行这两个例子完成测试。

QtGL是采用OpenGL渲染,QtPlayer是窗口句柄嵌入方式渲染。

3、拷贝库文件

为了方便运行例子代码,将刚才下载下来的库文件里的lib文库、插件目录、dll文件拷贝到项目目录下,建立一个vlc40_win32和vlc40_win64目录。

以QtGL项目为例:

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

将下载的压缩包解码目录下的相关文件拷贝过来:

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

拷贝到项目下:

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

64位的库操作方法一样:

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

4、运行项目(QtGL)

(1)打开项目

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

(2)修改pro文件

根据32位编译器 和 64位编译器分别设置库文件和头文件的路径。

TEMPLATE = app
TARGET = qtglvlc

CONFIG += c++14 #link_pkgconfig force_debug_info
PKGCONFIG = libvlc
QT += widgets
SOURCES += main.cpp qtvlcwidget.cpp
HEADERS += qtvlcwidget.h
#打印当前Qt构建套件的信息
message($$QT_ARCH)
#表示32位的构建套件
contains(QT_ARCH, i386)
{
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include #VLC头文件包含目录
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include\vlc #VLC头文件包含目录
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlc.lib #VLC库文件路径
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlccore.lib
}
#表示64位的构建套件
contains(QT_ARCH, x86_64)
{
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include #VLC头文件包含目录
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include\vlc #VLC头文件包含目录
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlc.lib #VLC库文件路径
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlccore.lib
}

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

5、编译运行(QtGL)

(1)修改视频路径,方便测试

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

glWidget->playMedia()里调用的是libvlc_media_new_location函数打开媒体文件,libvlc_media_new_location 函数用于打开协议,这个函数更加强大,可以支持很多协议,本地视频也可以使用该函数打开,更加通用一点,而且使用该函数时,路径斜杠使用常规左斜杠就行(linux风格),不需要进行转换。

下面介绍几个常用的使用示例:

打开本地文件: libvlc_media_new_location (inst, "file:///D:/work/test.mp4");
打开RTSP流媒体:libvlc_media_new_location (inst, "rtsp://10.0.0.4:554/cam");
打开RTMP流媒体:libvlc_media_new_location (inst, "rtmp://10.0.0.4:554/cam");
播放当前桌面屏幕: libvlc_media_new_location (inst, "screen://");

(2)编译器选择

我当前采用的编译器是,MSVC_VS2017_32位 和 MSVC_VS2017_64位 。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

(3)构建项目

点击左下角垂直构建项目。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

构建完成之后,将vlc的插件目录和相关的dll文件拷贝到构建的影子目录下。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

(4)最终运行效果

拷贝之后,再点击左下角的绿色三角形运行程序。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

6、运行项目(QtPlayer)

(1)打开项目

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

(2)修改pro文件

#打印当前Qt构建套件的信息
message($$QT_ARCH)

#表示32位的构建套件
contains(QT_ARCH, i386)
{
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include #VLC头文件包含目录
INCLUDEPATH += $$PWD\vlc40_win32\sdk\include\vlc #VLC头文件包含目录
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlc.lib #VLC库文件路径
LIBS +=$$PWD\vlc40_win32\sdk\lib\libvlccore.lib
}

#表示64位的构建套件
contains(QT_ARCH, x86_64)
{
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include #VLC头文件包含目录
INCLUDEPATH += $$PWD\vlc40_win64\sdk\include\vlc #VLC头文件包含目录
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlc.lib #VLC库文件路径
LIBS +=$$PWD\vlc40_win64\sdk\lib\libvlccore.lib
}

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

(3)修改代码

例子代码里采用libvlc_media_new_path 函数加载媒体文件,需要转换一下路径的斜杠。

windows下使用libvlc_media_new_path 函数传入的路径要注意斜杠问题,必须保证传入的是双右斜杠,如果默认选择的路径是左斜杠,可以使用std::replace函数转换一下。

std::replace(fileOpen.begin(), fileOpen.end(), QChar('/'), QChar('\\'));

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

(4)运行项目

注意:需要将VLC的插件目录和相关的dll文件拷贝到运行目录,否则程序无法正常运行,具体步骤参考前面的2.5小节说明。

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

加载视频播放:

#创作者激励#  最新libvlc4.0+Qt设计视频播放器-开源基础软件社区

想了解更多关于开源的内容,请访问:

​51CTO 开源基础软件社区​

​https://ost.51cto.com​

责任编辑:jianghua 来源: 51CTO 开源基础软件社区
相关推荐

2011-06-13 09:33:04

2011-06-27 11:23:21

Qt 音乐播放器

2022-08-16 17:37:06

视频播放器鸿蒙

2015-05-21 15:25:42

VLC播放器

2011-07-20 16:21:20

iPhone 视频 播放器

2022-06-21 14:41:38

播放器适配西瓜视频

2011-09-06 11:25:08

2011-09-06 10:46:19

QT播放器

2011-06-24 10:21:11

Qt phonon 多媒体

2021-10-19 14:27:07

鸿蒙HarmonyOS应用

2021-10-21 16:00:07

鸿蒙HarmonyOS应用

2022-11-12 08:26:04

VLC视频播放器裁剪视频

2018-05-25 14:37:58

2011-09-06 11:08:21

QT播放器Mplayer

2015-09-01 16:48:44

ios暴风视频播放器

2023-03-29 09:32:15

视频播放器应用鸿蒙

2023-08-26 19:07:40

VLC旋转视频

2023-03-28 09:38:34

开发应用鸿蒙

2023-03-28 09:44:02

开发应用鸿蒙

2023-03-29 09:37:49

视频播放器应用鸿蒙
点赞
收藏

51CTO技术栈公众号