【Qt 学习之路】Qt+VLC简单的使用显示视频Demo

本文介绍如何利用VLC库在Qt中实现流畅的视频播放功能,包括创建libvlc实例、媒体对象与播放器对象,以及播放控制等步骤。

目录

1、效果

2、简述

3、流程

3.1、创建并初始化一个libvlc实例

3.2、根据给定的媒体对象创建一个播放器对象

3.3、解析媒体实例

3.4、根据事件解析器分析媒体各种事件及处理

3.5、设置给予媒体播放器媒体输出的win32/win64窗口句柄

3.6、获取媒体的状态

3.7、开始播放

3.8、检测媒体是否正在播放

3.9、正在播放的媒体暂停

3.10、正在播放的媒体停止

3.11、释放所有vlc对象

4、源码


1、效果

先看看效果:

2、简述

vlc播放视频,要比QMediaPlayer实用的多,并且同时运行20个视频时不会出现卡顿。

3、流程

vlc流程:

3.1、创建并初始化一个libvlc实例

LIBVLC_API libvlc_instance_t * libvlc_new( int argc , const char *const *argv );

3.2、根据给定的媒体对象创建一个播放器对象

LIBVLC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *p_md );

3.3、解析媒体实例

LIBVLC_API void libvlc_media_parse( libvlc_media_t *p_md );

3.4、根据事件解析器分析媒体各种事件及处理

//从发送事件的媒体播放器对象那里获取一个事件管理器
① LIBVLC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *p_mi );
//事件通知注册器
② LIBVLC_API int libvlc_event_attach( libvlc_event_manager_t *p_event_manager, libvlc_event_type_t i_event_type, libvlc_callback_t f_callback, void *user_data );

3.5、设置给予媒体播放器媒体输出的win32/win64窗口句柄

LIBVLC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable );
(注:用Qt的话,比如用QLabel,要用它的winID,并且强转成(void *)类型)

3.6、获取媒体的状态

LIBVLC_API libvlc_state_t libvlc_media_get_state(libvlc_media_t *p_md );

3.7、开始播放

LIBVLC_API int libvlc_media_player_play ( libvlc_media_player_t *p_mi );

3.8、检测媒体是否正在播放

(注:这里的返回值可以强转成bool类型方便一点)
LIBVLC_API int libvlc_media_player_is_playing ( libvlc_media_player_t *p_mi );

3.9、正在播放的媒体暂停

(暂停再点击播放可以继续)
LIBVLC_API void libvlc_media_player_set_pause ( libvlc_media_player_t *mp,  int do_pause );

3.10、正在播放的媒体停止

(停止再点击播放则重头播放)
LIBVLC_API void libvlc_media_player_stop ( libvlc_media_player_t *p_mi );

3.11、释放所有vlc对象

(注:在释放libvlc_media_player_t之前,记得先将视频停止,避免的不必要麻烦)
LIBVLC_API void libvlc_media_player_release( libvlc_media_player_t *p_mi );//释放libvlc_media_player_t
LIBVLC_API void libvlc_media_release( libvlc_media_t *p_md );//释放libvlc_media_t。
LIBVLC_API void libvlc_release( libvlc_instance_t *p_instance );//释放libvlc_instance_t。

4、源码分享

示例代码已经上传到csdn:

http://download.csdn.net/detail/u014597198/9850645

源码已经上传到Github:GitHub - ShaShiDiZhuanLan/Demo_VLC_Qt: Qt+VLC简单的使用显示视频示例,vlc播放视频,要比QMediaPlayer实用的多,并且同时运行20个视频时不会出现卡顿。

评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙振宇

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值