最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器

article/2025/10/1 19:17:59

=====================================================

最简单的基于libVLC的例子文章列表:

最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器

最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版)

最简单的基于libVLC的例子:最简单的基于libVLC的推流器

=====================================================

本文记录使用libVLC的开发的最简单的视频播放器示例。VLC Media Player是一款优秀的播放器,但是由于它的源代码编译的难度比较大,一直没有深入研究过它的开发方面的技术。此前触到了一些VLC开发方面的东西,因此总结了一下libVLC的开发示例程序。


如何获取VLC的SDK

VLC开发所需的库文件可以有2种获取方法:
1. 自行编译
2. 直接从安装目录里面拷贝出来


第一种方法难度要大一些。尤其是在Windows下编译VLC是个比较麻烦的事情。一般情况下可以选择第二种方法获取VLC开发所需的文件。
开发VLC所需的文件的位置:
1. 动态链接库*.dll:安装目录下的libvlc.dll,libvlccore.dll以及plugins目录下的所有文件。
PS:VLC支持非常多的plugin。因此plugins目录的体积确实是非常大的。
2. 静态链接库*.lib:安装目录/sdk/lib
3. 头文件*.h:安装目录/sdk/include

新建一个VC工程后,把上述三类文件分别拷贝至新工程目录下,并且配置它们的路径之后,就可以使用libVLC进行开发了。

最简单的基于libVLC的视频播放器

使用libVLC开发一个播放器十分的容易。最简单的基于libVLC的视频播放器的流程图如下图所示。


流程图中包含了3个结构体:
libvlc_instance_t:代表一个libVLC的实例。
libvlc_media_t:代表一个可以播放的媒体。
libvlc_media_player_t:代表一个VLC媒体播放器(一个视频播放器播放一个视频)。注意VLC并不仅仅用于媒体播放。
创建或者以上3个结构体通过以下6个函数:
libvlc_new():创建libvlc_instance_t。
libvlc_media_new_path():创建libvlc_media_t。
libvlc_media_player_new_from_media():创建libvlc_media_player_t。
libvlc_media_player_release():释放libvlc_media_player_t
libvlc_media_release():释放libvlc_media_t。
libvlc_release():释放libvlc_instance_t。
可以已通过下面的函数控制媒体的播放或者暂停,这些函数都需要使用libvlc_media_player_t作为参数。这里处于简化的目的,只使用了播放和停止函数:
libvlc_media_player_play():播放。
libvlc_media_player_pause():暂停。
libvlc_media_player_stop():停止。
除了上述3个函数之外,还包括libvlc_media_player_set_position()等函数,这里不再一一记录。

几点注意事项

libvlc_media_t的创建

创建libvlc_media_t有两种方法:libvlc_media_new_path()和libvlc_media_new_location()。简单描述一下这两个函数的区别:libvlc_media_new_location()用于打开协议,而libvlc_media_new_path()用于打开文件。因而传递给libvlc_media_new_path()的就是普通的文件路径(绝对路径例如D:\xxx.flv,或者相对路径例如xxx.flv),而传递给libvlc_media_new_location()的就是协议地址(例如“udp://….”,“http://”)。但是这里有一点需要注意,在VLC中“文件”也属于一种广义上的“协议”。因此使用libvlc_media_new_location()也可以打开文件,但是必须在文件路径前面加上“文件协议”的标记“file:///”。例如打开“F:\movie\cuc_ieschool.flv”下的视频,实际使用的代码如下所示。
libvlc_media_new_location (inst, "file:///F:\\movie\\cuc_ieschool.flv");
此外,VLC还支持很多“神奇”的协议,比如输入“screen://”协议就可以进行屏幕录制,代码如下。
libvlc_media_new_location (inst, "screen://");

把libVLC的弹出窗口嵌入到程序中

在这里我只实践过Windows下把libVLC的弹出窗口嵌入到程序中。将窗口或者控件的句柄传递给libvlc_media_player_set_hwnd()函数即可。
这里有一点需要注意,如果把libVLC弹出窗口嵌入到程序中的话,“全屏”功能就不能使用了。

关于libVLC加载的问题

在libVLC中可以通过libvlc_media_player_get_length(),libvlc_video_get_width(),libvlc_video_get_height()等函数获取到视频的时长,宽,高等信息。但是有一个很奇怪的现象:如果在调用完libvlc_media_player_play()之后立即调用上述3个函数的话,返回的值都是0,只有“等待”一段时间(例如调用sleep())后再调用上述函数,才能得到正确的数值。对于这种现象,我觉得可能是libVLC加载完成之后,才能通过上述几个函数获得正确的值(自己推测的,还没有深究)。

代码

/*** 最简单的基于libVLC的播放器* Simplest libVLC Player** 雷霄骅 Lei Xiaohua* leixiaohua1020@126.com* 中国传媒大学/数字电视技术* Communication University of China / Digital TV Technology* http://blog.csdn.net/leixiaohua1020** 本程序是一个最简单的基于libVLC的视频播放器。* 适合初学者学习libVLC。** This example is the simplest Video Player based on libVLC.* Suitable for the beginner of libVLC.*/
#include <Windows.h>
#include "vlc/vlc.h"int main(int argc, char* argv[]){libvlc_instance_t * inst;libvlc_media_player_t *mp;libvlc_media_t *m;libvlc_time_t length;int width;int height;int wait_time=5000;//libvlc_time_t length;/* Load the VLC engine */inst = libvlc_new (0, NULL);//Create a new item//Method 1://m = libvlc_media_new_location (inst, "file:///F:\\movie\\cuc_ieschool.flv");//Screen Capture//m = libvlc_media_new_location (inst, "screen://");//Method 2:m = libvlc_media_new_path (inst, "cuc_ieschool.flv");/* Create a media player playing environement */mp = libvlc_media_player_new_from_media (m);/* No need to keep the media now */libvlc_media_release (m);// play the media_playerlibvlc_media_player_play (mp);//wait until the tracks are created_sleep (wait_time);length = libvlc_media_player_get_length(mp);width = libvlc_video_get_width(mp);height = libvlc_video_get_height(mp);printf("Stream Duration: %ds\n",length/1000);printf("Resolution: %d x %d\n",width,height);//Let it play _sleep (length-wait_time); // Stop playinglibvlc_media_player_stop (mp);// Free the media_playerlibvlc_media_player_release (mp);libvlc_release (inst);return 0;}


运行结果

程序运行后,会弹出一个窗口播放“cuc_ieschool.flv”文件。


下载

Simplest libVLC Example


项目主页

SourceForge:https://sourceforge.net/projects/simplestlibvlcexample/

Github:https://github.com/leixiaohua1020/simplest_libvlc_example

开源中国:http://git.oschina.net/leixiaohua1020/simplest_libvlc_example


CDSN下载地址: http://download.csdn.net/detail/leixiaohua1020/8342413


本工程是包含了一些基于libVLC的示例程序。一共包含了如下几个子程序。
playerGUI: 最简单的基于libVLC的播放器-图形界面版。
simplest_libvlc_example: 最简单的基于libVLC的播放器。
simplest_libvlc_streamer: 最简单的基于libVLC的推流器。


http://chatgpt.dhexx.cn/article/pWUDCqeC.shtml

相关文章

用VLC开发视频播放器/组件(两种方式:libVLC / VLC-Qt)

测试环境 MSVC-2015Qt 5.14.2QCreator 1. libVLC&#xff08;关键步骤&#xff09; 参考&#xff1a;心流剑 libVLC 各版本 下载链接 我的下载版本为&#xff1a;3.0.11 sdk/lib文件夹目录 qmake vlc 部分的配置&#xff08;路径根据自己的修改&#xff09;只需要&#…

idea如何取消debug所有断点

1、debug模式下&#xff0c;在idea左下方找到【View Breakpoints】按钮或者直接按【CtrlShiftF8】快捷键&#xff0c;如下图&#xff1a; 2、在左侧窗口中&#xff0c;点击【Java Line Breakpoints】前方的全选框&#xff0c;如下图&#xff1a; 3、取消 【Java Line Breakp…

Idea断点for循环调试

前言 作为一个开发&#xff0c;最高兴和痛苦的事情就是排查问题&#xff0c;调试代码解决问题&#xff0c;掌握一些技巧可以提升效率&#xff0c;今天就讲讲for循环断点调试的技巧for循环断点调试 操作步骤&#xff1a; 1.在断点调试处加断点 2.点击断点处&#xff0c;鼠标右击…

IntelliJ IDEA-Debug断点调试 看这篇文章就够了

详解IntelliJ IDEA-Debug断点调试 如今&#xff0c;IntelliJ IDEA 目前深受广大开发者喜爱&#xff0c;我们在实际开发工作中&#xff0c;不管是用来阅读源码还是在开发过程中都需要进行代码调试。 以下为大家准备了一篇关于IntelliJ IDEA-Debug断点调试的文章&#xff0c;如…

IDEA 的基本介绍使用及断点调试

文章目录 1、IDE&#xff08;集成开发环境&#xff09;- IDEA2、IDE&#xff08;集成开发环境&#xff09;- Eclipse3、IDEA 的基本介绍和使用3.1、设置字体 和 颜色主题3.2、编译文件和源代码3.3、IDEA 常用快捷键3.4、模板/自定义模板 4、断点调试(debug)4.1、实际需求4.2、定…

idea debug调式进不了断点

问题&#xff1a; 在启动debug断点调试时&#xff0c;代码无法进入断点。 解决方案&#xff1a; 在网上搜索解决方案&#xff0c;看到说在settings——>Debugger下勾选如下位置即可。本人并未亲自测试&#xff0c;所以就做了一波搜集党。 我的解决方法&#xff1a;去掉如下…

idea断点调试jar包

本文以springbootdemo-0.0.1-SNAPSHOT.jar 为例&#xff0c;jar内容需与idea保持一致。 1、启动命令 常规jar启动&#xff1a;java -jar springbootdemo-0.0.1-SNAPSHOT.jar jar包断点调试启动&#xff1a;java -Xdebug -agentlib:jdwptransportdt_socket,servery,suspendn,ad…

如何在idea中打debug断点

在调试代码的时候&#xff0c;你的项目得debug模式启动&#xff0c;也就是点那个绿色的甲虫启动服务器&#xff0c;然后&#xff0c;就可以在代码里面断点调试啦。 下面不要在意&#xff0c;这个快捷键具体是啥&#xff0c;因为&#xff0c;这个keymap是可以自己配置的&#xf…

【IDEA 断点调试】

IDEA 断点调试 断点类型 行断点 【红色圆点】 点击左侧空白区域 、或 在行上ctrlF8 详细断点 【黄色圆点】 shift单击左侧空白区域&#xff0c;同时弹窗选择断点详细设置 方法断点 【红色菱形】 点击方法名所在左侧空白区域 。 进入方法后每一行都是挂起&#xff0c;打在接口…

IDEA debug 断点调试技巧

1、首先看下IDEA中Debug模式下的界面&#xff1a; ① 以Debug模式启动服务&#xff0c;左边的一个按钮则是以Run模式启动。在开发中&#xff0c;我一般会直接启动Debug模式&#xff0c;方便随时调试代码。 ② 断点&#xff1a;在左边行号栏单击左键&#xff0c;或者快捷键Ctrl…

IDEA 加断点debug时阻塞问题

今天有朋友提到一个问题&#xff0c;“我在springBoot项目中建一个Controller&#xff0c;然后写两个方法&#xff0c;方法1中加个断点&#xff0c;然后请求方法1&#xff0c;进入断点之后再请求方法二&#xff0c;此时方法二会一直等待&#xff0c;等方法一执行完才能再执行方…

Idea 进行断点调试的 快捷键

快捷键 功能描述 F8 单步调试&#xff0c;不进入函数内部 F7 单步调试&#xff0c;进入函数内部 ShiftF7 选择要进入的函数 ShiftF8 跳出函数 AltF9 运行到断点 AltF8 执行表达式查看结果 F9 继续执行&#xff0c;进入下一个断点或执行完程序 CtrlF8 设置/取消当前行断…

IDEA中断点调试

调试在开发中大量应用&#xff1a; 【1】Debug的优化设置&#xff1a;更加节省内存空间&#xff1a; 设置Debug连接方式&#xff0c;默认是Socket。 Shared memory是Windows 特有的一个属性&#xff0c;一般在Windows系统下建议使用此设置&#xff0c; 内存占用相对较少。 【…

idea debug无法打断点 以及解决办法

idea debug无法打断点 以及解决办法 今天工作中调试代码时候遇见一个问题 一行很普通的 map.put()代码 无法 进行断点调试 效果如图 出现这种情况大概有两种可能&#xff0c;一种是断点打在了错误的地方&#xff0c;程序进不到这里&#xff1b;第二种是有可能需要重新编译。…

IDEA的Debug断点调试

首先说一下我的IDEA的版本是windows Intelli IDEA2021.1.2 Debug 先打开IDEA中的Debug&#xff0c; 任意点击一个Debug的图标就可以打开下方的窗口 1.Debug模式启动服务&#xff0c;左边的一个按钮则是以Run模式启动。 2.断点&#xff1a;在左边行号栏单击左键即可建立一个断…

Intellij IDEA debug断点调试技巧总结

版本 IDEA 2019.3 主题&#xff1a;material dark。 操作系统&#xff1a;Mac OS command 对应 ctrloption 对于 alt 为项目配置了运行配置后&#xff0c;可以通过按 ShiftF9 在调试模式下启动它。 在 “调试工具” 窗口中&#xff0c;您可以看到框架和线程的状态、变量和表…

关于idea的八种断点调试

背景&#xff1a;在日常开发中&#xff0c;我们经常会使用到idea&#xff0c;那么debug就更不用说了&#xff0c;但是你真的会打断点么&#xff0c;看完这篇文章再下结论吧 &#xff08;ps&#xff0c;部分图片因为公司做过内部分享&#xff0c;所以打码&#xff09; 一&#…

idea 断点调试,点击Run to Cursor后,不进入断点

idea 断点调试,点击Run to Cursor后,不进入断点 解决方法: 点击run to cursor 后,第二次不进入断点了,此时点击右侧窗口的 pause ,暂停程序 点击 Resume Program,恢复程序,即可重新进断点

Java断点调试 idea断点调试 debug教程

IDEA断点调试 Java程序断点调试 文章目录 IDEA断点调试 Java程序断点调试前言一、什么情况下需要debug二、使用idea如何进行debug三、假设案例分别进行debug教程1.案例一&#xff1a;查看运行时对象的值2.案例二&#xff1a;程序异常查看原因 总结解释 前言 前面写过一篇关于如…

初学者必备:IDEA中的debug断点调试技巧大全与断点常用技巧

IDEA中的debug断点调试技巧 1.如何打断点与取消断点 点击红箭头的位置一下打断点 两下取消 2.运行断点 3.进入断点 1.横排按钮 1.回到当前断点所在界面 2.根据当前断点逐行向下执行–不会进入方法 3.根据当前断点逐行向下执行会进入方法里面 --但是只能进入我们自己写的方法…