libVLC windows开发环境搭建

2024-03-20 02:52

本文主要是介绍libVLC windows开发环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.简介

LibVLC是一个强大的开源库,它构成了VLC媒体播放器的核心部分。

LibVLC提供了一系列的功能接口,使得VLC能够处理流媒体的接入、音频和视频输出、插件管理以及线程系统等核心任务。

  • 跨平台性:VLC作为一个跨平台的多媒体播放器,可以运行在多种操作系统和计算机体系结构上。
  • 协议支持:LibVLC不仅支持播放本地视频文件,还支持播放基于各种流媒体协议(如RTMP、RTSP)的视频。
  • API一致性:在不同操作系统下,如Linux和Windows,LibVLC提供的API基本一致,这为开发者跨平台开发提供了便利。
  • 扩展性:VLC作为一个流媒体服务器和多媒体框架,是可扩展的,能够通过LibVLC提供的API接口添加新组件和功能。

2.环境搭建

下载地址Index of /pub/videolan/vlc/last/

我这里使用的是64位的库。

下载完成解压文件。

主要需要plugins文件和sdk路径下的lib和include目录。

 新建vs工程,新建目录3rd,将sdk路径下的lib和include目录复制到3rd目录下。

 配置包含目录和库目录,如下图所示。

 至此,开发环境已经搭建好了。

3.常用接口 

LibVLC提供了一系列接口,用于实现多媒体播放和管理功能。以下是一些常用的接口及其作用: 

  • libvlc_new - 创建一个新的libVLC实例。
  • libvlc_release - 释放libVLC实例。
  • libvlc_media_player_new - 创建一个新的媒体播放器对象。
  • libvlc_media_player_release - 释放媒体播放器对象。
  • libvlc_media_new_path / libvlc_media_new_location - 从本地文件路径或网络位置创建媒体对象。
  • libvlc_media_release - 释放媒体对象。
  • libvlc_media_player_set_media - 将媒体对象与播放器关联。
  • libvlc_media_player_play - 开始播放媒体。
  • libvlc_media_player_pause - 暂停播放。
  • libvlc_media_player_stop - 停止播放。
  • libvlc_media_player_set_hwnd - 设置视频输出窗口(适用于Windows)。
  • libvlc_media_player_get_time - 获取当前播放时间。
  • libvlc_media_player_set_time - 设置播放位置(时间)。
  • libvlc_media_player_get_length - 获取媒体的长度。
  • libvlc_media_player_get_state - 获取当前播放器状态。
  • libvlc_audio_set_volume - 设置音量。
  • libvlc_audio_get_volume - 获取音量。
  • libvlc_media_player_is_playing - 检查媒体是否正在播放。
  • libvlc_media_parse - 解析媒体以获取更多信息(如元数据、跟踪信息等)。

4.示例

#pragma once#include <QtWidgets/QWidget>
#include "ui_showWidget.h"
#include <QMenu>
#include <QActionGroup>
#include <vlc/vlc.h>
#include <QDebug>
#include <QFileDialog>
#include <QThread>class showWidget : public QWidget
{Q_OBJECTpublic:showWidget(QWidget *parent = nullptr);~showWidget();private slots:void slotOpenFile();void slotPlay();private:static void vlcEvents(const libvlc_event_t *ev, void *param);private:Ui::showWidgetClass ui;private:libvlc_instance_t *vlc_base = nullptr;libvlc_media_t *vlc_media = nullptr;libvlc_media_player_t *vlc_mediaPlayer = nullptr;QActionGroup *m_TimeSpeedGrp = nullptr;QMenu		m_SpeedMenu;static showWidget *pThis;
};#include "showWidget.h"
#include <QTimer>#pragma execution_character_set("utf-8")showWidget* showWidget::pThis = nullptr;showWidget::showWidget(QWidget *parent): QWidget(parent)
{ui.setupUi(this);this->setWindowTitle("视频播放器");connect(ui.btnOpen, &QPushButton::clicked, this, &showWidget::slotOpenFile);connect(ui.btnPlay, &QPushButton::clicked, this, &showWidget::slotPlay);
}showWidget::~showWidget()
{libvlc_release(vlc_base); //减少libvlc实例的引用计数,并销毁
}void showWidget::slotOpenFile()
{/*选择文件*/QString filename = QFileDialog::getOpenFileName(this, "选择打开的文件", "D:/", tr("*.*"));std::replace(filename.begin(), filename.end(), QChar('/'), QChar('\\'));vlc_base = libvlc_new(0, NULL);vlc_media = libvlc_media_new_path(vlc_base, filename.toUtf8().data());if (!vlc_media) {return;}vlc_mediaPlayer = libvlc_media_player_new_from_media(vlc_media);if (!vlc_mediaPlayer) {return;}libvlc_media_parse(vlc_media);libvlc_event_manager_t *em = libvlc_media_player_event_manager(vlc_mediaPlayer);libvlc_event_attach(em, libvlc_MediaPlayerTimeChanged, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerEndReached, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerStopped, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerPlaying, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerPaused, vlcEvents, this);libvlc_media_player_set_hwnd(vlc_mediaPlayer, (void *)ui.widgetShow->winId());QTimer::singleShot(1000, this, &showWidget::slotPlay);
}void showWidget::slotPlay()
{libvlc_media_player_play(vlc_mediaPlayer);
}void showWidget::vlcEvents(const libvlc_event_t *ev, void *param)
{qint64 pos;switch (ev->type) {case libvlc_MediaPlayerTimeChanged:qDebug() << "VLC媒体播放器时间已更改";break;case libvlc_MediaPlayerEndReached:qDebug() << "VLC播放完毕.";break;case libvlc_MediaPlayerStopped:qDebug() << "VLC停止播放";break;case libvlc_MediaPlayerPlaying:qDebug() << "VLC开始播放";break;case libvlc_MediaPlayerPaused:qDebug() << "VLC暂停播放";break;}
}

编译好的程序,需要把plugins目录和动态库拷贝到运行目录,才能够运行。

这篇关于libVLC windows开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828060

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安